I'm using CsvHelper class to write rows in DataTable to a csv file. The code works but I can't get it to write the headers.
How can I add the headers manually without creating a Class Map?
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();
}
    This is actually in the documentation under Writing to a CSV using a DataTable.
I'll put the code example here too.
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();
    }
}
Headers aren't anything special or different in a CSV file.
The easiest way is to use
writer.WriteHeader<YourClass>();
More complete example:
using (StreamWriter sw = new StreamWriter(@"C:\output.csv"))
{
  using (CsvWriter writer = new CsvWriter(sw))
  {
     writer.WriteHeader<YourClass>();
     writer.WriteRecord(yourRecordVariable);
  }
}
As was posted here on Google groups by the author Josh Close.
来源:https://stackoverflow.com/questions/32443834/manually-add-header-in-csvhelper-csvwriter