CSVHelper 跳过 header 之前的记录
CSVHelper to skip record before header
我的文件中有以下格式的数据。
HEADER|ReportItem Name: Margin Ri.....
Account Id/Margin Id|Account Name|Ba...... // the row with headers
Data row 1
Data row 2
TRAILER|Record Count: 2
这是一个错误 - 我相信在实际的 reader 行之前有一行。
using (var textReader = File.OpenText(path))
{
var csv = new CsvReader(textReader);
csv.Configuration.RegisterClassMap<GsClassMap>();
csv.Configuration.TrimOptions = TrimOptions.Trim;
csv.Configuration.MissingFieldFound = null;
csv.Configuration.Delimiter = "|";
csv.Configuration.HasHeaderRecord = true;
csv.Configuration.ShouldSkipRecord = (x) => x[0].StartsWith("HEADER");
csv.Configuration.ShouldSkipRecord = (x) => x[0].StartsWith("TRAILER");
return csv.GetRecords<GsSma>().ToList();
}
这是一个错误 - 我相信在实际的 reader 行之前有一行。
Header matching ['Account Id/Margin Id'] names at index 0 was not found.
如何设置才能正确读取文件?
第二次设置 ShouldSkipRecord
时,您将覆盖第一个实例。您只需要改为执行此操作即可。
csv.Configuration.ShouldSkipRecord = row => row[0].StartsWith("HEADER") || row[0].StartsWith("TRAILER");
我的文件中有以下格式的数据。
HEADER|ReportItem Name: Margin Ri.....
Account Id/Margin Id|Account Name|Ba...... // the row with headers
Data row 1
Data row 2
TRAILER|Record Count: 2
这是一个错误 - 我相信在实际的 reader 行之前有一行。
using (var textReader = File.OpenText(path))
{
var csv = new CsvReader(textReader);
csv.Configuration.RegisterClassMap<GsClassMap>();
csv.Configuration.TrimOptions = TrimOptions.Trim;
csv.Configuration.MissingFieldFound = null;
csv.Configuration.Delimiter = "|";
csv.Configuration.HasHeaderRecord = true;
csv.Configuration.ShouldSkipRecord = (x) => x[0].StartsWith("HEADER");
csv.Configuration.ShouldSkipRecord = (x) => x[0].StartsWith("TRAILER");
return csv.GetRecords<GsSma>().ToList();
}
这是一个错误 - 我相信在实际的 reader 行之前有一行。
Header matching ['Account Id/Margin Id'] names at index 0 was not found.
如何设置才能正确读取文件?
第二次设置 ShouldSkipRecord
时,您将覆盖第一个实例。您只需要改为执行此操作即可。
csv.Configuration.ShouldSkipRecord = row => row[0].StartsWith("HEADER") || row[0].StartsWith("TRAILER");