2016-07-28 14 views
0

グリッドビューをCSVに変換しましたが、グリッドビューのヘッダーはCSVファイルに表示されません。グリッドビューをcsvに変換しましたが、ヘッダーはありません

public void btnToCSV_Click(object sender, EventArgs e) 
{ 
    Response.Clear(); 
    Response.Buffer = true; 
    Response.AddHeader("content-disposition", "attachment;filename=Report.csv"); 
    Response.Charset = ""; 
    Response.ContentType = "application/text"; 
    gvReport.AllowPaging = false; 
    StringBuilder sBuilder = new System.Text.StringBuilder(); 
    for(int index = 0; index < gvReport.Columns.Count; index++) 
    { 
     sBuilder.Append(gvReport.Columns[index].HeaderText + ','); 
    } 
    sBuilder.Append("\r\n"); 
    for(int i = 0; i <gvReport.Rows.Count; i++) 
    { 
     for(int k = 0; k < gvReport.HeaderRow.Cells.Count; k++) 
     { 
      sBuilder.Append(gvReport.Rows[i].Cells[k].Text.Replace(",","") + ","); 
     } 
     sBuilder.Append("\r\n"); 
    } 
    Response.Output.Write(sBuilder.ToString()); 
    Response.Flush(); 
    Response.End(); 
} 
+0

結果のCSVの最上部には何が表示されますか?ちょうどコンマですか? –

+0

あなたにはいくつかの問題があります。あなたは、UIコントロールを取って、それをエクスポートしています。代わりに、基礎となるデータを直接エクスポートする必要があります。すべてのニュアンスを処理するために専用のものを使用するのではなく、独自のCSVジェネレータを使用しています。あなたは[間違ったMIMEタイプを使用しています](http://stackoverflow.com/questions/7076042/what-mime-type-should-i-use-for-csv)。 – mason

+0

@JimmySmith先頭行に空白が表示されます – Abhi

答えて

0

セルを読み取る前に、行ヘッダーの値を読み取ります。

PS:最初の「;」は行ヘッダーの列ヘッダー用です。

var sBuilder = new StringBuilder(); 
    sBuilder.Append(";"); 
    // ColumnsHeader 
    foreach (DataGridViewColumn column in gvReport.Columns) 
    { 
     sBuilder.Append(String.Concat(column.HeaderText, ";")); 
    } 
    foreach (DataGridViewRow row in gvReport.Rows) 
    { 
     // RowHeader 
     sBuilder.Append(String.Concat(row.HeaderCell.Value, ";")); 

     // Cells 
     foreach (DataGridViewCell cell in row.Cells) 
     { 
      sBuilder.Append(String.Concat(cell.Value, ";")); 
     } 
     sBuilder.Append(Environment.NewLine); 
    } 
+0

ありがとうございますが、DataGridViewColumnを自分のコードで使用することはできません。追加する必要がある余分な名前空間はありますか? – Abhi

+0

これを試してみてください。 'foreach(gvReport.HeaderRowのGridViewColumnカラム)' –

+0

@JimmySmith – Abhi

関連する問題