【问题标题】:CsvHelper wrap all values with quotesCsvHelper 用引号包裹所有值
【发布时间】:2019-05-28 11:39:04
【问题描述】:

我正在使用 CsvHelper 我需要用引号将所有值括起来。 这可能吗?

数据 = 是一个列表

 using (StreamWriter textWriter = new StreamWriter(path))
 {
     textWriter.BaseStream.Write(p, 0, p.Length);
     // var dt = new DataTable();
     var csv = new CsvWriter(textWriter);
     csv.WriteRecords(Data);
     textWriter.Flush();
     textWriter.Close();
 }

谢谢

【问题讨论】:

    标签: csv quotes streamwriter csvhelper


    【解决方案1】:

    有一个名为 ShouldQuote 的配置值,您可以在其中确定字段级别是否应被引用。

    void Main()
    {
        var records = new List<Foo>
        {
            new Foo { Id = 1, Name = "one" },
            new Foo { Id = 2, Name = "two" },
        };
    
        using (var writer = new StringWriter())
        using (var csv = new CsvWriter(writer))
        {
            csv.Configuration.ShouldQuote = (field, context) => true;
            csv.WriteRecords(records);
    
            writer.ToString().Dump();
        }
    }
    
    public class Foo
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
    

    输出:

    "Id","Name"
    "1","one"
    "2","two"
    

    【讨论】:

    • 谢谢!它可以与您的工具中的 CsvReader 一起使用吗?
    • @Stu_Dent 不确定你的意思。
    【解决方案2】:

    从 25.0.0 版到现在,实现方式是:

    var config = new CsvConfiguration(CultureInfo.InvariantCulture)
    {
        ShouldQuote = args => true
    };
    

    【讨论】:

      【解决方案3】:

      只需要添加一个配置对象。像这样

      CsvHelper.Configuration.CsvConfiguration config = new CsvHelper.Configuration.CsvConfiguration();
                     config.QuoteAllFields = true;
                      var csv = new CsvWriter(textWriter, config);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-07-12
        • 2018-01-16
        • 1970-01-01
        • 2017-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多