Manually Add Header in CsvHelper.CsvWriter

Update:

DataTable functionality is built in now. https://joshclose.github.io/CsvHelper/examples/data-table

Original:

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.NextRecord();
     writer.WriteRecord(yourRecordVariable);
  }
}

As was posted here on Google groups by the author Josh Close.

Tags:

C#

Csvhelper