Manually add a header to CsvHelper.CsvWriter

I am using the CsvHelper class to write rows in a DataTable to a csv file. The code works, but I can not get it to write headers.

How to add headers manually without creating a class map?

http://joshclose.imtqy.com/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(); } 
+8
c # csvhelper
source share
2 answers

This is actually found in the documentation in the section Writing to a CSV using a DataTable .

I will also give an example code.

 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(); } } 

The headers are not something special or different in the CSV file.

+15
source share

The easiest way is to use

 writer.WriteHeader<YourClass>(); 

A more complete example:

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

As posted here on Google Groups by Josh Close.

+6
source share

All Articles