我需要导入可能没有标题记录的CSV文件。
如果我读取的文件没有标题行,则假定第一个数据行是标题,并且不返回它。 如果我指定HasHeaderRecord = false,则在有标头记录时将引发异常。
是否可以使用CsvHelper库并具有可选的标头记录?
我可以使用这种方法来使其工作,但似乎有更好的方法:
csvReader.Configuration.HasHeaderRecord = false;
while (csvReader.Read())
{
try
{
var record = csvReader.GetRecord<MyModel>();
myRecordList.Add(record);
}
catch (ReaderException rex)
{
// Check if this is an error with no header record and ignore
if (rex.ReadingContext.CurrentIndex == 1 &&
rex.ReadingContext.RawRecord.ToLower().Contains("myHeaderColumnName"))
{
continue;
}
}
}
答案 0 :(得分:2)
我不确定这是否是最好的方法,但是它确实绕过了引发异常的过程。
Array
(
[user11] => 15
[user7] => 15
[user4] => 30
[user19] => 36
[user10] => 39
)
答案 1 :(得分:1)
我认为csvReader没有内置的方法可以知道。有两种方法可以知道:
我认为信息应该由用户提供,或者文件的来源应符合始终提供标题行或从不提供标题行的标准。