| |
Sign In
In my web applications, i occassionaly need to allow the user to export a dataset as an excel file. I was using a control written by Prashant Nayak posted on Code Project but he released a new version which was problematic for me, so i looked at other solutions.
obinna igbokwe from www.dedicatedsolutions.co.uk posted a good approach which creates a DataGrid object and binds it to the dataset, and then Renders the output of the control to the HttpResponse stream. This works very well. I have adapted his code to C# and added an option to specify a filename for the excel file.
Here is the code:
using System; using System.Data; using System.IO; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace Whatever { /// /// This class provides a method to write a dataset to the HttpResponse as /// an excel file. /// public class ExcelExport { public static void ExportDataSetToExcel(DataSet ds, string filename) { HttpResponse response = HttpContext.Current.Response; // first let's clean up the response.object response.Clear(); response.Charset = ""; // set the response mime type for excel response.ContentType = "application/vnd.ms-excel"; response.AddHeader("Content-Disposition", "attachment;filename=\"" + filename + "\""); // create a string writer using (StringWriter sw = new StringWriter()) { using (HtmlTextWriter htw = new HtmlTextWriter(sw)) { // instantiate a datagrid DataGrid dg = new DataGrid(); dg.DataSource = ds.Tables[0]; dg.DataBind(); dg.RenderControl(htw); response.Write(sw.ToString()); response.End(); } } } } }
Remember Me