2011-07-13 184 views
12

我在ASP.Net 2.0中有一個gridview控件,我需要將這個gridview數據導出爲CSV文件。將gridview數據導出爲CSV文件

我已經綁定了這個gridview和數據集。將數據集綁定到gridview之後,我在gridview數據中做了一些修改,就好像我在數據集中得到0一樣,然後我在gridview中顯示0作爲「Started」,如果我在數據集中得到1,然後在gridview中將1顯示爲「Not Started」。

所以,我不能直接使用數據集來導出。我需要的是...... 我想要將我的gridview數據(不是數據集的數據)導出到CSV文件中的代碼(在c#中)。

回答

26

請嘗試下面的代碼,我已經使用過很多次了。它會將數據直接從gridview導出到代碼中指定的csv文件中。

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

的更多信息,請訪問Here 希望它會幫助你

+1

謝謝,我試過這個,但只獲得標題列名稱不是這些列中的數據。 – jitendra

+0

對(INT I = 0;我 Devjosh

+0

我得到的列數大於0,但同樣的問題,我沒有得到大於0的行數。 – jitendra

4

首先感謝Devjosh爲我修改與擁有的AutoGenerateColumns =真正的和AllowSorting =真GridView的工作中很好的答案。另外,我從數據中刪除了任何返回的逗號,以確保csv文件沒有損壞。

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

這不適用於Devjosh的多個頁面 – fubo

+0

@fubo爲了使這個工作有多個頁面,只需添加 gvReport.AllowPaging =假; gvReport.DataBind(); 該方法的開始。 – 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(); 

     } 

只需撥打一個按鈕的Click事件此方法。 欲瞭解更多信息,請點擊鏈接 Export gridview data into CSV file

我希望這對你有所幫助。謝謝。