我正在try 用C#读取CSV文件.
我已经try 了File.ReadAllLines(path).Select(a => a.Split(';'))
种方式,但问题是当一个单元格中有\n
条多行时,它不起作用.
所以我在下面try 了一下
using LumenWorks.Framework.IO.Csv;
var csvTable = new DataTable();
using (TextReader fileReader = File.OpenText(path))
using (var csvReader = new CsvReader(fileReader, false))
{
csvTable.Load(csvReader);
}
for (int i = 0; i < csvTable.Rows.Count; i++)
{
if (!(csvTable.Rows[i][0] is DBNull))
{
var row1= csvTable.Rows[i][0];
}
if (!(csvTable.Rows[i][1] is DBNull))
{
var row2= csvTable.Rows[i][1];
}
}
问题是上面的代码抛出的异常为
The CSV appears to be corrupt near record '0' field '5 at position '63'
个
这是因为CSV的标题有两个双引号,如下所示
"Header1",""Header2""
有没有办法可以忽略双引号并处理CSV.
update
个
我已经试了TextFieldParser
次,如下所示
public static void GetCSVData()
{
using (var parser = new TextFieldParser(path))
{
parser.HasFieldsEnclosedInQuotes = false;
parser.Delimiters = new[] { "," };
while (parser.PeekChars(1) != null)
{
string[] fields = parser.ReadFields();
foreach (var field in fields)
{
Console.Write(field + " ");
}
Console.WriteLine(Environment.NewLine);
}
}
}
如有任何帮助,我们不胜感激.