Exporting the Table content of an HTML Page on Button Click to MS Excel.
protected void Button1_Click(object sender, EventArgs e)
{
string fileName = "CompanyProfile.xls";
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", fileName));
HttpContext.Current.Response.ContentType = "application/ms-excel";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
HtmlForm oFrm = new HtmlForm();
tblExport.Parent.Controls.Add(oFrm);
oFrm.Attributes["runat"] = "server";
oFrm.Controls.Add(tblExport);
oFrm.RenderControl(htw);
Response.Write(sw.ToString());
Response.End();
}
Export a GridView Content to MS Excel : C# (Few more Find Controls to be added if the Gridview has some controls in it.)
private void ExportGridView()
{
string attachment = "attachment; filename=SalesVsExpenses.xls";
Response.ClearContent();
Response.AddHeader("content-disposition", attachment);
Response.ContentType = "application/ms-excel";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
// Create a form to contain the grid
HtmlForm frm = new HtmlForm();
GrvMerged.Parent.Controls.Add(frm);
frm.Attributes["runat"] = "server";
frm.Controls.Add(GrvMerged);
frm.RenderControl(htw);
Response.Write(sw.ToString());
Response.End();
}
Method, if GridView has some controls in it.
private static void PrepareControlForExport(Control control)
{
int i = 0;
while ((i < control.Controls.Count))
{
Control current = control.Controls[i];
if ((current is LinkButton))
{
control.Controls.Remove(current);
control.Controls.AddAt(i, new LiteralControl(((LinkButton)current).Text));
}
else if ((current is ImageButton))
{
control.Controls.Remove(current);
control.Controls.AddAt(i, new LiteralControl(((ImageButton)current).AlternateText));
}
else if ((current is HyperLink))
{
control.Controls.Remove(current);
control.Controls.AddAt(i, new LiteralControl(((HyperLink)current).Text));
}
else if ((current is DropDownList))
{
control.Controls.Remove(current);
control.Controls.AddAt(i, new LiteralControl(((DropDownList)current).SelectedItem.Text));
}
else if ((current is CheckBox))
{
control.Controls.Remove(current);
control.Controls.AddAt(i, new LiteralControl(((CheckBox)current).Checked.ToString()));
}if (current.HasControls())
{PrepareControlForExport(current);}
i = (i + 1);
}
}
No comments:
Post a Comment