Exportar DataGrid a Excel en ASP .NET

 

 

La forma mas, MAS, facil de exportar a Excel algo desde ASP .NET es mediante un datagrid,  su metodo RenderControl y enviando ese resultado mediante el response de la pag web.

 

En serio...   es facil xD

 

Later

 

Tora

 

 

 

/// <summary>

/// Click en el Boton de Exportacion a Excel en el aspx.cs

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void btnExportarXLS_Click(object sender, System.EventArgs e)

{

ExportarXls oXls = new ExportarXls();

string fileName = "Reporte.xls";

r.exportarFile(dgResult, fileName, Page.Response);

}

 

 


 

 

public class ExportarXls

{

public ExportarXls()

{

}

/// <summary>

/// Exporta un Datagrid a un "Excel" desde un ASPX

/// </summary>

/// <param name="dg">DataGrid a exportar</param>

/// <param name="file">Nombre del archivo de excel</param>

/// <param name="response">HttpResponse de la pagina que hace el llamado</param>

/// <remarks>Author: TORAVALENZUELA</remarks>

public void exportarFile(System.Web.UI.WebControls.DataGrid dg, string file, System.Web.HttpResponse response)

{

System.Text.StringBuilder sBuilder = new System.Text.StringBuilder();

System.IO.StringWriter stringWrite = new System.IO.StringWriter(sBuilder);

System.Web.UI.HtmlTextWriter htmlWrite = new System.Web.UI.HtmlTextWriter(stringWrite);

try

{

htmlWrite.Write("<p>");

dg.RenderControl(htmlWrite);

htmlWrite.Write("</p>");

}

catch (System.Exception ex)

{

throw (ex);

}

response.Clear();

response.Charset = "";

response.ContentEncoding = System.Text.Encoding.Default;

response.ContentType = "application/vnd.ms-excel";

response.AddHeader("Content-Disposition", "attachment; filename=" + file);

response.Write(sBuilder.ToString());

response.End();

response.Flush();

}

}