我如何找出哪些列具有无效值
How do I find out, which columns has invalid value
我正在使用 CsvHelper 来解析 CSV 文件,包括类型转换,例如到日期时间。
当单元格值的格式无效时,我得到
while (CsvReader.Read())
{
var record = CsvReader.GetRecord<TModel>();
csvReader.GetRecord<MyModel>(); //throws following exception:
// CsvHelper.ReaderException: 'An unexpected error occurred.'
// Inner Exception
//
// FormatException: The string 'a' was not recognized as a valid DateTime. There is an unknown word starting at index '0'.
如何找到无法解析的单元格的 HeaderName 或 MyModel 的 属性。
您应该添加一个尝试,在您的 catch 中您可以使用
获取行和索引
int index = csvReader.Context.CurrentIndex; // zero based
int row = csvReader.Context.Row; // 1 based
然后你可以使用headers记录
获取你的字段
csvReader.Context.HeaderRecord[index]
加起来不行,这是我的做法
catch (ReaderException e)
{
string notification = $"The field { e.ReadingContext.HeaderRecord[e.ReadingContext.CurrentIndex] } has the invalid value { e.ReadingContext.Record[e.ReadingContext.CurrentIndex] }";
}
我正在使用 CsvHelper 来解析 CSV 文件,包括类型转换,例如到日期时间。
当单元格值的格式无效时,我得到
while (CsvReader.Read())
{
var record = CsvReader.GetRecord<TModel>();
csvReader.GetRecord<MyModel>(); //throws following exception:
// CsvHelper.ReaderException: 'An unexpected error occurred.'
// Inner Exception
//
// FormatException: The string 'a' was not recognized as a valid DateTime. There is an unknown word starting at index '0'.
如何找到无法解析的单元格的 HeaderName 或 MyModel 的 属性。
您应该添加一个尝试,在您的 catch 中您可以使用
获取行和索引int index = csvReader.Context.CurrentIndex; // zero based
int row = csvReader.Context.Row; // 1 based
然后你可以使用headers记录
获取你的字段csvReader.Context.HeaderRecord[index]
加起来不行,这是我的做法
catch (ReaderException e)
{
string notification = $"The field { e.ReadingContext.HeaderRecord[e.ReadingContext.CurrentIndex] } has the invalid value { e.ReadingContext.Record[e.ReadingContext.CurrentIndex] }";
}