2015-02-03 11 views
0

Я пытаюсь обработать файл LLarge CSV - 1Gb, где иногда я могу получить записи, в которых значение столбца имеет значение «,».Использование File-Helper для обработки дополнительной запятой в записи CSV-анализатор

например.

"А", "col1", "col2", "col3", "COL4"

"Б", "Стр1", "Row1Col2", "Row1Col3", "Row1Col4"

"C", "Стр2", "Стр2, Col2", "Стр2, Col3", "Row2Col4"

Первоначально я использовал Split(,) но для линии CI я получаю неверные данные из-за дополнительной запятой значение столбца.

Я решил использовать FileHelpers, но он, кажется, не извлекает значения правильно.

Когда я открывал файл в Excel, он форматирует его правильно (т. Е. Отображает каждое значение в правильном столбце).

Я хочу извлечь все значения в двойные кавычки.

+0

Это не имеет смысла. Является ли разделитель столбца запятой «,»? Итак, как Excel может разделить вашу третью строку, отличную от запятых? Вы показывали нам все символы '' ' – DrKoch

+0

Я не вижу никакой дополнительной запятой ... –

+0

Я не понимаю, как вы можете получать правильные значения в Excel. Я взял ваши три строки, создал файл с именем test .csv, открыл его в Excel и получил пять столбцов для строк A и B и семь столбцов для строки C. Этого можно ожидать. Как программное обеспечение может определить, является ли столбец разделителем или частью данных? –

ответ

1

С FileHelpers вы должны использовать это: FieldQuotedAttribute

FieldQuoted: Указывает, что поле должно быть считаны и записаны как котировочной String. (Вы можете передать кавычки полукокса и может установить, если котировка не является обязательным, как формат Excel CSV)

[FieldQuoted()] // Quoted with " 
public string CustomerName; 
+0

, в какой версии вы видите этот атрибут FieldQuoted. У меня есть [FieldQuotedAttribute()] public string Address4; – sandeeMPS

+0

FileHelpers v 2.0, его на своем сайте сегодня: http://www.filehelpers.com/ – DrKoch

+0

Поскольку ваш файл большой, обязательно используйте асинхронный 'FileHelpersAsyncEngine'. См. [Здесь] (http://filehelpers.sourceforge.net/FileHelpers.FileHelperAsyncEngine.BeginReadFile.html) – shamp00

2

Не изобретайте велосипед.

Использование TextFieldParser. Он анализирует ваши строки, как это делает Excel.

+0

спасибо. но после быстрого Google я обнаружил, что TextFieldParser очень дорог для больших файлов. Поэтому он не может его использовать. Спасибо – sandeeMPS

+0

Теперь, когда вопрос редактируется, и все поля окружены qutation-mark, 'TextFieldParser' - идеальное совпадение ... – DrKoch

+0

@sandeeMPS, почему бы не попробовать его первым и посмотреть, работает ли он в вашей ситуации? «Быстрый Google», возможно, нашел вас необоснованным сторонним комментарием. Всегда лучше всего подтвердить. Вероятно, вам понадобится две минуты, чтобы выяснить, будет ли это приемлемо в вашей ситуации. –