【问题标题】:FileHelpers quotes issueFileHelpers 报价问题
【发布时间】:2013-01-08 05:13:52
【问题描述】:

考虑这个文件:

"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 属性是什么,无论有没有它,无论我在文件中的哪个位置放置引号,我都会得到相同的结果

编辑: 如果我使用

"名字",姓氏 fn1,ln1 fn2 fn3,ln3 fn4,ln4

它会忽略引号,这没关系

但是如果我使用

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

我得到了第一行的这个结果

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

【问题讨论】:

    标签: c# csv filehelpers


    【解决方案1】:

    尝试使用FieldQuoted 属性。

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

    您可能需要对设置进行试验,described here

    【讨论】:

      【解决方案2】:

      您的输入数据无效。至少,关于报价。 CSV 中的字段只能在双引号 ("") 和引号内包含嵌入的引号,并且它们也可以包含嵌入的换行符。

      这正是您在这里看到的。 firstName 后面的两个引号是嵌入的引号,由于您永远不会用另一个引号关闭引用的字段,因此整个文件被解析为一个字段。

      【讨论】:

      • 我可以忽略文件中的所有引号吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-25
      相关资源
      最近更新 更多