Trabajo con Excel en C# (.NET): guía detallada sobre EPPlus y ClosedXML
En el desarrollo moderno en la plataforma .NET, a menudo surge la necesidad de crear, leer y editar hojas de cálculo de Excel mediante programación. Esto puede incluir la generación de informes, la importación de datos desde bases de datos, la exportación de estadísticas o la automatización de procesos empresariales. En este artículo, analizaremos las dos bibliotecas más populares y potentes para trabajar con Excel en C#: EPPlus y ClosedXML. Ambas bibliotecas trabajan con el formato Open XML (XLSX) y no requieren tener instalado Microsoft Office.
¿Por qué usar bibliotecas para Excel?
La creación manual de archivos XML para el formato XLSX es extremadamente laboriosa y propensa a errores. Bibliotecas como EPPlus y ClosedXML proporcionan una API de alto nivel que oculta toda la complejidad de trabajar con Open XML. Permiten:
- Crear archivos de Excel desde cero con control total sobre el formato.
- Leer datos de tablas existentes con soporte para varios tipos de celdas.
- Editar celdas, filas, columnas y hojas.
- Aplicar estilos, fuentes, colores, bordes y formato condicional.
- Trabajar con fórmulas, tablas dinámicas y gráficos.
- Exportar datos a PDF (disponible en la versión paga de EPPlus).
Biblioteca EPPlus
EPPlus es una de las bibliotecas más antiguas y funcionales para trabajar con Excel en .NET. Soporta todas las capacidades principales del formato XLSX, incluidos gráficos, tablas dinámicas, formato condicional y macros VBA. A partir de la versión 5, EPPlus cambió a un modelo de licencia LGPL con restricciones adicionales para uso comercial (gratuito para proyectos con ingresos inferiores a 1 millón de dólares al año).
Instalación de EPPlus
Puede instalar la biblioteca a través del Administrador de paquetes NuGet:
Install-Package EPPlusO mediante .NET CLI:
dotnet add package EPPlusEjemplo: creación de un archivo Excel simple con EPPlus
El siguiente código demuestra la creación de un archivo Excel con encabezados y datos, así como la aplicación de formato básico:
using OfficeOpenXml;using OfficeOpenXml.Style;using System.Drawing;
public void CreateExcelWithEPPlus(){ // Establecer el contexto de licencia (obligatorio para EPPlus 5+) ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
using (var package = new ExcelPackage()) { // Agregar una nueva hoja var worksheet = package.Workbook.Worksheets.Add("Empleados");
// Encabezados worksheet.Cells[1, 1].Value = "Nombre"; worksheet.Cells[1, 2].Value = "Cargo"; worksheet.Cells[1, 3].Value = "Salario";
// Estilo de los encabezados using (var range = worksheet.Cells[1, 1, 1, 3]) { range.Style.Font.Bold = true; range.Style.Fill.PatternType = ExcelFillStyle.Solid; range.Style.Fill.BackgroundColor.SetColor(Color.LightBlue); range.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center; }
// Datos worksheet.Cells[2, 1].Value = "Iván Ivanov"; worksheet.Cells[2, 2].Value = "Desarrollador"; worksheet.Cells[2, 3].Value = 150000;
worksheet.Cells[3, 1].Value = "María Petrova"; worksheet.Cells[3, 2].Value = "Analista"; worksheet.Cells[3, 3].Value = 120000;
// Formato de números worksheet.Cells[2, 3, 3, 3].Style.Numberformat.Format = "#,##0";
// Autoajuste del ancho de columnas worksheet.Cells[1, 1, 3, 3].AutoFitColumns();
// Guardar el archivo var fileInfo = new FileInfo("employees.xlsx"); package.SaveAs(fileInfo); }}Biblioteca ClosedXML
ClosedXML es una biblioteca ligera y completamente gratuita (licencia