2015-09-07 29 views
8

私はCsvHelperクラスを使用して、DataTableの行をcsvファイルに書き込みます。コードは動作しますが、ヘッダーを書き込むことはできません。CsvHelper.CsvWriterに手動でヘッダを追加する

クラスマップを作成せずに手動でヘッダを追加するにはどうすればよいですか?

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

答えて

15

これはWriting to a CSV using a DataTabledocumentationに実際にあります。

ここでもコード例を示します。

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

ヘッダーは、CSVファイルでは特別なものでも、異なるものでもありません。

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

    writer.WriteRecord(yourRecordVariable); 
    } 
} 

としては、著者ジョシュ閉じることにより、Googleグループのhereを投稿されました:

+0

私はこのメソッドを使いたいですが、 '' datareader''を使ったことはありません。既存のデータテーブルから新しいデータテーブルを作成する方法はどこで確認できますか? – Zeus

6

最も簡単な方法は、

writer.WriteHeader<YourClass>(); 

もっと完全な例を使用することです。

関連する問題