2011-07-13 37 views
12

ASP.Net 2.0'da bir gridview denetimim var ve bu gridview verilerini CSV dosyasına vermem gerekiyor.Gridview verilerini CSV dosyasına dışa aktarma

Bu gridview'i veri kümesiyle bağladım. Veri kümesini gridview'e bağladıktan sonra gridview verisinde bazı değişiklikler yaptım. Veri kümesinde 0 varsa, gridview'de "Startted" (Başlat) olarak 0 gösteriyorum ve eğer Veri kümesinde 1 tane var, o zaman gridview'de "Başlatılmamış" olarak 1'i gösteriyorum.

Veri kümesini doğrudan dışa aktarma için kullanamıyorum. İhtiyacım olan şey .. Izgara görünüm verilerini (veri kümesi verileri değil) CSV dosyasına aktaran kodu (C# olarak) istiyorum.

cevap

26

Aşağıdaki kodu deneyin, bunu zaten defalarca kullandım. Verileri doğrudan gridview'den kodda belirtilen csv dosyasına aktarır. Daha fazla bilgi Here için

protected void btnExportCSV_Click(object sender, EventArgs e) 
{ 
    Response.Clear(); 
    Response.Buffer = true; 
    Response.AddHeader("content-disposition", 
    "attachment;filename=GridViewExport.csv"); 
    Response.Charset = ""; 
    Response.ContentType = "application/text"; 

    GridView1.AllowPaging = false; 
    GridView1.DataBind(); 

    StringBuilder sb = new StringBuilder(); 
    for (int k = 0; k < GridView1.Columns.Count; k++) 
    { 
     //add separator 
     sb.Append(GridView1.Columns[k].HeaderText + ','); 
    } 
    //append new line 
    sb.Append("\r\n"); 
    for (int i = 0; i < GridView1.Rows.Count; i++) 
    { 
     for (int k = 0; k < GridView1.Columns.Count; k++) 
     { 
      //add separator 
      sb.Append(GridView1.Rows[i].Cells[k].Text + ','); 
     } 
     //append new line 
     sb.Append("\r\n"); 
    } 
    Response.Output.Write(sb.ToString()); 
    Response.Flush(); 
    Response.End(); 
} 

ben AutoGenerateColumns = true ve AllowSorting = true sahip gridviews çalışmak üzere modifiye iyi cevap için size Devjosh için

+1

Teşekkürler, bunu denedim, ancak yalnızca bu sütunlardaki verileri değil başlık sütunlarını aldım. için – jitendra

+0

(int i = 0; i Devjosh

+0

numaralı kodları çalıştırırken bu kodun satırlarını izleyecektir, ancak sütun sayısı 0'dan büyüktür ama aynı problemde satır sayımı 0'dan büyüktür. – jitendra

4

İlk sayesinde yardımcı olacaktır Umut. Ayrıca, csv dosyasının bozulmadığından emin olmak için verilerden döndürülen virgülleri çıkardım.

private void ExportReport() 
{ 
    // set the resulting file attachment name to the name of the report... 
    string fileName = "test"; 

    Response.Clear(); 
    Response.Buffer = true; 
    Response.AddHeader("content-disposition", "attachment;filename=" + fileName + ".csv"); 
    Response.Charset = ""; 
    Response.ContentType = "application/text"; 

    System.Text.StringBuilder sb = new System.Text.StringBuilder(); 

    // Get the header row text form the sortable columns 
    LinkButton headerLink = new LinkButton(); 
    string headerText = string.Empty; 

    for (int k = 0; k < gvReport.HeaderRow.Cells.Count; k++) 
    { 
     //add separator 
     headerLink = gvReport.HeaderRow.Cells[k].Controls[0] as LinkButton; 
     headerText = headerLink.Text; 
     sb.Append(headerText + ","); 
    } 
    //append new line 
    sb.Append("\r\n"); 
    for (int i = 0; i < gvReport.Rows.Count; i++) 
    { 
     for (int k = 0; k < gvReport.HeaderRow.Cells.Count; k++) 
     { 
      //add separator and strip "," values from returned content... 

      sb.Append(gvReport.Rows[i].Cells[k].Text.Replace(",", "") + ","); 
     } 
     //append new line 
     sb.Append("\r\n"); 
    } 
    Response.Output.Write(sb.ToString()); 
    Response.Flush(); 
    Response.End(); 
} 
+1

bu Devjosh kullanıcısının yaptığı gibi birden fazla sayfa ile çalışmaz – fubo

+0

@fubo Bunu birden fazla sayfa ile çalışmak için, sadece ekleyin gvReport.AllowPaging = yanlış; gvReport.DataBind(); Yöntemin başlangıcına . – user1914368

0
private void ExportGridToCSV() 
     {    
      Response.Clear(); 
      Response.Buffer = true; 
      Response.AddHeader("content-disposition", "attachment;filename=Employee.csv"); 
      Response.Charset = ""; 
      Response.ContentType = "application/text"; 
      GridEmployee.AllowPaging = false; 
      GridEmployee.DataBind(); 

      StringBuilder columnbind = new StringBuilder(); 
      for (int k = 0; k < GridEmployee.Columns.Count; k++) 
      { 

       columnbind.Append(GridEmployee.Columns[k].HeaderText + ','); 
      } 

      columnbind.Append("\r\n"); 
      for (int i = 0; i < GridEmployee.Rows.Count; i++) 
      { 
       for (int k = 0; k < GridEmployee.Columns.Count; k++) 
       { 

        columnbind.Append(GridEmployee.Rows[i].Cells[k].Text + ','); 
       } 

       columnbind.Append("\r\n"); 
      } 
      Response.Output.Write(columnbind.ToString()); 
      Response.Flush(); 
      Response.End(); 

     } 

Sadece bir düğmeye tıklayın halinde bu yöntemi çağırın. Daha fazla kod için bağlantıyı tıklatın Export gridview data into CSV file

Umarım bu size yardımcı olur. Teşekkürler.

İlgili konular