public static void ExportToExcel(DataTable dt, string fileNameWithoutExtension)
{
try
{
if (dt.Rows.Count > 0)
{
//Note: For simple Export uncomment the below code and use it.
//////System.IO.StringWriter tw = new System.IO.StringWriter();
//////System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
//////DataGrid dgGrid = new DataGrid();
//////dgGrid.DataSource = dt;
//////dgGrid.DataBind();
////////Get the HTML for the control.
//////dgGrid.RenderControl(hw);
////////Write the HTML back to the browser.
////////Response.ContentType = application/vnd.ms-excel;
//////HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
//////HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment; filename=" + fileNameWithoutExtension.Trim() + ".xls" + "");
////////this.EnableViewState = false;
//////HttpContext.Current.Response.Write(tw.ToString());
//////HttpContext.Current.Response.End();
//Note : For Exporting to excel with formating and preserving starting(Leading) zeros use below code.
String style = "<style>.text{mso-number-format:\\@;}</style>";
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + fileNameWithoutExtension.Trim() + ".xls" + "");
HttpContext.Current.Response.ContentType = "application/excel";
StringWriter sw = new StringWriter();
System.IO.StringWriter ioSw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(ioSw);
GridView GridView1 = new GridView();
GridView1.AllowPaging = false;
GridView1.DataSource = dt;
GridView1.DataBind();
//Change the Header Row
GridView1.HeaderRow.Style.Add("background-color", "#cc0000");
//Apply style to Individual Cells
GridView1.HeaderRow.Cells[0].Style.Add("background-color", "green");
for (int i = 0; i < GridView1.Rows.Count; i++)
{
GridViewRow row = GridView1.Rows[i];
//Apply text style to each Row
row.Attributes.Add("class", "textmode");
//Apply style to Individual Cells of Alternating Row
if (i % 2 != 0)
{
row.Cells[1].Attributes.Add("class", "text");//Format individual Column as text to preserve leading zeros
row.Cells[2].Style.Add("background-color", "#C2D69B");
}
}
//Remove Controls
this.RemoveControls(GridView1);
GridView1.RenderControl(htw);
HttpContext.Current.Response.Output.Write(style + ioSw.ToString());
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.End();
}
else
{
throw new Exception("No records to export");
}
}
catch (Exception ex)
{
throw ex;
}
}
private void RemoveControls(Control grid)
{
Literal literal = new Literal();
for (int i = 0; i < grid.Controls.Count; i++)
{
if (grid.Controls[i] is LinkButton)
{
literal.Text = (grid.Controls[i] as LinkButton).Text;
grid.Controls.Remove(grid.Controls[i]);
grid.Controls.AddAt(i, literal);
}
else if (grid.Controls[i] is DropDownList)
{
literal.Text = (grid.Controls[i] as DropDownList).SelectedItem.Text;
grid.Controls.Remove(grid.Controls[i]);
grid.Controls.AddAt(i, literal);
}
else if (grid.Controls[i] is CheckBox)
{
literal.Text = (grid.Controls[i] as CheckBox).Checked ? "True" : "False";
grid.Controls.Remove(grid.Controls[i]);
grid.Controls.AddAt(i, literal);
}
else if (grid.Controls[i] is HyperLink)
{
literal.Text = (grid.Controls[i] as HyperLink).Text;
grid.Controls.Remove(grid.Controls[i]);
grid.Controls.AddAt(i, literal);
}
else if (grid.Controls[i] is Button)
{
literal.Text = (grid.Controls[i] as Button).Text;
grid.Controls.Remove(grid.Controls[i]);
grid.Controls.AddAt(i, literal);
}
if (grid.Controls[i].HasControls())
{
RemoveControls(grid.Controls[i]);
}
}
}
{
try
{
if (dt.Rows.Count > 0)
{
//Note: For simple Export uncomment the below code and use it.
//////System.IO.StringWriter tw = new System.IO.StringWriter();
//////System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
//////DataGrid dgGrid = new DataGrid();
//////dgGrid.DataSource = dt;
//////dgGrid.DataBind();
////////Get the HTML for the control.
//////dgGrid.RenderControl(hw);
////////Write the HTML back to the browser.
////////Response.ContentType = application/vnd.ms-excel;
//////HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
//////HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment; filename=" + fileNameWithoutExtension.Trim() + ".xls" + "");
////////this.EnableViewState = false;
//////HttpContext.Current.Response.Write(tw.ToString());
//////HttpContext.Current.Response.End();
//Note : For Exporting to excel with formating and preserving starting(Leading) zeros use below code.
String style = "<style>.text{mso-number-format:\\@;}</style>";
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + fileNameWithoutExtension.Trim() + ".xls" + "");
HttpContext.Current.Response.ContentType = "application/excel";
StringWriter sw = new StringWriter();
System.IO.StringWriter ioSw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(ioSw);
GridView GridView1 = new GridView();
GridView1.AllowPaging = false;
GridView1.DataSource = dt;
GridView1.DataBind();
//Change the Header Row
GridView1.HeaderRow.Style.Add("background-color", "#cc0000");
//Apply style to Individual Cells
GridView1.HeaderRow.Cells[0].Style.Add("background-color", "green");
for (int i = 0; i < GridView1.Rows.Count; i++)
{
GridViewRow row = GridView1.Rows[i];
//Apply text style to each Row
row.Attributes.Add("class", "textmode");
//Apply style to Individual Cells of Alternating Row
if (i % 2 != 0)
{
row.Cells[1].Attributes.Add("class", "text");//Format individual Column as text to preserve leading zeros
row.Cells[2].Style.Add("background-color", "#C2D69B");
}
}
//Remove Controls
this.RemoveControls(GridView1);
GridView1.RenderControl(htw);
HttpContext.Current.Response.Output.Write(style + ioSw.ToString());
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.End();
}
else
{
throw new Exception("No records to export");
}
}
catch (Exception ex)
{
throw ex;
}
}
private void RemoveControls(Control grid)
{
Literal literal = new Literal();
for (int i = 0; i < grid.Controls.Count; i++)
{
if (grid.Controls[i] is LinkButton)
{
literal.Text = (grid.Controls[i] as LinkButton).Text;
grid.Controls.Remove(grid.Controls[i]);
grid.Controls.AddAt(i, literal);
}
else if (grid.Controls[i] is DropDownList)
{
literal.Text = (grid.Controls[i] as DropDownList).SelectedItem.Text;
grid.Controls.Remove(grid.Controls[i]);
grid.Controls.AddAt(i, literal);
}
else if (grid.Controls[i] is CheckBox)
{
literal.Text = (grid.Controls[i] as CheckBox).Checked ? "True" : "False";
grid.Controls.Remove(grid.Controls[i]);
grid.Controls.AddAt(i, literal);
}
else if (grid.Controls[i] is HyperLink)
{
literal.Text = (grid.Controls[i] as HyperLink).Text;
grid.Controls.Remove(grid.Controls[i]);
grid.Controls.AddAt(i, literal);
}
else if (grid.Controls[i] is Button)
{
literal.Text = (grid.Controls[i] as Button).Text;
grid.Controls.Remove(grid.Controls[i]);
grid.Controls.AddAt(i, literal);
}
if (grid.Controls[i].HasControls())
{
RemoveControls(grid.Controls[i]);
}
}
}
No comments:
Post a Comment