ClosedXML y el uso de plantillas

Para facilitar la tarea de crear reportes o documentos en formato XLS o XLSX, se tiene el paquete ClosedXML. El mismo tiene soporte para el uso de templates.

Lo primero que tenemos que hacer es instalar el paquete Nuget en nuestro proyecto:

PM> …


This content originally appeared on DEV Community and was authored by Alonzo Vera

Para facilitar la tarea de crear reportes o documentos en formato XLS o XLSX, se tiene el paquete ClosedXML. El mismo tiene soporte para el uso de templates.

Lo primero que tenemos que hacer es instalar el paquete Nuget en nuestro proyecto:

PM> Install-Package ClosedXML

Después, el bloque de codigo necesario para mostrar un excel a partir de una plantilla es:

var strTitulo = "Titulo del reporte";
var dtReporte = ObtenerDatosReporte(); //Funcion que devolverá un DataTable

//Definimos la plantilla y la utilizamos con la libreria ClosedXML
var template = Server.MapPath("~/doc_templates/Reporte.xlsx");
using (var wb = new XLWorkbook(template))
{
    //Ponemos algunos valores en el documento
    wb.Worksheets.Worksheet(1).Cell(5, 1).Value = strTitulo;

    //Podemos insertar un DataTable
    wb.Worksheets.Worksheet(1).Cell(9, 1).InsertTable(dtReporte);
    //Aplicamos los filtros y formatos a la tabla 
    wb.Worksheets.Worksheet(1).Table("Table1").ShowAutoFilter = true;
    wb.Worksheets.Worksheet(1).Table("Table1").Style.Alignment.Vertical =
        XLAlignmentVerticalValues.Center;
    wb.Worksheets.Worksheet(1).Columns(2, 2 + dtReporte.Columns.Count).AdjustToContents();

    //Limitamos el ancho de las columnas a 60
    foreach (var column in wb.Worksheets.Worksheet(1).Columns())
        if (column.Width > 60)
        {
            column.Width = 60;
            column.Style.Alignment.WrapText = true;
        }

    wb.Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
    wb.Style.Font.Bold = true;

    //Enviamos el archivo al cliente
    Response.Clear();
    Response.Buffer = true;
    Response.Charset = "";
    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
    Response.AddHeader("content-disposition", "attachment;filename=\"" + strTitulo + ".xlsx\"");

    using (var myMemoryStream = new MemoryStream())
    {
        wb.SaveAs(myMemoryStream);
        myMemoryStream.WriteTo(Response.OutputStream);
        Response.Flush();
        Response.End();
    }
}

Para acceder a la documentación del proyecto, pueden ingresar a su repositorio


This content originally appeared on DEV Community and was authored by Alonzo Vera


Print Share Comment Cite Upload Translate Updates
APA

Alonzo Vera | Sciencx (2024-06-21T20:29:26+00:00) ClosedXML y el uso de plantillas. Retrieved from https://www.scien.cx/2024/06/21/closedxml-y-el-uso-de-plantillas/

MLA
" » ClosedXML y el uso de plantillas." Alonzo Vera | Sciencx - Friday June 21, 2024, https://www.scien.cx/2024/06/21/closedxml-y-el-uso-de-plantillas/
HARVARD
Alonzo Vera | Sciencx Friday June 21, 2024 » ClosedXML y el uso de plantillas., viewed ,<https://www.scien.cx/2024/06/21/closedxml-y-el-uso-de-plantillas/>
VANCOUVER
Alonzo Vera | Sciencx - » ClosedXML y el uso de plantillas. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2024/06/21/closedxml-y-el-uso-de-plantillas/
CHICAGO
" » ClosedXML y el uso de plantillas." Alonzo Vera | Sciencx - Accessed . https://www.scien.cx/2024/06/21/closedxml-y-el-uso-de-plantillas/
IEEE
" » ClosedXML y el uso de plantillas." Alonzo Vera | Sciencx [Online]. Available: https://www.scien.cx/2024/06/21/closedxml-y-el-uso-de-plantillas/. [Accessed: ]
rf:citation
» ClosedXML y el uso de plantillas | Alonzo Vera | Sciencx | https://www.scien.cx/2024/06/21/closedxml-y-el-uso-de-plantillas/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.