[英]How to read no quoted csv file using CsvHelper library?
我需要使用 CsvHelper 库读取 csv 文件内容。 这是我负责读取文件的方法:
public virtual async Task<ICollection<Shipment>> GetMaterialReleaseReceiptsAsync(string filePath)
{
var validShipmentData = new List<Shipment>();
try
{
using var reader = new StreamReader(filePath);
using var csvReader = new CsvReader(reader, CultureInfo.InvariantCulture);
csvReader.Configuration.Delimiter = ";";
csvReader.Configuration.HeaderValidated = null;
csvReader.Configuration.MissingFieldFound = null;
var shipment = await csvReader
.GetRecordsAsync<ShipmentData>()
.Select(s => new Shipment
{
Issue = s.Issue,
MaterialReleaseReceipt = s.MaterialReleaseReceipt,
FileLocation = filePath
})
.ToListAsync();
validShipmentData = SortOutShipmentData(shipment, filePath)
.ToList();
}
catch (Exception e)
{
var errorMessage = e.InnerException != null
? $"{e.Message} {e.InnerException.Message}"
: e.Message;
await EventBus
.PublishAsync(new FileProcessExceptionEvent
{
Description = errorMessage,
CreatedAt = DateTime.Now,
FileLocation = filePath
});
}
return validShipmentData;
}
我的 csv 文件的示例行如下所示:
...“2020 年 6 月 8 日”;“ABCD”;“1234”...
问题是,导入到我的 api 的某些文件不包含引号。 示例行如下所示:
... 2020 年 6 月 8 日;ABCD;1234...
当这样的文件进入我的应用程序时,会抛出异常,同时尝试从文件中获取记录。 引用的文件得到正确处理。 异常包含以下消息:
“没有为类型'...'映射任何成员”
当然,header 中指定的列符合 ShipmentData 定义。 我注意到的唯一问题是单元格周围缺少引号。 我想重写我的方法,以便能够从两种类型的 csv 中获取记录。 如何使用 CsvHelper 库来实现这一点? 感谢您的任何回答。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.