好的,所以我是这个图书馆的新手(https://joshclose.github.io/CsvHelper/),但到目前为止,我还没有遇到任何问题。我从经销商那里获得了一些有关价格和库存的CSV文件,我想将此信息解析为类项目列表,以便我可以进行操作,然后保存所有内容的主副本。
我已经将其用于库存CSV表,但是由于某种原因,它只是不想使用该产品表。
这是错误
Header with name 'VariantInventory' was not found. If you are expecting some headers to be missing and want to ignore this validation, set the configuration HeaderValidated to null. You can also change the functionality to do something else, like logging the issue.'
这是CSV标头项目
https://pastebin.com/W88cWqiS
我删除了空格和其他可能引起解析问题的问题。 这是我的CSV标头产品类
https://pastebin.com/2tk0EEgx
这是我也尝试过的映射类
https://pastebin.com/6Di4zh3x
我已经尝试过像这样简单
List<ShopifyProduct> prods = new List<ShopifyProduct>();
using (var reader = new StreamReader(ShopifyProducts))
using (var csv = new CsvReader(reader))
{
var records = csv.GetRecords<ShopifyProduct>();
foreach (var item in records) // Issue about missing header kicks off here
{
prods.Add(item);
}
}
我还尝试使用带有此代码的映射方法进行解析
using (var reader = new StreamReader(ShopifyProducts))
using (var csv = new CsvReader(reader))
{
csv.Configuration.IgnoreBlankLines = false;
csv.Configuration.MissingFieldFound = MissingFieldFound;
csv.Configuration.RegisterClassMap<ShopifyProdMap>();
var fooRecords = new List<ShopifyProduct>();
var isHeader = true;
while (csv.Read())
{
if (isHeader)
{
csv.ReadHeader();
isHeader = false;
continue;
}
if (string.IsNullOrEmpty(csv.GetField(0)))
{
isHeader = true;
continue;
}
fooRecords.Add(csv.GetRecord<ShopifyProduct>());
}
尝试第一条记录时,它再次告诉我“ VariantInventory”丢失了,但显然没有丢失。我不确定我在做什么,我需要更改什么,或者我应该如何正确地将CSV解析为产品类的可用c#列表,但是如果有人可以说出一些很棒的信息, / p>
这时我有点迷茫,需要尽快完成。
答案 0 :(得分:0)
正如John Wu在评论中指出的那样,VariantInventory不在我完全忽略的CSV标头中。