Export GridView Records to CSV Using ASP.Net C#

Background

There is often a need in a project's reporting module to export Grid View records to CSV, So by considering that requirement I decided to write this article especially focusing on beginners and those who want to learn how to export a Grid View to CSV using ASP.NET C#.

Now before creating the application, let us create a table named employee in a database from where we show the records in a Grid View, the table has the following fields (shown in the following image): 
 


I hope you have created the same type of table.

Now create the project as:
  1. "Start" - "All Programs" - "Microsoft Visual Studio 2010".

  2. "File" - "New Project" - "C#" - "Empty Project" (to avoid adding a master page).

  3. Provide the Project name such as ExportGridRecordsToCSV or another as you wish and specify the location.

  4. Then right-click on Solution Explorer and select "Add New Item" then select Default.aspx page.

  5. One Button and a grid view.
Now the Default.aspx source code will be as follows: 
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="ExPortGridviewToXML.Default" %>  
  2.   
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  4. <html>  
  5. <head id="Head1" runat="server">  
  6.     <title></title>  
  7. </head>  
  8. <body bgcolor="Silver">  
  9.     <form id="form1" runat="server">  
  10.     <br />  
  11.     <h2 style="color: #808000; font-size: x-large; font-weight: bolder;">  
  12.         Article by Vithal Wadje</h2>  
  13.     <br />  
  14.     <div>  
  15.         <asp:GridView ID="GridView1" AutoGenerateColumns="false" runat="server" CellPadding="6"  
  16.             ForeColor="#333333" GridLines="None">  
  17.             <AlternatingRowStyle BackColor="White" />  
  18.             <EditRowStyle BackColor="#7C6F57" />  
  19.             <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />  
  20.             <HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />  
  21.             <PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" />  
  22.             <RowStyle BackColor="#E3EAEB" />  
  23.             <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />  
  24.             <SortedAscendingCellStyle BackColor="#F8FAFA" />  
  25.             <SortedAscendingHeaderStyle BackColor="#246B61" />  
  26.             <SortedDescendingCellStyle BackColor="#D4DFE1" />  
  27.             <SortedDescendingHeaderStyle BackColor="#15524A" />  
  28.             <Columns>  
  29.                 <asp:BoundField DataField="id" HeaderText="id" />  
  30.                 <asp:BoundField DataField="Name" HeaderText="Name" />  
  31.                 <asp:BoundField DataField="City" HeaderText="City" />  
  32.                 <asp:BoundField DataField="Address" HeaderText="Address" />  
  33.                 <asp:BoundField DataField="Designation" HeaderText="Designation" />  
  34.             </Columns>  
  35.         </asp:GridView>  
  36.         <br />  
  37.                    <asp:Button ID="Button1" runat="server"  
  38.             Text="Export" OnClick="Button1_Click" />  
  39.     </div>  
  40.     </form>  
  41. </body>  
  42. </html> 

Now let us create a function to bind the records to the Grid View from the database. If you are a beginner and don't understand in detail how to bind a Grid View from a database then refer to my following article.

Now, for this article create the following function in the default.aspx.cs page to bind the Grid View:
  1. private void Bindgrid()    
  2. {    
  3.     connection();    
  4.     query = "select *from Employee";//not recommended this i have written just for example,write stored procedure for security    
  5.     com = new SqlCommand(query, con);    
  6.     SqlDataAdapter da = new SqlDataAdapter(query, con);    
  7.     DataSet ds = new DataSet();               
  8.     da.Fill(ds);    
  9.     GridView1.DataSource = ds;    
  10.     GridView1.DataBind();    
  11.     con.Close();  
  12. }    
Now, call the preceding function on page load as:
  1. protected void Page_Load(object sender, EventArgs e)    
  2. {    
  3.     if (!IsPostBack)    
  4.     {    
  5.         Bindgrid();    
  6.   
  7.     }    
  8. } 
