Я нашел действительно замечательную библиотеку для чтения CSV-файлов - FileHelpers , но у меня странная проблема с этим.Буду признателен за помощь.Заранее спасибо!
После сопоставления мне всегда удаляют одну букву из последнего столбца справа.
Я использую FileHelpers.dll версии 2.0.0- DotNet 2.0 от FileHelpers_2_0_0_bin_docs_wizard.zip
Например, у меня есть такой CSV (некоторые столбцы цитируются, но некоторые нет, это может измениться)
name;surname
"John";Smith
"Jack";Baker
И после чтения файла с помощью:
FileHelperEngine<SemicolonsRow> engine = new FileHelperEngine<SemicolonsRow>();
engine.ErrorManager.ErrorMode = ErrorMode.SaveAndContinue;
res = engine.ReadFile("C:\\a.txt");
if (engine.ErrorManager.ErrorCount > 0)
engine.ErrorManager.SaveErrors("C:\\Log.txt");
Я получаю это:
res[0].Col0 with name
res[0].Col1 with surnam (lack of e at the end)
res[1].Col0 with John
res[1].Col0 with Smit (lack of h at the end)
Когда я читаю файл следующим образом:
name;surname;country
"John";Smith;USA
"Jack";Baker;Canada
проблема в третьем столбце - поэтому я получаю: countr US Canad
Мой класс FileHelpers:
[IgnoreEmptyLines()]
[DelimitedRecord(";")]
public sealed class SemicolonsRow
{
[FieldOptional()]
[FieldQuoted('"', QuoteMode.OptionalForRead, MultilineMode.AllowForRead)]
public String Col0;
[FieldOptional()]
[FieldQuoted('"', QuoteMode.OptionalForRead, MultilineMode.AllowForRead)]
public String Col1;
[FieldOptional()]
[FieldQuoted('"', QuoteMode.OptionalForRead, MultilineMode.AllowForRead)]
public String Col2;
[FieldOptional()]
[FieldQuoted('"', QuoteMode.OptionalForRead, MultilineMode.AllowForRead)]
public String Col3;
}
Есть идеи?