我在使用Lumenworks Fast CsvReader时遇到了一些问题。使用代码:当CSV文件使用双引号或者领域的侧格式化使用Fast CsvReader读取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));
}
}
}
}
的代码工作正常/列的值,例如:
“PRODUCT_CODE”,“PRODUCT_NAME”,“ITEM_DESCRIPTION ”, “SKU”, “postage_level_required”, “cost_price”, “retail_price_inc_vat”
但是,如果列是这样的:
PRODUCT_CODE,PRODUCT_NAME,ITEM_DESCRIPTION,SKU,postage_level_required,cost_price,retail_price_inc_vat
然后代码行为就像没有数据,也就是说,它不会进入while
环和枚举结果在调试器中设置将显示它不会产生任何结果。
如果我对输入/输出数据有绝对的控制权,这将会很好。但是,我所能做的就是为用户提供一个包含字段的模板,并希望它们将数据包装在引号中。这不是一个可接受的方法。
有没有办法让读者解析数据,即使它没有用引号包裹?
我知道内置于.Net中的TextFieldParser类可以处理这个问题,但由于我们在项目中的其他地方使用了CsvReader
,所以保持一致会很好。
这完美的作品,谢谢。 – DGibbs 2014-11-25 10:27:47