Обработка котировок с помощью FileHelpers
Я использую отличную библиотеку FileHelpers для импорта многих файлов csv, но сталкиваюсь с проблемой. У меня есть файл csv с этими тремя примерными строками
id,text,number
120,"good line this one",789
121,""not good" line", 4456
122,,5446
и этот (пример) класс
[IgnoreFirst(1)]
[IgnoreEmptyLines()]
[DelimitedRecord(",")]
public sealed class JOURNAL
{
public Int32 ID;
[FieldQuoted('"', QuoteMode.AlwaysQuoted, MultilineMode.NotAllow)]
public string TEXT;
public Int32? NUMBER;
}
Проблема с QuoteMode.AlwaysQuoted
заключается в том, что ID 122 завершится с ошибкой:
Поле "ТЕКСТ" не начинается с QuotedChar в строке 3. Вы можете использовать FieldQuoted (QuoteMode.OptionalForRead) для предоставления необязательного поля с кавычками
Переход на QuoteMode.OptionalForRead
завершится с ошибкой для id 121:
Поле TEXT цитируется, но цитируется char: "не только перед разделитель (вы можете использовать [FieldTrim] для избегайте этой ошибки)
Итак, как я могу обрабатывать csv, который имеет пустые поля без кавычек И цитируемые текстовые поля с дополнительными кавычками в тексте?
Ответы
Ответ 1
Это похоже на случай, который мы не поддерживаем, позвольте мне добавить тестовый пример и заставить его работать в обоих режимах, для первого мы должны проверить правильность семантики, т.е. если QuoteMode.AlwaysQuoted может разрешить, или должно быть, "", но второй вариант должен работать:)
Приветствия