C# 使用快速CsvReader读取CSV文件,字段周围不带引号

C# 使用快速CsvReader读取CSV文件,字段周围不带引号,c#,parsing,csv,lumenworks,C#,Parsing,Csv,Lumenworks,我在使用时遇到一些问题。使用代码: using (CsvReader csv = new CsvReader(new StreamReader(Server.MapPath(fileName)), true)) { csv.ParseError += csv_ParseError; while (csv.ReadNextRecord()) { var importItem = new ProductImportItem(csv);

我在使用时遇到一些问题。使用代码:

using (CsvReader csv = new CsvReader(new StreamReader(Server.MapPath(fileName)), true))
{
     csv.ParseError += csv_ParseError;

     while (csv.ReadNextRecord())
     {
          var importItem = new ProductImportItem(csv);
          if (!ProductsDALC.SearchByPartProductCode(importItem.ProductCode).Any())
          {
              if (!SaveProduct(importItem))
              {
                  this.ParseErrors.Add(string.Format("Failed to add product-{0}", importItem.ProductCode));
              }
          }
     }
}
当使用字段/列值两侧的双引号格式化CSV文件时,代码工作正常,例如:

“产品代码”、“产品名称”、“项目说明”、“sku”、“所需邮资级别”、“成本价”、“零售价、增值税”

但是,如果列如下所示:

产品代码、产品名称、项目描述、sku、所需邮资级别、成本价、零售价、增值税

然后,代码的行为就好像没有数据一样,也就是说,它不会进入
,而
循环,在调试器中枚举结果集将表明它不会产生任何结果

如果我对数据输入/输出有绝对控制权,这将很好。但是,我所能做的就是为用户提供一个包含字段的模板,并希望它们将数据用引号括起来。这不是一个可接受的方法

有没有一种方法可以让读者解析数据,即使数据没有用引号括起来


我知道.Net中内置的类可以处理这一问题,但由于我们在项目的其他地方使用了
CsvReader
,因此最好保持一致。

您必须使用以下命令提供构造函数中未引用字段的信息:

Char quotingCharacter = '\0';  // means none
Char escapeCharacter  = '\0';
Char commentCharacter = '\0';
Char delimiter = ',';
bool hasHeader = true;
using (var csv = new CsvReader(reader, hasHeader, delimiter, quotingCharacter, escapeCharacter, commentCharacter, ValueTrimmingOptions.All))
{
    // ...
}