CsvHelper 用引号包裹所有值

Posted

技术标签:

【中文标题】CsvHelper 用引号包裹所有值【英文标题】:CsvHelper wrap all values with quotes 【发布时间】: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();
 

谢谢

【问题讨论】:

【参考方案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);

【讨论】:

以上是关于CsvHelper 用引号包裹所有值的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript-12(传参练习)

ognl用法 取变量时候 需要在变量前面加上# 取字符串需要用单引号包裹字符串

golang数据类型值之字符串

Python Str字符串篇,单引号,双引号,三引号,以及相同与不同

ajax

一下就明白的print函数和input函数