12

多くの csv ファイルをインポートするために優れた FileHelpers ライブラリを使用していますが、問題が発生します。これらの3つの例の行を含む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 がエラーで失敗することです。

フィールド 'TEXT' は、3 行目の QuotedChar で始まっていません。 FieldQuoted(QuoteMode.OptionalForRead) を使用して、オプションの引用フィールドを許可できます

への切り替えQuoteMode.OptionalForReadは、ID 121 のエラーで失敗します:

フィールド TEXT は引用符で囲まれていますが、引用符で囲まれた char: " not は区切り記号の直前にあります ([FieldTrim] を使用してこのエラーを回避できます)

では、引用符のない空のフィールドと、テキストに余分な引用符がある引用テキスト フィールドを持つ csv を処理するにはどうすればよいでしょうか?

4

1 に答える 1

9

これはサポートされていないケースのようです。テスト ケースを追加して、両方のモードで動作するようにしましょう。QuoteMode.AlwaysQuoted が許可できる場合、または "" でなければならないが、2 番目のオプションが機能する必要があります :) 乾杯

于 2011-02-22T11:49:37.603 に答える