Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
Las aplicaciones informáticas actuales requieren la capacidad de crear bases de datos y generar informes utilizando archivos Excel. Hoy en día existen muchas bibliotecas que permiten a los usuarios hacer esto sin necesidad de Microsoft Excel.
En este artículo, vamos a discutir y comparar cómo trabajar con documentos de Microsoft Excel mediante programación en tecnologías C# .NET utilizando dos de las librerías más populares, IronXL y ClosedXML para leer, manipular y escribir informes Excel.
Tanto IronXL como ClosedXML proporcionan métodos para crear, editar y leer documentos Excel en el .NET Framework. La siguiente cuestión es decidir qué biblioteca de C# Excel es la más adecuada para su proyecto. Este artículo le ayudará a decidir cuál es la mejor opción para sus aplicaciones.
Veamos primero lo que ofrecen ambas bibliotecas y luego pasemos a la comparación propiamente dicha.
IronXL es una biblioteca .NET que facilita la lectura y edición de documentos de Microsoft Excel con C#. IronXL.Excel es una biblioteca de software .NET independiente para leer una amplia gama de formatos de hojas de cálculo. No requiere que Microsoft Excel esté instalado, ni depende de Interop.
IronXL es una intuitiva API de C# que permite leer, editar y crear archivos de hojas de cálculo Excel en .NET con un rendimiento rapidísimo. IronXL es totalmente compatible con .NET Core, .NET Framework, Xamarin, Mobile, Linux, macOS y Azure.
IronXL es una biblioteca líder de hojas de cálculo de .NET Core y .NET Framework Excel para C#.
System.Data
Objetos --- trabajar con hojas de cálculo Excel como System.Data.DataSet
y System.Data.DataTable
objetos.Estilización --- estilos visuales de celda, fuente, tamaño, patrón de fondo, borde, alineación y formatos numéricos.
Más características de IronXL pueden ser exploradas usando estoenlace.
ClosedXML es una biblioteca .NET para leer, manipular y escribir Excel 2007+.(.xlsx, .xlsm) archivos. Su objetivo es proporcionar una interfaz intuitiva y fácil de usar para tratar con la biblioteca OpenXML subyacente. El .xlsx es una extensión de archivo para un formato de hoja de cálculo API subyacente OpenXML utilizado por Microsoft Excel. Los archivos .xlsm admiten macros. Los .xltm son archivos de plantilla habilitados para macros. El formato .xls es un formato binario propietario, mientras que .xlsx se basa en el formato OpenXML de Office.
ClosedXML es una librería .NET para la generación de informes en Microsoft Excel sin necesidad de que Excel esté instalado en la máquina que ejecuta el código.
ClosedXML tiene una interfaz fácil de usar con amplias funciones API para manejar la creación y extracción de contenido en Excel. Con estas llamadas a la API y la solicitud de extracción, puede modificar cada pequeño detalle en la hoja de Excel o workbook.\
A continuación se enumeran todas las características:
Fórmulas
Validación
Hiper-enlaces
Protección(Nivel de hoja y celda)
**Formato condicional
Paneles de congelación
Tablas
Gamas
Estilismo
Configurar página(Impresión)
**Filtros automáticos
Comentarios
El resto del artículo continúa como sigue:
Crear una aplicación de consola
Instalación de la librería IronXL C#
Instalación de ClosedXML
Crear y guardar un nuevo libro y hoja de Excel
Leer archivo Excel
Trabajar con fórmulas de Excel
Licencias
Siga los siguientes pasos para crear una Aplicación de Consola:
Nombre el proyecto "DemoApp" y haga clic en Siguiente.
En la pantalla Información adicional, especifique la versión de Framework que desea utilizar. En este ejemplo utilizaremos .NET Framework 6.0.
Haga clic en Crear para completar el proceso.
Ahora el proyecto está creado y estamos casi listos para probar las bibliotecas. Sin embargo, aún tenemos que instalarlos e integrarlos en nuestro proyecto. Primero instalemos IronXL.
Puede descargar e instalar elBiblioteca IronXL utilizando los siguientes métodos:
Uso de Visual Studio con paquetes NuGet.
Instalación manual de la DLL.
Analicemos cada uno de ellos.
Visual Studio proporciona el gestor de paquetes NuGet para instalar paquetes NuGet en sus proyectos. Puede acceder a él a través del menú Proyecto o haciendo clic con el botón derecho del ratón en el Explorador de soluciones.
A continuación, desde la pestaña Examinar > busque IronXL.Excel > Instalar
Otra forma de descargar e instalar la Biblioteca IronXL C# es hacer uso de los siguientes pasos para instalar el paquete IronXL NuGet a través del Símbolo del sistema del desarrollador.
Abra el Instructor de comandos para desarrolladores --- que suele encontrarse en la carpeta de Visual Studio.
Escribe el siguiente comando:
Install-Package IronXL.Excel
En el Explorador de soluciones, haga clic con el botón derecho en el archivo Program.cs y, a continuación, haga clic en Ver código.
using IronXL;
using IronXL;
Imports IronXL
Todo hecho! IronXL está descargado, instalado y listo para usar. Sin embargo, antes debemos instalar ClosedXML.
Para instalar el paquete ClosedXML, puede descargarlo directamente desde NuGet o desde NuGet Package Manager/Console en el proyecto.
Para instalar directamente ClosedXML, haga clic en este enlace enlace.
Abra el gestor de paquetes NuGet desde el explorador de soluciones del proyecto, busque ClosedXML y haga clic en instalar.
O:
Abra el Instructor de comandos para desarrolladores --- que suele encontrarse en la carpeta de Visual Studio.
Escribe el siguiente comando:
PM> Install-Package ClosedXML
En el Explorador de soluciones, haga clic con el botón derecho en el archivo Program.cs y, a continuación, haga clic en Ver código.
using ClosedXML.Excel;
using ClosedXML.Excel;
Imports ClosedXML.Excel
Un libro de trabajo es un archivo Excel que contiene varias hojas de trabajo con filas y columnas. Ambas bibliotecas permiten crear un nuevo libro y hojas de Excel. Veamos el código paso a paso.
No podría ser más fácil crear un nuevo Libro de Excel usando IronXL. Sólo se necesita una línea de código. Sí, de verdad. Añada el siguiente código a su función static void main en el archivo Program.cs:
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Ambos XLS(versión anterior del archivo Excel) y XLSX(versión actual y más reciente del archivo) formatos de archivo pueden crearse con IronXL.
Además, es aún más sencillo crear una Hoja de cálculo por defecto:
var worksheet = workbook.CreateWorkSheet("IronXL Features");
var worksheet = workbook.CreateWorkSheet("IronXL Features");
Dim worksheet = workbook.CreateWorkSheet("IronXL Features")
Ahora puede utilizar la variable de hoja de cálculo para establecer valores de celda y hacer casi todo lo que puede hacer un archivo de Excel.
//Add data and styles to the new worksheet
worksheet ["A1"].Value = "Hello World";
worksheet ["A2"].Style.BottomBorder.SetColor("#ff6600");
worksheet ["A2"].Style.BottomBorder.Type = IronXL.Styles.BorderType.Double;
//Add data and styles to the new worksheet
worksheet ["A1"].Value = "Hello World";
worksheet ["A2"].Style.BottomBorder.SetColor("#ff6600");
worksheet ["A2"].Style.BottomBorder.Type = IronXL.Styles.BorderType.Double;
'Add data and styles to the new worksheet
worksheet ("A1").Value = "Hello World"
worksheet ("A2").Style.BottomBorder.SetColor("#ff6600")
worksheet ("A2").Style.BottomBorder.Type = IronXL.Styles.BorderType.Double
Guardar archivo Excel:
//Save spreadsheet
workbook.SaveAs("NewExcelFile.xlsx");
//Save spreadsheet
workbook.SaveAs("NewExcelFile.xlsx");
'Save spreadsheet
workbook.SaveAs("NewExcelFile.xlsx")
El archivo de salida tiene el siguiente aspecto:
También puedes crear archivos Excel(.xlsx, .xlsm) fácilmente utilizando ClosedXML. El siguiente código es un ejemplo típico que sirve para generar un simple fichero Excel y guardarlo. Puede añadir una nueva hoja de muestra a su libro de trabajo y asignar valores a las celdas de su aplicación Excel.
// Create a new empty Excel file.
var workbook = new XLWorkbook();
// Create a new worksheet and set cell A1 value to 'Hello world!'.
var worksheet = workbook.Worksheets.Add("ClosedXML Features");
worksheet.Cell("A1").Value = "Hello world!";
// Save to XLSX file.
workbook.SaveAs("Spreadsheet.xlsx");
// Create a new empty Excel file.
var workbook = new XLWorkbook();
// Create a new worksheet and set cell A1 value to 'Hello world!'.
var worksheet = workbook.Worksheets.Add("ClosedXML Features");
worksheet.Cell("A1").Value = "Hello world!";
// Save to XLSX file.
workbook.SaveAs("Spreadsheet.xlsx");
' Create a new empty Excel file.
Dim workbook = New XLWorkbook()
' Create a new worksheet and set cell A1 value to 'Hello world!'.
Dim worksheet = workbook.Worksheets.Add("ClosedXML Features")
worksheet.Cell("A1").Value = "Hello world!"
' Save to XLSX file.
workbook.SaveAs("Spreadsheet.xlsx")
El archivo de salida tiene el siguiente aspecto:
Ambas bibliotecas pueden abrir y leer documentos Excel existentes. Veamos el código de ejemplo.
La clase IronXL WorkBook representa una hoja de Excel. Para abrir un archivo Excel utilizando C#, utilizamos WorkBook.Load y especificamos la ruta del archivo(.xlsx). El siguiente código de una línea se utiliza para abrir el archivo para su lectura:
//Load WorkBook
var workbook = WorkBook.Load(@"Spreadsheets\\sample.xlsx");
//Load WorkBook
var workbook = WorkBook.Load(@"Spreadsheets\\sample.xlsx");
'Load WorkBook
Dim workbook = WorkBook.Load("Spreadsheets\\sample.xlsx")
Cada WorkBook puede tener varias hojas de trabajo en el documento Excel. Si el libro contiene varias hojas de cálculo, recupérelas por nombre de la siguiente manera:
//Open Sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
//Open Sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
'Open Sheet for reading
Dim worksheet = workbook.GetWorkSheet("sheetnamegoeshere")
Código para leer los valores de las celdas:
// Read from Ranges of cells elegantly.
foreach (var cell in worksheet ["A2:A10"])
{
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
// Read from Ranges of cells elegantly.
foreach (var cell in worksheet ["A2:A10"])
{
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
' Read from Ranges of cells elegantly.
For Each cell In worksheet ("A2:A10")
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text)
Next cell
ClosedXML permite la lectura de archivos previamente creados desde su aplicación C#. Puede importar un archivo Excel utilizando el siguiente código.
// Import Excel File from file's path.
var workbook = new XLWorkbook("SimpleTemplate.xlsx");
// Read worksheet from workbook using sheet number.
var worksheet1 = workbook.Worksheet(1);
// Read cell value from first sheet
var data = worksheet1.Cell("A1").GetValue<string>();
// Display on screen
Console.WriteLine(data);
// Import Excel File from file's path.
var workbook = new XLWorkbook("SimpleTemplate.xlsx");
// Read worksheet from workbook using sheet number.
var worksheet1 = workbook.Worksheet(1);
// Read cell value from first sheet
var data = worksheet1.Cell("A1").GetValue<string>();
// Display on screen
Console.WriteLine(data);
' Import Excel File from file's path.
Dim workbook = New XLWorkbook("SimpleTemplate.xlsx")
' Read worksheet from workbook using sheet number.
Dim worksheet1 = workbook.Worksheet(1)
' Read cell value from first sheet
Dim data = worksheet1.Cell("A1").GetValue(Of String)()
' Display on screen
Console.WriteLine(data)
Las fórmulas de Excel son una de las características más importantes del trabajo con Excel. Ambas bibliotecas disponen de un potente motor de cálculo de fórmulas. Permiten trabajar con fórmulas y aplicarlas fácilmente a las celdas.
Después de cargar el libro de trabajo y la hoja de cálculo, el siguiente ejemplo de código puede utilizarse para realizar cambios en las fórmulas o aplicarse a celdas específicas. El código es el siguiente:
// Set Formulas
worksheet ["A1"].Formula = "=Sum(B8:C12)";
worksheet ["B8"].Formula = "=C9/C11";
worksheet ["G30"].Formula = "=Max(C3:C7)";
.
// Force recalculating all formula values in all sheets.
workbook.EvaluateAll();
// Set Formulas
worksheet ["A1"].Formula = "=Sum(B8:C12)";
worksheet ["B8"].Formula = "=C9/C11";
worksheet ["G30"].Formula = "=Max(C3:C7)";
.
// Force recalculating all formula values in all sheets.
workbook.EvaluateAll();
' Set Formulas
worksheet ("A1").Formula = "=Sum(B8:C12)"
worksheet ("B8").Formula = "=C9/C11"
worksheet ("G30").Formula = "=Max(C3:C7)"
'.
' Force recalculating all formula values in all sheets.
workbook.EvaluateAll()
También puede recuperar fórmulas y sus valores:
// Get the formula's calculated value. e.g. "52"
string formulaValue = worksheet ["G30"].Value;
//Get the formula as a string. e.g. "Max(C3:C7)"
string formulaString = worksheet ["G30"].Formula;
//Save your changes with updated formulas and calculated values.
workbook.Save();
// Get the formula's calculated value. e.g. "52"
string formulaValue = worksheet ["G30"].Value;
//Get the formula as a string. e.g. "Max(C3:C7)"
string formulaString = worksheet ["G30"].Formula;
//Save your changes with updated formulas and calculated values.
workbook.Save();
' Get the formula's calculated value. e.g. "52"
Dim formulaValue As String = worksheet ("G30").Value
'Get the formula as a string. e.g. "Max(C3:C7)"
Dim formulaString As String = worksheet ("G30").Formula
'Save your changes with updated formulas and calculated values.
workbook.Save()
ClosedXML no admite todas las fórmulas y probablemente obtendrás un error desagradable si la fórmula no es compatible o si hay un error en la fórmula. Por favor, pruebe sus fórmulas antes de pasar a producción. Veamos cómo utilizarlos.
// Set Formulas
worksheet.Cell("A1").Value = "Hello World!";
worksheet.Cell("A2").FormulaA1 = "=MID(A1, 7, 5)";
// You can use Evaluate function to directly calculate formula,
var sum = worksheet.Evaluate("SUM(B1:B7)");
// Force recalculation
worksheet.RecalculateAllFormulas();
// Save Excel file
workbook.SaveAs("Formula Calculation.xlsx");
// Set Formulas
worksheet.Cell("A1").Value = "Hello World!";
worksheet.Cell("A2").FormulaA1 = "=MID(A1, 7, 5)";
// You can use Evaluate function to directly calculate formula,
var sum = worksheet.Evaluate("SUM(B1:B7)");
// Force recalculation
worksheet.RecalculateAllFormulas();
// Save Excel file
workbook.SaveAs("Formula Calculation.xlsx");
' Set Formulas
worksheet.Cell("A1").Value = "Hello World!"
worksheet.Cell("A2").FormulaA1 = "=MID(A1, 7, 5)"
' You can use Evaluate function to directly calculate formula,
Dim sum = worksheet.Evaluate("SUM(B1:B7)")
' Force recalculation
worksheet.RecalculateAllFormulas()
' Save Excel file
workbook.SaveAs("Formula Calculation.xlsx")
La propiedad FormulaA1 es con referencia a la celda A1. Si está haciendo referencia a alguna otra celda debe añadirla a la propiedad Fórmula. Por ejemplo, FormulaC2.
IronXL es una librería de C# Excel abiertamente comercial. Es gratuito para el desarrollo y siempre se puede obtener una licencia para su implantación comercial.Licencias disponibles para uso en un solo proyecto, desarrolladores individuales, agencias y corporaciones globales, así como SaaS y redistribución OEM. Todas las licencias incluyen una garantía de devolución del dinero de 30 días, un año de asistencia técnica y actualizaciones del producto, validez para desarrollo/montaje/producción y también una licencia permanente.(compra única). El paquete Lite parte de $749.
En el caso de ClosedXML, las aplicaciones que utilicen este archivo DLL no requieren una licencia independiente, ni para uso individual ni para uso comercial. Para que cualquier solución funcione con un ClosedXML, basta con instalar el paquete NuGet "ClosedXML" disponible públicamente. ClosedXML está bajo la Licencia MIT. La licencia MIT es una licencia permisiva breve y sencilla cuyas condiciones sólo exigen la conservación de los avisos de copyright y licencia. Las obras bajo licencia, las modificaciones y las obras de mayor envergadura pueden distribuirse en condiciones diferentes y sin código fuente.
IronXL es una completa biblioteca que ofrece todo lo necesario para manipular un archivo Excel. IronXL permite a los desarrolladores leer, generar y editar Excel(y otros archivos de hojas de cálculo) en aplicaciones y sitios web .NET. Proporciona un enfoque rápido y natural para trabajar con Excel y otros archivos de hojas de cálculo en C#.
ClosedXML es una biblioteca .NET para leer y escribir archivos Excel, que facilita a los desarrolladores la creación de archivos Excel 2007+. Proporciona una forma agradable orientada a objetos para manipular los archivos(similar a VBA) sin tener que lidiar con las complicaciones de los documentos XML. Puede ser utilizado por cualquier lenguaje .NET como C# y Visual Basic(VB). Ofrece características de OpenXML, pero algunas aún no están implementadas. Por ejemplo, macros, incrustación y gráficos.
IronXL también es útil en otras operaciones de Excel como formatos de datos de celdas, ordenación, estilo de celdas. También puede trabajar con hojas de cálculo Excel como System.Data.DataSet
y System.Data.DataTable
. Es compatible con aplicaciones basadas en consola, servidor web y escritorio. También es compatible con todas las plataformas de sistema operativo.
ClosedXML es una librería ligera para leer, manipular y escribir aplicaciones Excel usando la API OpenXML que es rápida y fácil de implementar. Ayuda en todas las operaciones principales de Excel como Configurar Página, Congelar Paneles, Hipervínculos, Tablas y Formato Condicional. No tiene sobrecarga ni problemas de bajo rendimiento.
En comparación, tanto IronXL como ClosedXML son rápidos y precisos cuando se trata de hojas de cálculo Excel. No necesitan instalación ni licencia de Microsoft Office a la hora de crear informes Excel. Sin embargo, IronXL tiene una ventaja sobre ClosedXML, ya que ClosedXML no es seguro para los hilos. IronXL es fácil de usar y ofrece la posibilidad de convertir otros formatos a XLSX, y también de XLSX a otros formatos como CSV y HTML. ClosedXML no permite esta conversión. Esta interconversión permite a los usuarios la flexibilidad de trabajar con otros formatos de archivo con facilidad.
Ahora puedes conseguir cinco productos Iron por elprecio de sólo dos en paquete lite para 1 desarrollador($1498) e ilimitado por 5.998 $ y ahorra hasta un 60%.
9 productos API .NET para sus documentos de oficina