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 marco .NET. 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#.
Sistema.Datos
Objetos --- trabajar con hojas de cálculo Excel como Sistema.Datos.DataSet
y Sistema.Datos.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 esto enlace.
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:
Comentarios
El resto del artículo continúa como sigue:
Siga los siguientes pasos para crear una Aplicación de Consola:
Seleccione Console App (.NET Framework) de las plantillas de proyecto mostradas.
Crear un proyecto
Nombre el proyecto "DemoApp" y haga clic en Siguiente.
Proyecto DemoApp
En la pantalla Información adicional, especifique la versión de Framework que desea utilizar. En este ejemplo utilizaremos .NET Framework 6.0.
.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 el Biblioteca IronXL utilizando los siguientes métodos:
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.
Gestor de paquetes
A continuación, desde la pestaña Examinar > busque IronXL.Excel > Instalar
Instalación de IronXL en NuGet
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
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.
Instalación NuGet de ClosedXML
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
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.
//Añadir datos y estilos a la nueva hoja de cálculo
worksheet ["A1"].Value = "Hello World";
worksheet ["A2"].Style.BottomBorder.SetColor("#ff6600");
worksheet ["A2"].Style.BottomBorder.Type = IronXL.Styles.BorderType.Double;
//Añadir datos y estilos a la nueva hoja de cálculo
worksheet ["A1"].Value = "Hello World";
worksheet ["A2"].Style.BottomBorder.SetColor("#ff6600");
worksheet ["A2"].Style.BottomBorder.Type = IronXL.Styles.BorderType.Double;
IRON VB CONVERTER ERROR developers@ironsoftware.com
Guardar archivo Excel:
//Guardar hoja de cálculo
workbook.SaveAs("NewExcelFile.xlsx");
//Guardar hoja de cálculo
workbook.SaveAs("NewExcelFile.xlsx");
IRON VB CONVERTER ERROR developers@ironsoftware.com
El archivo de salida tiene el siguiente aspecto:
NuevoArchivoExcel
salida
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.
// Cree un nuevo archivo Excel vacío.
var workbook = new XLWorkbook();
// Crea una nueva hoja de cálculo y establece el valor de la celda A1 en '¡Hola mundo!
var worksheet = workbook.Worksheets.Add("ClosedXML Features");
worksheet.Cell("A1").Value = "Hello world!";
// Guardar en archivo XLSX.
workbook.SaveAs("Spreadsheet.xlsx");
// Cree un nuevo archivo Excel vacío.
var workbook = new XLWorkbook();
// Crea una nueva hoja de cálculo y establece el valor de la celda A1 en '¡Hola mundo!
var worksheet = workbook.Worksheets.Add("ClosedXML Features");
worksheet.Cell("A1").Value = "Hello world!";
// Guardar en archivo XLSX.
workbook.SaveAs("Spreadsheet.xlsx");
' Cree un nuevo archivo Excel vacío.
Dim workbook = New XLWorkbook()
' Crea una nueva hoja de cálculo y establece el valor de la celda A1 en '¡Hola mundo!
Dim worksheet = workbook.Worksheets.Add("ClosedXML Features")
worksheet.Cell("A1").Value = "Hello world!"
' Guardar en archivo XLSX.
workbook.SaveAs("Spreadsheet.xlsx")
El archivo de salida tiene el siguiente aspecto:
Salida de archivos de hoja de cálculo
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:
//Cargar WorkBook
var workbook = WorkBook.Load(@"Spreadsheets\\sample.xlsx");
//Cargar WorkBook
var workbook = WorkBook.Load(@"Spreadsheets\\sample.xlsx");
'Cargar 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:
//Hoja abierta a la lectura
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
//Hoja abierta a la lectura
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
'Hoja abierta a la lectura
Dim worksheet = workbook.GetWorkSheet("sheetnamegoeshere")
Código para leer los valores de las celdas:
// Lee desde Rangos de células con elegancia.
foreach (var cell in worksheet ["A2:A10"])
{
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
// Lee desde Rangos de células con elegancia.
foreach (var cell in worksheet ["A2:A10"])
{
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
' Lee desde Rangos de células con elegancia.
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.
// Importar archivo Excel desde la ruta del archivo.
var workbook = new XLWorkbook("SimpleTemplate.xlsx");
// Leer hoja de trabajo del libro de trabajo utilizando el número de hoja.
var worksheet1 = workbook.Worksheet(1);
// Leer el valor de la celda de la primera hoja
var data = worksheet1.Cell("A1").GetValue<string>();
// Visualización en pantalla
Console.WriteLine(data);
// Importar archivo Excel desde la ruta del archivo.
var workbook = new XLWorkbook("SimpleTemplate.xlsx");
// Leer hoja de trabajo del libro de trabajo utilizando el número de hoja.
var worksheet1 = workbook.Worksheet(1);
// Leer el valor de la celda de la primera hoja
var data = worksheet1.Cell("A1").GetValue<string>();
// Visualización en pantalla
Console.WriteLine(data);
' Importar archivo Excel desde la ruta del archivo.
Dim workbook = New XLWorkbook("SimpleTemplate.xlsx")
' Leer hoja de trabajo del libro de trabajo utilizando el número de hoja.
Dim worksheet1 = workbook.Worksheet(1)
' Leer el valor de la celda de la primera hoja
Dim data = worksheet1.Cell("A1").GetValue(Of String)()
' Visualización en pantalla
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:
// Establecer fórmulas
worksheet ["A1"].Formula = "=Sum(B8:C12)";
worksheet ["B8"].Formula = "=C9/C11";
worksheet ["G30"].Formula = "=Max(C3:C7)";
.
// Forzar el recálculo de todos los valores de las fórmulas en todas las hojas.
workbook.EvaluateAll();
// Establecer fórmulas
worksheet ["A1"].Formula = "=Sum(B8:C12)";
worksheet ["B8"].Formula = "=C9/C11";
worksheet ["G30"].Formula = "=Max(C3:C7)";
.
// Forzar el recálculo de todos los valores de las fórmulas en todas las hojas.
workbook.EvaluateAll();
' Establecer fórmulas
worksheet ("A1").Formula = "=Sum(B8:C12)"
worksheet ("B8").Formula = "=C9/C11"
worksheet ("G30").Formula = "=Max(C3:C7)"
'.
' Forzar el recálculo de todos los valores de las fórmulas en todas las hojas.
workbook.EvaluateAll()
También puede recuperar fórmulas y sus valores:
// Obtener el valor calculado de la fórmula. p.ej. "52"
string formulaValue = worksheet ["G30"].Value;
//Obtener la fórmula como una cadena. Por ejemplo, "Max(C3:C7)"
string formulaString = worksheet ["G30"].Formula;
//Guarde los cambios con las fórmulas y los valores calculados actualizados.
workbook.Save();
// Obtener el valor calculado de la fórmula. p.ej. "52"
string formulaValue = worksheet ["G30"].Value;
//Obtener la fórmula como una cadena. Por ejemplo, "Max(C3:C7)"
string formulaString = worksheet ["G30"].Formula;
//Guarde los cambios con las fórmulas y los valores calculados actualizados.
workbook.Save();
' Obtener el valor calculado de la fórmula. p.ej. "52"
Dim formulaValue As String = worksheet ("G30").Value
'Obtener la fórmula como una cadena. Por ejemplo, "Max(C3:C7)"
Dim formulaString As String = worksheet ("G30").Formula
'Guarde los cambios con las fórmulas y los valores calculados actualizados.
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.
// Establecer fórmulas
worksheet.Cell("A1").Value = "Hello World!";
worksheet.Cell("A2").FormulaA1 = "=MID(A1, 7, 5)";
// Puede utilizar la función Evaluar para calcular directamente la fórmula,
var sum = worksheet.Evaluate("SUM(B1:B7)");
// Forzar recálculo
worksheet.RecalculateAllFormulas();
// Guardar archivo Excel
workbook.SaveAs("Formula Calculation.xlsx");
// Establecer fórmulas
worksheet.Cell("A1").Value = "Hello World!";
worksheet.Cell("A2").FormulaA1 = "=MID(A1, 7, 5)";
// Puede utilizar la función Evaluar para calcular directamente la fórmula,
var sum = worksheet.Evaluate("SUM(B1:B7)");
// Forzar recálculo
worksheet.RecalculateAllFormulas();
// Guardar archivo Excel
workbook.SaveAs("Formula Calculation.xlsx");
' Establecer fórmulas
worksheet.Cell("A1").Value = "Hello World!"
worksheet.Cell("A2").FormulaA1 = "=MID(A1, 7, 5)"
' Puede utilizar la función Evaluar para calcular directamente la fórmula,
Dim sum = worksheet.Evaluate("SUM(B1:B7)")
' Forzar recálculo
worksheet.RecalculateAllFormulas()
' Guardar archivo Excel
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 $599.
Paquetes de licencias IronXL
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.
Licencia ClosedXML
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 el precio 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