当 CSVHelper 抛出错误数据时,如何判断文件哪里有问题?
How to tell where the file had an issue when CSVHelper throws with bad data?
我确信我的部分文件存在一些问题,csvHelper 正在抛出 BadDataFound。
但是我怎么知道问题出在哪里呢?使用一些在线 csv 解析器似乎可以很好地解析我的文件。
下面是我如何使用 csvParser
public ICollection<FileRecord> FromCsv(string csv)
{
var csvWithHeader = CrowdinFileRecord.Scheme + Environment.NewLine + csv;
using (var stream = new MemoryStream())
using (var reader = new StreamReader(stream))
using (var writer = new StreamWriter(stream))
using (var csvReader = new CsvReader(reader))
{
csvReader.Configuration.HasHeaderRecord = true;
csvReader.Configuration.RegisterClassMap<FileRecordMap>();
writer.Write(csvWithHeader);
writer.Flush();
stream.Position = 0;
return csvReader.GetRecords<FileRecord>().ToList();
}
}
这至少可以让您更好地了解问题出在哪里。
try
{
return csvReader.GetRecords<FileRecord>().ToList();
}
catch (BadDataException ex)
{
throw new Exception($"BadDataException at RawRow: {ex.ReadingContext.RawRow}, RawRecord: {ex.ReadingContext.RawRecord}", ex);
}
我确信我的部分文件存在一些问题,csvHelper 正在抛出 BadDataFound。
但是我怎么知道问题出在哪里呢?使用一些在线 csv 解析器似乎可以很好地解析我的文件。
下面是我如何使用 csvParser
public ICollection<FileRecord> FromCsv(string csv)
{
var csvWithHeader = CrowdinFileRecord.Scheme + Environment.NewLine + csv;
using (var stream = new MemoryStream())
using (var reader = new StreamReader(stream))
using (var writer = new StreamWriter(stream))
using (var csvReader = new CsvReader(reader))
{
csvReader.Configuration.HasHeaderRecord = true;
csvReader.Configuration.RegisterClassMap<FileRecordMap>();
writer.Write(csvWithHeader);
writer.Flush();
stream.Position = 0;
return csvReader.GetRecords<FileRecord>().ToList();
}
}
这至少可以让您更好地了解问题出在哪里。
try
{
return csvReader.GetRecords<FileRecord>().ToList();
}
catch (BadDataException ex)
{
throw new Exception($"BadDataException at RawRow: {ex.ReadingContext.RawRow}, RawRecord: {ex.ReadingContext.RawRecord}", ex);
}