0

我有一个需要在 c# 中读取的数据文件(csv),但是不同的库

  • CSVHelper
  • LumenWorksCsvReader

无法做到这一点。

前任。使用 LumenWorksCsvReader

using (CsvReader csv = new CsvReader(new StreamReader(path), true))
        {
            int fieldCount = csv.FieldCount;

            string[] headers = csv.GetFieldHeaders();
            while (csv.ReadNextRecord())
            {
                for (int i = 0; i < fieldCount; i++)
                    Console.Write(string.Format("{0} = {1};",
                                  headers[i], csv[i]));
                Console.WriteLine();
            }
        }

上面的代码在读取第二行的 Deivce 单元格时中断。 在此处输入图像描述

我的数据看起来像

InvoiceDate,Device
2022/07/16,"i5-10210U 1,6GHz 2x8GB W10P64;14\" 256GB SSD, Einbau"

如您所见,数据是完美的,但是在 C# 中读取时,一切都无法适应这种类型的数据情况

4

1 回答 1

0

正如评论中所指出的,问题出\"在设备字符串中。

您需要像这样在实例中指定escape参数。CsvReader

using (CsvReader csv = new CsvReader(new StreamReader(filePath), true, escape: '\\'))
{
   int fieldCount = csv.FieldCount;

   string[] headers = csv.GetFieldHeaders();
   while (csv.ReadNextRecord())
   {
      for (int i = 0; i < fieldCount; i++)
      Console.Write(string.Format("{0} = {1};", headers[i], csv[i]));
      Console.WriteLine();
   }
}
于 2021-10-28T13:36:58.207 回答