Trying to read a CSV file that has empty rows (usually at the end) using CsvHelper.GetRecords<T>()
.
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'
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.
Simplified for an example:
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
}
The CSV would usually contain something like this:
Id,Value,ItemType
1,This,Unknown
2,That,Accounts
3,Other,HR
,,
,,
I expected the IgnoreBlankLines
to ignore the blank rows in the CSV but it is not. Any ideas?
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;
}
};