Como exportar a Excel un ListView hecho en una página en ASP.NET

Hola

Necesito exportar una información a Excel. Tengo un ListView echo en una página en ASP.NET. La información la estoy sacando de una tabla, pero necesito exportar a Excel.

Así tengo mi página:

Muchas gracias

1 Respuesta

Respuesta
6

Pues hay un truco bastante efectivo que es crear un archivo .XLS con una tabla HTML. Al abrirlo, Excel muestra la tabla como si fuera un XLS de verdad.

El código sería algo así:

protected void ExportToExcel(object sender, EventArgs e)
{
    Response.Clear();
    Response.Buffer = true;
    Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.xls");
    Response.Charset = "";
    Response.ContentType = "application/vnd.ms-excel";
    using (StringWriter sw = new StringWriter())
    {
        HtmlTextWriter hw = new HtmlTextWriter(sw);
        // Para exportar todas las páginas
        GridView1.AllowPaging = false;
        this.BindGrid();
        GridView1.HeaderRow.BackColor = Color.White;
        foreach (TableCell cell in GridView1.HeaderRow.Cells)
        {
            cell.BackColor = GridView1.HeaderStyle.BackColor;
        }
        foreach (GridViewRow row in GridView1.Rows)
        {
            row.BackColor = Color.White;
            foreach (TableCell cell in row.Cells)
            {
                if (row.RowIndex % 2 == 0)
                {
                    cell.BackColor = GridView1.AlternatingRowStyle.BackColor;
                }
                else
                {
                    cell.BackColor = GridView1.RowStyle.BackColor;
                }
                cell.CssClass = "textmode";
            }
        }
        GridView1.RenderControl(hw);
        // Estilo para formatear números como cadenas
        string style = @"<style> .textmode { } </style>";
        Response.Write(style);
        Response.Output.Write(sw.ToString());
        Response.Flush();
        Response.End();
    }
}

Otra alternativa sería usar Open XML SDK pero ya lleva bastante más trabajo aunque el resultado es un XLS nativo muy profesional.

PD: El código lo he obtenido de este artículo en inglés: Export GridView to Excel in ASP.Net with Formatting using C# and VB.Net

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas