CSV助手说该项目不存在

时间:2018-08-22 21:37:48

标签: c# csvhelper

我正在尝试使用csv帮助程序库来解析我的csv。但是我遇到一个问题,它说项目代码在文件中时不存在。

    // Adding stock item code 
Sage.Accounting.Stock.StockItem stockItem = new Sage.Accounting.Stock.StockItem();

string line = null;
public void ImportCsv(string filename)
{
         TextReader reader = File.OpenText(filename);



    var csv = new CsvReader(reader);
        csv.Configuration.HasHeaderRecord = true;
        csv.Read();
        // Dynamic
      // Using anonymous type for the class definition
        var anonymousTypeDefinition = new
        {
            Itemcode = string.Empty,
            Barcode = string.Empty 
        };
        var records = csv.GetRecords(anonymousTypeDefinition);


 }

这是csv结构

“商品代码”,“条形码”,“说明”

“ P4S100001”,“ 303300054486”,“测试产品”

这是我第一次使用csvhelper,如https://joshclose.github.io/CsvHelper/

所示

3 个答案:

答案 0 :(得分:0)

您的GetRecords函数需要一个类型说明符,如下所示:

var records = csv.GetRecords<type>();

另外,您可能需要根据需要将csv.Read()放入while循环中。

答案 1 :(得分:0)

由于所有值都带有引号,因此需要在配置中指定它。在csvHelper中使用引号令人沮丧。如果值不是全部(如果有引号的话),那么也有一些方法可以解决这个问题,但不如

 var csv = new CsvReader(reader,new CsvHelper.Configuration.Configuration
            {
                HasHeaderRecord = true,
                QuoteAllFields = true
            });


            var anonymousTypeDefinition = new
            {
                Itemcode = string.Empty,
                Barcode = string.Empty
            };
            var records = csv.GetRecords(anonymousTypeDefinition);

答案 2 :(得分:0)

最好创建一个强类型模型来保存数据(如果尚不存在)

findById

并使用GetRecords<T>()按类型读取记录

public class Item {
    public string Itemcode { get; set; }
    public string Barcode { get; set; }
    public string description { get; set; }
}