Step1: Add HttpContext
HttpContext context = HttpContext.Current;
context.Response.Clear();
Step 2: Add CSV Header
foreach (DataColumn column in dataTable.Columns)
{
context.Response.Write(column.ColumnName + ",");
}
context.Response.Write(Environment.NewLine);
Step 3: Add cell value
foreach (DataRow row in dataTable.Rows)
{
for (int i = 0; i < dataTable.Columns.Count; i++)
{
context.Response.Write(row[i].ToString() + ",");
}
context.Response.Write(Environment.NewLine);
}
Step 4: Save CSV file
context.Response.ContentType = "text/csv";
context.Response.AppendHeader("Content-Disposition", "attachment; filename=" + fileName + ".csv");
context.Response.End();
Complete Source Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Data;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{ }
protected void Button1_Click(object sender, EventArgs e)
{
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("Products.xml"));
ExportToExcel(ds.Tables[0], "DataTable");
}
protected void ExportToExcel(DataTable dataTable, string fileName)
{
HttpContext context = HttpContext.Current;
context.Response.Clear();
foreach (DataColumn column in dataTable.Columns)
{
context.Response.Write(column.ColumnName + ",");
}
context.Response.Write(Environment.NewLine);
foreach (DataRow row in dataTable.Rows)
{
for (int i = 0; i < dataTable.Columns.Count; i++)
{
context.Response.Write(row[i].ToString() + ",");
}
context.Response.Write(Environment.NewLine);
}
context.Response.ContentType = "text/csv";
context.Response.AppendHeader("Content-Disposition", "attachment; filename=" + fileName + ".csv");
context.Response.End();
}
}
Related posts:
How to make this export process running in different window..so user can navigate to the other pages during download file?
Hi Neha,
Once you click on button to export the CSV/Excel the download process will run in popup window.
Hi, Can you please suggest me how to export the total data from grid view to csv file while paging is allowed.?
Please suggest me ..
Hey Mahesh,
This given solution will work even paging enable in gridview.
http://geekswithblogs.net/AzamSharp/archive/2006/01/09/65368.aspx
is it posible to create a second sheet fill whit a second datatable usin just one button and this same code?