多くの 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 を処理するにはどうすればよいでしょうか?