Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
La capacidad de trabajar con archivos Excel para generar informes y crear bases de datos se ha convertido en algo esencial para las aplicaciones informáticas actuales. Hay muchas bibliotecas disponibles que permiten a los usuarios hacer esto sin necesidad de Microsoft Excel.
En este artículo, vamos a discutir cómo trabajar con documentos de Microsoft Excel mediante programación en C#.NET utilizando dos de las librerías más populares de Hojas de Cálculo Excel: IronXL y GemBox.Spreadsheet.
IronXL y GemBox.Spreadsheet proporcionan métodos para crear, editar y leer documentos Excel en aplicaciones .NET. Entonces, ¿cómo decidir cuál es el más adecuado para su proyecto? Este artículo comparará ambas bibliotecas y le ayudará a decidir cuál es la mejor opción para sus proyectos.
IronXL es una biblioteca .NET C# que facilita la lectura y edición de una amplia gama de formatos de hojas de cálculo. No requiere que Microsoft Excel esté instalado y no requiere Interop. IronXL es totalmente compatible con .NET Core, .NET Framework, Xamarin, Mobile, Linux, macOS y Azure.
System.Data
- trabaja con hojas de cálculo Excel WorkBook como objetos System.Data.DataSet
y System.Data.DataTable
.GemBox.Spreadsheet es una librería que le permite crear, leer, escribir, editar, convertir e imprimir archivos de hojas de cálculo en sus aplicaciones .NET C#. Es hasta 250 veces más rápido que la automatización de Microsoft Excel!
System.Data.DataSet
y System.Data.DataTable
.Imprimir hojas de cálculo Excel
El resto del artículo continúa como sigue:
Los siguientes pasos le ayudarán a crear una aplicación de consola:
A continuación, seleccione Console App (.NET Framework) C# de las plantillas de proyecto mostradas.
Aplicación de consola
Aquí, especifique la versión de Framework que desea utilizar. Se recomienda la última.
Configurar proyecto
Haga clic en Crear para completar el proceso.
Ahora el proyecto estará creado y listo para su uso.
La biblioteca IronXL puede descargarse e instalarse mediante los siguientes métodos:
Visual Studio 2022 proporciona el gestor de paquetes NuGet para instalar paquetes NuGet en sus proyectos. Puede acceder a él de varias formas: a través del menú Proyecto o haciendo clic con el botón derecho del ratón en su proyecto en el Explorador de soluciones.
Gestor de paquetes
Otro método para descargar e instalar IronXL Library es utilizar la Consola del Administrador de Paquetes NuGet.
Abra la consola Instrucción de comando para desarrolladores.
Escribe el siguiente comando:
Install-Package IronXL.Excel
using IronXL;
using IronXL;
Imports IronXL
Utilice el siguiente comando en NuGet Package Manager para instalar GemBox.Spreadsheet.
Install-Package GemBox.Spreadsheet
Buscar en GemBox.Spreadsheet
También puede descargar y ejecute el instalador.
A continuación, abra el archivo program.cs como antes y añada las líneas de código debajo de la sentencia using que añadimos en la sección anterior:
using Gembox.Spreadsheet;
// Si utiliza la versión Profesional, introduzca su clave de serie a continuación.
SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY");
using Gembox.Spreadsheet;
// Si utiliza la versión Profesional, introduzca su clave de serie a continuación.
SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY");
Imports Gembox.Spreadsheet
' Si utiliza la versión Profesional, introduzca su clave de serie a continuación.
SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY")
Un libro de Excel puede contener varias hojas de cálculo. Ambas bibliotecas permiten crear libros de Excel que contengan una o varias hojas de cálculo. Veamos cómo lo consigue cada biblioteca.
Es muy fácil crear un nuevo Libro de Excel usando IronXL!
Añada el siguiente código a su archivo Program.cs:
var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
var worksheet = workbook.CreateWorkSheet("IronXL Features");
//Guardar hoja de cálculo
workbook.SaveAs("NewExcelFile.xlsx");
var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
var worksheet = workbook.CreateWorkSheet("IronXL Features");
//Guardar hoja de cálculo
workbook.SaveAs("NewExcelFile.xlsx");
Dim workbook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim worksheet = workbook.CreateWorkSheet("IronXL Features")
'Guardar hoja de cálculo
workbook.SaveAs("NewExcelFile.xlsx")
Crear libros de Excel también es muy fácil en GemBox, como se muestra en el siguiente fragmento de código:
// Cree un nuevo archivo Excel vacío.
var workbook = new ExcelFile();
// Crea una nueva hoja de cálculo y establece el valor de la celda A1 en '¡Hola mundo!
workbook.Worksheets.Add("Sheet 1").Cells ["A1"].Value = "Hello world!";
// Guardar en archivo XLSX.
workbook.Save("Spreadsheet.xlsx");
// Cree un nuevo archivo Excel vacío.
var workbook = new ExcelFile();
// Crea una nueva hoja de cálculo y establece el valor de la celda A1 en '¡Hola mundo!
workbook.Worksheets.Add("Sheet 1").Cells ["A1"].Value = "Hello world!";
// Guardar en archivo XLSX.
workbook.Save("Spreadsheet.xlsx");
' Cree un nuevo archivo Excel vacío.
Dim workbook = New ExcelFile()
' Crea una nueva hoja de cálculo y establece el valor de la celda A1 en '¡Hola mundo!
workbook.Worksheets.Add("Sheet 1").Cells ("A1").Value = "Hello world!"
' Guardar en archivo XLSX.
workbook.Save("Spreadsheet.xlsx")
Tanto IronXL como GemBox son capaces de leer datos de archivos Excel existentes. Veamos el código de ejemplo de cada una de las bibliotecas una por una.
La clase WorkBook
en IronXL representa una hoja de Excel. Para abrir y leer un archivo Excel en C#, utilizamos WorkBook.Load
y especificamos la ruta exacta del archivo Excel (.xlsx).
El siguiente código carga una hoja de cálculo:
//Cargar WorkBook
var workbook = WorkBook.Load(@"Spreadsheets\\sample.xlsx");
//Hoja abierta a la lectura
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
//Cargar WorkBook
var workbook = WorkBook.Load(@"Spreadsheets\\sample.xlsx");
//Hoja abierta a la lectura
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
'Cargar WorkBook
Dim workbook = WorkBook.Load("Spreadsheets\\sample.xlsx")
'Hoja abierta a la lectura
Dim worksheet = workbook.GetWorkSheet("sheetnamegoeshere")
Leemos los datos de cada celda de la hoja de cálculo con las siguientes líneas de código:
// 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
GemBox.Spreadsheet permite la lectura rápida de archivos Excel desde su aplicación C#. El siguiente código ilustra cómo abrir y leer un fichero.
var workbook = ExcelFile.Load("SimpleTemplate.xlsx");
var worksheet = workbook.Worksheets["sheetnamegoeshere"];
foreach (var cell in worksheet.Cells.GetSubrange("A2", "A20"))
{
Console.WriteLine("Cell {0} has value '{1}'", cell.Name, cell.Value);
}
var workbook = ExcelFile.Load("SimpleTemplate.xlsx");
var worksheet = workbook.Worksheets["sheetnamegoeshere"];
foreach (var cell in worksheet.Cells.GetSubrange("A2", "A20"))
{
Console.WriteLine("Cell {0} has value '{1}'", cell.Name, cell.Value);
}
Dim workbook = ExcelFile.Load("SimpleTemplate.xlsx")
Dim worksheet = workbook.Worksheets("sheetnamegoeshere")
For Each cell In worksheet.Cells.GetSubrange("A2", "A20")
Console.WriteLine("Cell {0} has value '{1}'", cell.Name, cell.Value)
Next cell
La aplicación de fórmulas es una de las funciones más importantes de Excel. Ambas bibliotecas ofrecen un potente motor de cálculo de fórmulas. Las fórmulas pueden recalcularse y guardarse en celdas.
Una vez cargados el libro y la hoja de cálculo, el código siguiente puede utilizarse para realizar cambios en las fórmulas o aplicar nuevas fórmulas a celdas específicas:
// 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"
var formulaValue = worksheet["G30"].Value;
//Obtener la fórmula como una cadena. Por ejemplo, "Max(C3:C7)"
var 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"
var formulaValue = worksheet["G30"].Value;
//Obtener la fórmula como una cadena. Por ejemplo, "Max(C3:C7)"
var 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 = worksheet("G30").Value
'
'Obtener la fórmula como una cadena. Por ejemplo, "Max(C3:C7)"
Dim formulaString = worksheet("G30").Formula
'Guarde los cambios con las fórmulas y los valores calculados actualizados.
workbook.Save()
GemBox.Spreadsheet permite utilizar un amplio conjunto de funciones de fórmulas de Excel, incluidas funciones matemáticas, estadísticas, lógicas, de búsqueda, financieras y muchas más. Veamos cómo utilizarlos.
// Establecer fórmulas
worksheet.Cells ["A2"].Value = "=1 + 1";
worksheet.Cells ["A3"].Value = "=3 * (2 - 8)";
worksheet.Cells ["A10"].Value = "=SIGN(B9)";
worksheet.Cells ["A11"].Value = "=SUM(B2:B10)";
workbook.Save("Formula Calculation.xlsx");
// Establecer fórmulas
worksheet.Cells ["A2"].Value = "=1 + 1";
worksheet.Cells ["A3"].Value = "=3 * (2 - 8)";
worksheet.Cells ["A10"].Value = "=SIGN(B9)";
worksheet.Cells ["A11"].Value = "=SUM(B2:B10)";
workbook.Save("Formula Calculation.xlsx");
' Establecer fórmulas
worksheet.Cells ("A2").Value = "=1 + 1"
worksheet.Cells ("A3").Value = "=3 * (2 - 8)"
worksheet.Cells ("A10").Value = "=SIGN(B9)"
worksheet.Cells ("A11").Value = "=SUM(B2:B10)"
workbook.Save("Formula Calculation.xlsx")
Tanto IronXL como GemBox.Spreadsheet ofrecen la posibilidad de convertir entre diferentes tipos de archivos de hoja de cálculo.
var workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
var ws = workbook.DefaultWorkSheet;
workbook.SaveAs("CsvToExcelConversion.xlsx");
var workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
var ws = workbook.DefaultWorkSheet;
workbook.SaveAs("CsvToExcelConversion.xlsx");
Dim workbook = WorkBook.LoadCSV("test.csv", fileFormat:= ExcelFileFormat.XLSX, ListDelimiter:= ",")
Dim ws = workbook.DefaultWorkSheet
'
workbook.SaveAs("CsvToExcelConversion.xlsx")
var workbook = WorkBook.Load("test.xlsx");
//Así es como se puede exportar el libro de trabajo a formato .xlsm
workbook.SaveAs("test.xlsm");
var workbook = WorkBook.Load("test.xlsx");
//Así es como se puede exportar el libro de trabajo a formato .xlsm
workbook.SaveAs("test.xlsm");
Dim workbook = WorkBook.Load("test.xlsx")
'
'Así es como se puede exportar el libro de trabajo a formato .xlsm
workbook.SaveAs("test.xlsm")
var workbook = WorkBook.Load("test.xlsx");
var options = new HtmlExportOptions()
{
//Así es como podemos hacer visibles los números de fila/columna en un documento html
OutputRowNumbers = true,
OutputColumnHeaders = true,
OutputHiddenColumns = true,
//Así es como podemos hacer visibles las filas/columnas ocultas en un documento html
OutputHiddenRows = true,
OutputLeadingSpacesAsNonBreaking = true
};
//Así es como podemos exportar el libro de trabajo al archivo HTML
workbook.ExportToHtml("workbook.html",options);
var workbook = WorkBook.Load("test.xlsx");
var options = new HtmlExportOptions()
{
//Así es como podemos hacer visibles los números de fila/columna en un documento html
OutputRowNumbers = true,
OutputColumnHeaders = true,
OutputHiddenColumns = true,
//Así es como podemos hacer visibles las filas/columnas ocultas en un documento html
OutputHiddenRows = true,
OutputLeadingSpacesAsNonBreaking = true
};
//Así es como podemos exportar el libro de trabajo al archivo HTML
workbook.ExportToHtml("workbook.html",options);
Dim workbook = WorkBook.Load("test.xlsx")
'
Dim options = New HtmlExportOptions() With {
.OutputRowNumbers = True,
.OutputColumnHeaders = True,
.OutputHiddenColumns = True,
.OutputHiddenRows = True,
.OutputLeadingSpacesAsNonBreaking = True
}
'
'Así es como podemos exportar el libro de trabajo al archivo HTML
workbook.ExportToHtml("workbook.html",options)
var workbook = ExcelFile.Load("ComplexTemplate.xlsx");
workbook.Save("Convert.pdf", new PdfSaveOptions(){SelectionType = SelectionType.EntireFile});
var workbook = ExcelFile.Load("ComplexTemplate.xlsx");
workbook.Save("Convert.pdf", new PdfSaveOptions(){SelectionType = SelectionType.EntireFile});
Dim workbook = ExcelFile.Load("ComplexTemplate.xlsx")
workbook.Save("Convert.pdf", New PdfSaveOptions() With {.SelectionType = SelectionType.EntireFile})
// Carga un archivo Excel en el objeto ExcelFile.
var workbook = ExcelFile.Load("CombinedTemplate.xlsx");
// Crear opciones de guardado de imágenes.
var imageOptions = new ImageSaveOptions(ImageSaveFormat.Png)
{
PageNumber = 0, // Seleccione la primera página de Excel.
Width = 1240, // Ajuste la anchura de la imagen.
CropToContent = true // Exportar sólo el contenido de la hoja.
};
// Guardar el objeto ExcelFile en un archivo PNG.
workbook.Save("Output.png", imageOptions);
// Carga un archivo Excel en el objeto ExcelFile.
var workbook = ExcelFile.Load("CombinedTemplate.xlsx");
// Crear opciones de guardado de imágenes.
var imageOptions = new ImageSaveOptions(ImageSaveFormat.Png)
{
PageNumber = 0, // Seleccione la primera página de Excel.
Width = 1240, // Ajuste la anchura de la imagen.
CropToContent = true // Exportar sólo el contenido de la hoja.
};
// Guardar el objeto ExcelFile en un archivo PNG.
workbook.Save("Output.png", imageOptions);
' Carga un archivo Excel en el objeto ExcelFile.
Dim workbook = ExcelFile.Load("CombinedTemplate.xlsx")
' Crear opciones de guardado de imágenes.
Dim imageOptions = New ImageSaveOptions(ImageSaveFormat.Png) With {
.PageNumber = 0,
.Width = 1240,
.CropToContent = True
}
' Guardar el objeto ExcelFile en un archivo PNG.
workbook.Save("Output.png", imageOptions)
ExcelFile.Load("CSVTemplate.csv").Save("Convert.xlsx");
ExcelFile.Load("CSVTemplate.csv").Save("Convert.xlsx");
ExcelFile.Load("CSVTemplate.csv").Save("Convert.xlsx")
Del mismo modo, puede convertir entre archivos XLS, XLSX, ODS, CSV y HTML desde sus aplicaciones C# utilizando GemBox.Spreadsheet.
IronXL es una biblioteca comercial de C# Excel. Es totalmente gratuito para fines de desarrollo, pero debe obtenerse una licencia para su implantación comercial. Todos los IronXL Licencias están disponibles para su uso con un solo proyecto, desarrolladores individuales, agencias y corporaciones globales, con o sin SaaS y redistribución OEM. Cada licencia incluye una garantía de devolución del dinero de 30 días, junto con un año de soporte y actualizaciones del producto, validez para desarrollo/establecimiento/producción y una licencia perpetua. (compra única). La licencia lite comienza en $599.
GemBox.Spreadsheet también es una biblioteca comercial. Puede utilizarse gratuitamente tanto en aplicaciones personales como comerciales. Sin embargo, también puede autorizarse para uso profesional. Su licencias incluyen el uso para desarrolladores individuales, pequeños equipos y grandes empresas. Ofrece implantación libre de derechos (sin licencias de servidor ni OEM) 12 meses de asistencia técnica gratuita y correcciones de errores y nuevas versiones gratuitas. El paquete para un solo desarrollador cuesta a partir de 890 dólares.
Este artículo ha demostrado lo fácil que ambas bibliotecas facilitan a sus usuarios la carga, lectura, edición y conversión de hojas de cálculo de Microsoft Excel. Tanto IronXL como GemBox.Spreadsheet proporcionan enfoques excepcionalmente potentes para llevar a cabo estas actividades, y son opciones convincentes por derecho propio para realizar tareas de automatización de lectura y escritura muy generales.
Entonces, ¿qué biblioteca .NET Excel deberían utilizar los desarrolladores en sus proyectos?
He aquí algunos puntos que los lectores pueden tener en cuenta a la hora de elegir entre utilizar IronXL o GemBox.Spreadsheet para su próximo gran proyecto:
Accesibilidad. IronXL da prioridad a la facilidad de uso, la precisión y la velocidad. La biblioteca se ha diseñado para que los usuarios puedan realizar tareas habituales de programación en Excel (carga, lectura, escritura, edición, selección de rangos, etc.) rápidamente y con el menor número posible de líneas de código. El sitio web cuenta con una gran cantidad de tutoriales, Guías prácticas y Ejemplos de códigos escrito para ayudar a los usuarios empezar y alcanzar sus grandes objetivos lo más rápido y sin esfuerzo posible. Además, IronXL cuenta con un equipo de ingenieros de guardia 24/5 para ayudar a los usuarios en cualquier momento con cualquier problema que tengan.
Los desarrolladores pueden considerar el uso de IronXL si el soporte, la facilidad de uso y la velocidad de implementación son de suma importancia.
*Para tener en cuenta, el sitio web de GemBox.Spreadsheet también tiene un [colección de ejemplos detallados](https://www.gemboxsoftware.com/spreadsheet/examples/getting-started/601) disponibles para ayudar a los desarrolladores a aprovechar al máximo sus potentes prestaciones.*
Versatilidad. El conjunto de características de GemBox.Spreadsheet permite a los desarrolladores llevar a cabo tareas de automatización de Excel que van mucho más allá de las básicas tratadas en este tutorial. Los usuarios pueden dibujar formas en hojas de cálculo de Excel, editar hojas de cálculo con fuentes personalizadascrear nuevas hojas de cálculo con Macros VBA, controles de formularioy componentes del gráficoy guardar documentos Excel como PDF con codificación y firmas digitales entre otras cosas. GemBox.Spreadsheet admite más de 200 fórmulas diferentes. Además, la biblioteca dispone de mecanismos muy sofisticados para referenciar rangos de celdas.
GemBox.Spreadsheet es una opción convincente para los desarrolladores que exigen flexibilidad y potencia en sus tareas de gestión de hojas de cálculo.
Convertibilidad. IronXL puede exportar datos a muchos formatos abiertos convencionales (XML, HTML, JSON, CSV, TSV)así como en cualquier tipo de documento Excel. IronXL también puede convertir datos de hojas de cálculo en datos binarios, de bytes y de flujo y a las estructuras de datos System.Data
.
GemBox.Spreadsheet también puede convertir datos de hoja de cálculo a y desde los tipos de datos `System.Data.DataSet` y `System.Data.DataTable`. Además, la librería puede importar y exportar como HTML, y puede convertir datos en imágenes y en documentos compatibles con PDF/A.
La elección del desarrollador entre ambas bibliotecas en este caso dependerá de los tipos de datos/archivos que requiera su proyecto.
Asequibilidad. IronXL y GemBox.Spreadsheet requieren licencias premium para su uso comercial.
El factor decisivo entre IronXL y GemBox.Spreadsheet en lo que respecta al precio dependerá en última instancia del presupuesto, el tamaño del equipo y las consideraciones de desarrollo a largo plazo. Vale la pena señalar, sin embargo, que el precio inicial de licencia $599 de IronXL podría ser muy atractivo para desarrolladores y equipos sensibles al precio.
Pruebe IronXL prueba gratuita para ver la eficacia de IronXL. Adquiera el Iron Suite para obtener cuatro bibliotecas adicionales por el precio de sólo dos licencias IronXL.
9 productos API .NET para sus documentos de oficina