sábado, 22 de noviembre de 2008

Exportar los registros de un Gridview a Excel

Para ver y/o guardar el contenido de un gridview en un documento excel, vamos a utilizar un botón en cuyo evento click implementaremos la exportación.

Aunque nuestro gridview tenga paginación exportará todos sus registros.

protected void Button1_Click(object sender, EventArgs e)
{
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
HtmlTextWriter htw = new HtmlTextWriter(sw);

Page page = new Page();
HtmlForm form = new HtmlForm();

GridView1.EnableViewState = false;
GridView1.AllowPaging = false;
GridView1.DataBind();
page.EnableEventValidation = false;

page.DesignerInitialize();

page.Controls.Add(form);
form.Controls.Add(GridView1);

page.RenderControl(htw);

Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/ms-excel";
Response.AddHeader("Content- Disposition", "attachment;filename=nombreDocumento.xls");
Response.Charset = "UTF-8";

Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentEncoding = System.Text.Encoding.Default;
Response.Write(sb.ToString());
Response.End();
}