2015-09-07 12 views
8

Sto utilizzando la classe CsvHelper per scrivere righe in DataTable in un file csv. Il codice funziona ma non riesco a farlo scrivere le intestazioni.Aggiungi intestazione manualmente in CsvHelper.CsvWriter

Come posso aggiungere manualmente le intestazioni senza creare una mappa di classi?

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

risposta

15

Questo è in realtà nel documentation sotto Writing to a CSV using a DataTable.

Inserirò qui l'esempio di codice.

Le intestazioni non sono niente di speciale o diverso in un file CSV.

+0

Mi piacerebbe utilizzare questo metodo, ma non ho mai usato un '' datareader''. Dove posso trovare informazioni su come popolare un nuovo datatable da un datatable esistente? – Zeus

6

Il modo più semplice è quello di utilizzare

writer.WriteHeader<YourClass>(); 

esempio più completo:

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

    writer.WriteRecord(yourRecordVariable); 
    } 
} 

Come è stato pubblicato here sui gruppi di Google dall'autore Josh Chiudi.

Problemi correlati