我正在尝试使用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/
所示答案 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; }
}