Now create the following function to export the Grid View records to CSV:
  1. private void ExportGridToCSV()    
  2. {    
  3.     Bindgrid();    
  4.     Response.Clear();    
  5.     Response.Buffer = true;    
  6.     Response.AddHeader("content-disposition""attachment;filename=Vithal_Wadje.csv");    
  7.     Response.Charset = "";    
  8.     Response.ContentType = "application/text";    
  9.     GridView1.AllowPaging = false;    
  10.     GridView1.DataBind();  
  11.     StringBuilder columnbind = new StringBuilder();    
  12.     for (int k = 0; k < GridView1.Columns.Count; k++)    
  13.     {  
  14.         columnbind.Append(GridView1.Columns[k].HeaderText + ',');    
  15.     }  
  16.     columnbind.Append("\r\n");    
  17.     for (int i = 0; i < GridView1.Rows.Count; i++)    
  18.     {    
  19.         for (int k = 0; k < GridView1.Columns.Count; k++)    
  20.         {  
  21.             columnbind.Append(GridView1.Rows[i].Cells[k].Text + ',');    
  22.         }  
  23.         columnbind.Append("\r\n");    
  24.     }    
  25.     Response.Output.Write(columnbind.ToString());    
  26.     Response.Flush();    
  27.     Response.End();  
  28. }    
We have created the preceding function to export GridView Records to CSV. Now call the preceding function on the Export button click as:
  1. protected void Button1_Click(object sender, EventArgs e)    
  2. {  
  3.     ExportGridToCSV();  
  4. } 
The entire code of the default.aspx page will look as follows: 
  1. using System;
  2. using System.IO;
  3. using System.Data;
  4. using System.Threading;
  5. using System.Data.SqlClient;
  6. using System.Configuration;
  7. using System.Text;
  8. using System.Web.UI.WebControls;
  9.     
  10. namespace ExPortGridviewToXML 
  11. {
  12.     public partial class Default : System.Web.UI.Page
  13.     {
  14.         private SqlConnection con;
  15.         private SqlCommand com; 
  16.         private string constr, query;
  17.         private void connection()
  18.         {
  19.             constr = ConfigurationManager.ConnectionStrings["getconn"].ToString();
  20.             con = new SqlConnection(constr);
  21.             con.Open();
  22.         }
  23.         protected void Page_Load(object sender, EventArgs e)
  24.         {
  25.             if (!IsPostBack)
  26.             {
  27.                 Bindgrid();
  28.             }
  29.         }
  30.         private void Bindgrid()
  31.         {
  32.             connection();
  33.             query = "select *from Employee";//not recommended this i have written just for example,write stored procedure for security
  34.             com = new SqlCommand(query, con);
  35.             SqlDataAdapter da = new SqlDataAdapter(query, con);
  36.             DataSet ds = new DataSet();
  37.             da.Fill(ds);
  38.             GridView1.DataSource = ds;
  39.             GridView1.DataBind();
  40.             con.Close();
  41.         }
  42.         protected void Button1_Click(object sender, EventArgs e)
  43.         {
  44.             ExportGridToCSV();
  45.         }
  46.         private void ExportGridToCSV()
  47.         {
  48.             Bindgrid();
  49.             Response.Clear();
  50.             Response.Buffer = true;
  51.             Response.AddHeader("content-disposition""attachment;filename=Vithal_Wadje.csv");
  52.             Response.Charset = "";
  53.             Response.ContentType = "application/text";
  54.             GridView1.AllowPaging = false;
  55.             GridView1.DataBind();
  56.             StringBuilder columnbind = new StringBuilder();
  57.             for (int k = 0; k < GridView1.Columns.Count; k++)
  58.             {
  59.                 columnbind.Append(GridView1.Columns[k].HeaderText + ',');
  60.             }
  61.             columnbind.Append("\r\n");
  62.             for (int i = 0; i < GridView1.Rows.Count; i++)
  63.             {
  64.                 for (int k = 0; k < GridView1.Columns.Count; k++)
  65.                 {
  66.                     columnbind.Append(GridView1.Rows[i].Cells[k].Text + ',');
  67.                 }
  68.                 columnbind.Append("\r\n");
  69.             }
  70.             Response.Output.Write(columnbind.ToString());
  71.             Response.Flush();
  72.             Response.End();
  73.         }
  74.     }
  75. }
Now run the application and then we can see the following records in the Grid view:
 
 
Now click on the export button, the following Popup will appear:
 
 
 
 Now click the OK button, the following records are exported to the CSV file:
 
 
 
Now you see that all the records of the Grid View are exported to  CSV file.

Notes
  • Download the Zip file from the attachment for the full source code of the application.
  • Change the connection string in the web.config file to specify your server location.
Summary

I hope this article is useful for all readers, if you have any suggestion then please contact me including beginners also.