C# 在除第一行(标题)外的所有字段周围写引号

C# 在除第一行(标题)外的所有字段周围写引号,c#,csvhelper,C#,Csvhelper,CsvHelper有一个非常方便的标志,用于在所有字段周围设置”(CSV文件中的一个常见要求): 但是,这也会将“放在包含字段名的第一行的周围 除了包含字段名的第一行之外,如何将“放在所有字段的周围 我在读取csvhelper代码的Google中找不到任何东西。WriteHeader方法似乎在内部使用WriteField,并设置指示标头已写入的标志。WriteField遵守当前配置的设置,即是否应引用字段,并将引号烘焙到在调用它的时间,即使此时不一定会写入文件 因此,我建议您这样做: var c

CsvHelper有一个非常方便的标志,用于在所有字段周围设置
(CSV文件中的一个常见要求):

但是,这也会将
放在包含字段名的第一行的周围

除了包含字段名的第一行之外,如何将
放在所有字段的周围


我在读取csvhelper代码的Google中找不到任何东西。WriteHeader方法似乎在内部使用WriteField,并设置指示标头已写入的标志。WriteField遵守当前配置的设置,即是否应引用字段,并将引号烘焙到在调用它的时间,即使此时不一定会写入文件

因此,我建议您这样做:

var cw = new CsvWriter(yourTextWriterOrWhatever);
cw.Configuration.QuoteNoFields = true;
cw.WriteHeader<YourClassNameHere>();
cw.NextRecord(); // without this first row is on same line as header
cw.Configuration.QuoteAllFields = true; //or set QuoteNoFields = false
cw.WriteRecords(yourCollectionOfYourClass);
var cw=new CsvWriter(yourtextwriterorwhater);
cw.Configuration.QuoteNoFields=true;
cw.WriteHeader();
cw.NextRecord();//如果没有第一行,则与标题位于同一行
cw.Configuration.QuoteAllFields=true;//或设置quoteNodeFields=false
cw.WriterRecords(您的CollectionOurClass);
为了清楚起见,您不能粘贴并继续上面的代码,您必须对其进行编辑以使其对您的上下文有效-无论您在哪里遇到“您的”一词都需要调整

我想概述的重要部分是你应该

  • 在配置中关闭引号
  • 写标题
  • 打开引用(通过引用所有内容或禁用quotenofields并让csvhelper确定是否引用)
  • 写下数据记录

    • 您可以使用类似的东西

      cw.Configuration.ShouldQuote = (field, context) => context.HasHeaderBeenWritten;
      


      但是您需要根据需要进行测试和调整。

      为什么要这样做?客户端要求显示您用于编写文件QuoteAllFields的整个代码在版本2中似乎已停止工作?它不再可用。2.x和3.x文档仍然引用它?17天前的提交表明这些文件确实已在favo中删除ShouldQuote的r-这起作用-注意在WriteHeader之后需要调用NextRecord-否则第一行数据将被写入与标头相同的行中。
      cw.Configuration.ShouldQuote = (field, context) => context.HasHeaderBeenWritten;
      
      cw.Configuration.ShouldQuote = (field, context) => context.Row > 1;