Saturday, August 29, 2009

Export to Excel with bold headers in C# asp.net

public void ExportToExcel(DataTable dt, int[] iColumns, string[] sHeaders, HttpResponse Response)
{
try
{
/// iColumns are the Ordinals(positions of colums) of real datatable .
/// sHeaders are desired Headers Names for iColums .
/// Order of iColums and sHeaders has to be in same order.

/// Creating namesArray with orginal datatable headers .
string Se = string.Empty;
foreach (int UniCount in iColumns)
{
Se += dt.Columns[UniCount].ColumnName + ",";
}
string Re = Se.Substring(0, Se.Length - 1);
string[] namesArray = Re.Split(',');


/// Creating another table with export colums.

DataTable dtExport = dt.DefaultView.ToTable("tempTableName", false, namesArray);

/// Assiging desired names to original colums names.
for (int Cnt = 0; Cnt < sHeaders.Length; Cnt++)
{
dtExport.Columns[Cnt].ColumnName = sHeaders.ElementAt(Cnt).ToString();
}

Response.ClearContent();
Response.AddHeader("content-disposition", "attachment; filename=" + "Export.XLS");
Response.ContentType = "application/excel";
System.IO.StringWriter stringWrite = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = new System.Web.UI.HtmlTextWriter(stringWrite);
System.Web.UI.WebControls.DataGrid dg = new System.Web.UI.WebControls.DataGrid();
dg.AutoGenerateColumns = true;
dg.DataSource = dtExport;
dg.DataBind();
dg.HeaderStyle.Font.Bold = true;
dg.RenderControl(htmlWrite);
Response.Write(stringWrite.ToString());
Response.End();
}
catch (Exception ex)
{
throw ex;
}

}

No comments: