2011-07-13 42 views
12

Tôi có quyền kiểm soát GridView trong ASP.Net 2.0 và tôi cần xuất dữ liệu GridView này vào tệp CSV.Xuất dữ liệu GridView vào tệp CSV

Tôi đã ràng buộc lưới này với tập dữ liệu. Sau khi ràng buộc tập dữ liệu với GridView tôi đã thực hiện một số thay đổi trong dữ liệu GridView như nếu tôi có 0 trong tập dữ liệu thì tôi hiển thị 0 là "Đã bắt đầu" trong GridView và nếu tôi có 1 trong tập dữ liệu sau đó tôi hiển thị 1 là "Không bắt đầu" trong GridView.

Vì vậy, tôi không thể sử dụng tập dữ liệu trực tiếp để xuất. Những gì tôi cần là .. tôi muốn mã (trong C#) xuất dữ liệu GridView của tôi (không phải dữ liệu của tập dữ liệu) vào tệp CSV.

Trả lời

26

Thử mã sau, tôi đã sử dụng mã này nhiều lần. Nó sẽ xuất dữ liệu trực tiếp từ GridView sang tệp csv được chỉ định trong mã.

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

để biết thêm thông tin chuyến thăm Here Hy vọng nó sẽ giúp bạn

+1

Cảm ơn, tôi đã thử cách này nhưng chỉ lấy tên cột tiêu đề chứ không phải dữ liệu trong các cột này. – jitendra

+0

cho (int i = 0; i Devjosh

+0

tôi nhận số cột lớn hơn 0 nhưng cùng một vấn đề tôi không có số hàng lớn hơn 0. – jitendra

4

nhờ đầu tiên để Devjosh cho câu trả lời tốt mà tôi sửa đổi để làm việc với gridviews có AutoGenerateColumns = true và AllowSorting = true. Thêm vào đó, tôi đã loại bỏ bất kỳ dấu phẩy nào được trả lại từ dữ liệu để đảm bảo tệp csv không bị hỏng.

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

điều này không hoạt động với nhiều trang vì Devjosh đã làm – fubo

+0

@fubo Để làm việc này với nhiều trang, chỉ cần thêm gvReport.AllowPaging = sai; gvReport.DataBind(); vào đầu phương thức. – 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(); 

     } 

Chỉ cần gọi phương pháp này trong một sự kiện Click vào nút. Để biết thêm Mã, hãy nhấp vào liên kết Export gridview data into CSV file

Tôi hy vọng điều này sẽ giúp bạn. Cảm ơn.

Các vấn đề liên quan