1

このファイルを考慮すると:

"firstName"",lastName
fn1,ln1
fn2
fn3,ln3
fn4,ln4

すべての引用符を無視する可能性はありますか? これは私のコードです:

    [DelimitedRecord(",")]
    public partial class Person
    {
        //[FieldQuoted]
        private string firstName;

        [FieldNullValue("default first name")]
        //[FieldQuoted]
        private string lastName;

        [FieldNotInFile]
        private string city;

        public string FirstName
        {
            get { return firstName; }
            set { firstName = value; }
        }

        public string LastName
        {
            get { return lastName; }
            set { lastName = value; }
        }

        public string City
        {
            get { return city; }
            set { city = value; }
        }
    }   

            ExcelStorage provider = new ExcelStorage(typeof(Person));
            provider.FileName = "data.csv";
            System.Data.DataTable datTable = provider.ExtractRecordsAsDT(); 

DataTable には、次の値を持つ 1 行のみが含まれます。

{object[2]}
    [0]: "firstName\",lastName\r\nfn1,ln1\r\nfn2\r\nfn3,ln3\r\nfn4,ln4\r\n"
    [1]: "default first name"

その FieldQuoted 属性が何であるかを本当に理解していません。ファイルのどこに引用符を配置しても同じ結果になります。

編集:私が使用する場合

"firstName",lastName fn1,ln1 fn2 fn3,ln3 fn4,ln4

引用符を無視します。これで問題ありません

しかし、私が使用する場合

""firstName"",""lastName""
fn1,ln1
fn2
fn3,ln3
fn4,ln4

最初の行でこの結果が得られます

[0]: "firstName\"\""
[1]: "lastName\"\""
4

2 に答える 2

2

FieldQuoted属性を使用してみてください。

[FieldQuoted('"', QuoteMode.AlwaysQuoted, MultilineMode.NotAllow)]

ここで説明する設定を試す必要があるかもしれません。

于 2013-01-24T12:40:46.730 に答える
1

入力データが無効です。少なくとも、引用に関して。""CSV のフィールドには、二重化 ( )され、引用符で囲まている場合にのみ、埋め込み引用符を含めることができます。また、埋め込み改行も含めることができます。

そして、それはまさにあなたがここで見ているものです。次の 2 つの引用符firstNameは埋め込み引用符であり、引用符で囲まれたフィールドを別の引用符で閉じないため、ファイル全体が単一のフィールドであるかのように解析されます。

于 2013-01-24T12:36:40.203 に答える