Я использую FileHelpers 3.3 с VB .net. Некоторое время я пытался найти ответ, но вся информация, которую я нашел, касалась поведения, которого я не испытываю. Поэтому я начинаю подозревать ошибку в FileHelpers.
У меня очень простой CSV:
Description,Transaction Date,Transaction Time
01567,"Sep 1, 2018",12:47:32 AM PDT
01567,"Sep 1, 2018",12:47:32 AM PDT
81475,"Sep 1, 2018",12:52:18 AM PDT
Итак, я объявил класс в VB для хранения этих данных:
<DelimitedRecord(","), IgnoreFirst(1)>
Public Class Sale
Public Property description() As String
<FieldQuoted(QuoteMode.AlwaysQuoted)>
Public Property transactionDate() As String
Public Property transactionTime() As String
End Class
Когда я читаю файл с:
Dim engine As FileHelperEngine(Of Sale) = New FileHelperEngine(Of Sale)
Dim records = engine.ReadFile("D:\Projects\test.txt")
Я получаю следующую ошибку:
FileHelpers.BadUsageException: 'Строка: 2 Столбец: 32. Разделитель', 'найден после последнего поля' _transactionTime '(файл неправильный или вам нужно добавить поле в класс записи)'
Это вызвано запятой внутри второго поля. Если я удалю запятую, все работает нормально. Но даже если я удалю запятую, строка транзакции все равно будет заключена в кавычки.
Из того, что я прочитал на форумах, FieldQuoted должно:
- правильно обрабатывать запятую в указанном поле
- удалить кавычки в обработанной строке
Но это не работает. Похоже, что инструкция FieldQuoted просто игнорируется. Я мог бы попытаться обработать эти случаи с помощью события BeforeReadRecord, но я думал, что FieldQuoted был создан именно для обработки этого варианта использования. Подскажите, пожалуйста, пропустил ли я что-то очевидное?
Большое спасибо!