Мне нужно прочитать содержимое файла csv с помощью библиотеки CsvHelper. Вот мой метод, отвечающий за чтение файла:
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 выглядит так:
... "06/08/2020"; "ABCD"; " 1234 "...
Проблема в том, что некоторые файлы, импортированные в мой api, не содержат кавычек. Примерная строка, показанная ниже:
... 08.06.2020; ABCD; 1234 ...
Когда такой файл попадает в мое приложение, возникает исключение при попытке получить записи из файла. Цитированные файлы обрабатываются правильно. Исключение содержит следующее сообщение:
«Для типа '...' элементы не отображаются»
Конечно, столбцы, указанные в заголовке, соответствуют определению ShipmentData. Единственная проблема, которую я заметил, - это отсутствие кавычек вокруг ячеек. Я хотел бы переписать свой метод, чтобы иметь возможность получать записи из обоих типов csv. Как этого добиться с помощью библиотеки CsvHelper ?? Спасибо за любые ответы.