Библиотека FileHelpers CSV - почему одна буква всегда удаляется из последнего столбца справа? - PullRequest
1 голос
/ 17 марта 2012

Я нашел действительно замечательную библиотеку для чтения 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;
}  

Есть идеи?

Ответы [ 2 ]

5 голосов
/ 18 марта 2012

Это старая проблема с необязательными полями и некоторыми другими условиями, которая была решена после выпуска, но у нас никогда не было времени для полной версии

Вы можете скачать последнюю стабильную версию здесь, чтобы решить эту проблему:

http://teamcity.codebetter.com/viewLog.html?buildId=lastSuccessful&buildTypeId=bt66&tab=artifacts&guest=1

2 голосов
/ 17 марта 2012

Похоже, библиотека ожидает, что разделитель появится как последний символ.Свяжитесь с автором библиотеки.

...