阅读时如何忽略CSV中的空行 [英] How to ignore empty rows in CSV when reading

查看:383
本文介绍了阅读时如何忽略CSV中的空行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

尝试使用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'

我已经阅读了文档( https://joshclose.github .io/CsvHelper/api/CsvHelper.Configuration/Configuration/),并尝试将配置对象设置为IgnoreBlankLines = true,但这没有用.

I have gone through the documentation (https://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中的空行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