[英]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.