在CsvHelper.CsvWriter中手动添加标头

Kat*_*udd 11 c# csvhelper

我正在使用CsvHelper类将行写入DataTablecsv文件.代码有效,但我无法编写标题.

如何在不创建类映射的情况下手动添加标题?

http://joshclose.github.io/CsvHelper/

DataTable dt = GetDataTableFromDB();

System.IO.MemoryStream memoryStream = new System.IO.MemoryStream();
System.IO.StreamWriter streamWriter = new System.IO.StreamWriter( memoryStream );
CsvHelper.CsvWriter writer = new CsvHelper.CsvWriter( streamWriter );

foreach ( DataColumn column in properties.Columns )
    writer.WriteHeader( column.ColumnName );    //<--- How do I write to column

foreach ( DataRow row in dt.Rows )
{
    foreach ( object item in row.ItemArray )
        writer.WriteField( item.ToString() );

    writer.NextRecord();
}
Run Code Online (Sandbox Code Playgroud)

Jos*_*ose 19

这实际上是在文档Writing to a CSV using a DataTable.

我也将代码示例放在这里.

using( var dt = new DataTable() )
{
    dt.Load( dataReader );
    foreach( DataColumn column in dt.Columns )
    {
        csv.WriteField( column.ColumnName );
    }
    csv.NextRecord();

    foreach( DataRow row in dt.Rows )
    {
        for( var i = 0; i < dt.Columns.Count; i++ )
        {
            csv.WriteField( row[i] );
        }
        csv.NextRecord();
    }
}
Run Code Online (Sandbox Code Playgroud)

标题在CSV文件中没有任何特殊或不同之处.


Mea*_*een 11

最简单的方法是使用

writer.WriteHeader<YourClass>();
Run Code Online (Sandbox Code Playgroud)

更完整的例子:

using (StreamWriter sw = new StreamWriter(@"C:\output.csv"))
{
  using (CsvWriter writer = new CsvWriter(sw))
  {
     writer.WriteHeader<YourClass>();

     writer.WriteRecord(yourRecordVariable);
  }
}
Run Code Online (Sandbox Code Playgroud)

由于被张贴在这里由作者乔希关闭在谷歌群体.

  • 我需要在写标题后添加`writer.NextRecord();`来换行。 (5认同)