尝试使用CsvHelper.GetRecords<T>()读取具有空行(通常在末尾)的CSV文件.
Trying to read a CSV file that has empty rows (usually at the end) using CsvHelper.GetRecords<T>().
在没有空行的情况下,这种方法很有效.但是,如果CSV文件的行为空(定义为,,,,,),则会抛出TypeConverterException
Without the empty rows this works a treat. However if the CSV file has an empty row (defined as , , , , , ) then it throws a TypeConverterException
Text: '' MemberType: IntelligentEditing.PerfectIt.Core.DataTypes.Styles.StyleRuleType TypeConverter: 'CsvHelper.TypeConversion.EnumConverter'我已经阅读了文档( joshclose.github .io/CsvHelper/api/CsvHelper.Configuration/Configuration/),并尝试将配置对象设置为IgnoreBlankLines = true,但这没有用.
I have gone through the documentation (joshclose.github.io/CsvHelper/api/CsvHelper.Configuration/Configuration/) and have tried setting up the configuration object to IgnoreBlankLines = true however this has not worked.
简化为示例:
public enum ItemTypeEnum { Unknown = 0, Accounts = 1, HR = 2, } public class CsvItemDto { public int Id { get; set; } public string Value { get; set; } public ItemTypeEnum ItemType { get; set; } } . . . var configuration = new Configuration() { HasHeaderRecord = true, HeaderValidated = null, MissingFieldFound = null, IgnoreBlankLines = true, }; var csv = new CsvReader(textReader, configuration); var rows = csv.GetRecords<CsvItemDto>(); if (rows != null) { var items = rows.ToList(); //Throws exception here }CSV通常包含以下内容:
The CSV would usually contain something like this:
Id,Value,ItemType 1,This,Unknown 2,That,Accounts 3,Other,HR ,, ,,我希望IgnoreBlankLines忽略CSV中的空白行,但事实并非如此.有什么想法吗?
I expected the IgnoreBlankLines to ignore the blank rows in the CSV but it is not. Any ideas?
推荐答案您可以尝试在Configuration上实现ShouldSkipRecord以选择是否跳过
you can try to implement ShouldSkipRecord on Configuration to choose skip or not
var configuration = new Configuration () { HasHeaderRecord = true, HeaderValidated = null, MissingFieldFound = null, IgnoreBlankLines = true, ShouldSkipRecord = (records) => { // Implement logic here return false; } };更多推荐
阅读时如何忽略CSV中的空行
发布评论