2016-07-28 19 views
0

Ich konvertierte Gridview zu CSV, aber die Header in der Gridview werden nicht in der CSV-Datei angezeigt.konvertiert Gridview in CSV, aber keine Header

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

Was sehen Sie in der obersten Zeile der resultierenden CSV? Sind es nur Kommas? –

+0

Sie haben eine Reihe von Problemen. Sie nehmen eine Benutzeroberfläche und exportieren diese. Stattdessen sollten Sie die zugrunde liegenden Daten direkt exportieren. Sie rollen Ihren eigenen CSV-Generator, anstatt etwas zu verwenden, das für alle Nuancen entwickelt wurde. Und Sie verwenden [den falschen MIME-Typ] (http://stackoverflow.com/questions/7076042/what-mime-type-should-i-use-for-csv). – mason

+0

@JimmySmith Ich sehe Leerzeichen in der oberen Zeile – Abhi

Antwort

0

Bevor die Zellen zu lesen lesen den Wert des Zeilenkopfes.

PS: Der erste Anhang ";" steht für den Spaltenkopf des Zeilenkopfes.

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

danke, aber DataGridViewColumn kann nicht in meinem Code verwendet werden. Gibt es einen zusätzlichen Namespace, der hinzugefügt werden muss? – Abhi

+0

Versuchen Sie dies, in dieser Zeile, 'foreach (GridViewColumn Spalte in gvReport.HeaderRow)' –

+0

Noch hilft nicht @JimmySmith – Abhi