簡體   English   中英

如何使用 CsvHelper 庫讀取沒有引用的 csv 文件?

[英]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 庫來實現這一點? 感謝您的任何回答。

您可能必須使用 Read() 並遍歷行,如本期所述, 本評論中的示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM