我有以下代码段来读取 csv 文件。我在阅读并非真正标准的行时遇到问题。例如像这样的一行
105,"XXX Bank Azerbaijan" CJSC,1078 ,AZ,Baku,"xxx street",Nasimi district
进入捕获字段,因为第二个字段“XXX Bank Azerbaijan”CJSC 的引号不在逗号旁边。但是,当我在 Excel 中打开此文件时,它没有任何问题,并将字段正确分隔为:
105|XXX Bank Azerbaijan CJSC|1078|AZ|Baku|xxx street|Nasimi district
我用作|
列分隔符的地方。有没有办法使用 具有相同的效果TextFieldParser
,否则我将需要使用不同的 csv 阅读器。
using (TextFieldParser parser = new TextFieldParser(fileName, Encoding.GetEncoding("windows-1252")))
{
parser.TextFieldType = FieldType.Delimited;
parser.SetDelimiters(",");
parser.TrimWhiteSpace = true;
parser.HasFieldsEnclosedInQuotes = true;
parser.ReadLine(); // Reads dummy header
while (!parser.EndOfData)
{
try
{
string[] fieldRow = parser.ReadFields();
T fieldsClass = new T();
fieldsClass.Initialize(fieldRow);
data.Add(fieldsClass);
rowCount++;
}
catch
{
Console.WriteLine("Skipping line" + parser.ErrorLine);
}
}
}