COMPARACIóN CON OTROS COMPONENTES

Comparación de IronXL y NPOI

Publicado en 1 de diciembre, 2021
Compartir:

Como ya sabrá, Excel es probablemente la aplicación de hoja de cálculo más utilizada del mundo. Entre los usuarios se incluyen tanto los desarrolladores como la población en general, pero son los desarrolladores quienes probablemente estarán más interesados en este artículo. Al principio, los desarrolladores no disponían de muchas opciones para trabajar con Excel en sus distintas aplicaciones. Sin embargo, había VBA(Visual Basic para aplicaciones) integrado en el paquete Office con el que podrá manipular cualquier producto Office según sus necesidades.

Los desarrolladores utilizaban VBA en Excel para personalizar sus interacciones con Excel y sus datos, incluso sus capacidades visuales. Pero, finalmente, esto no fue suficiente. Los desarrolladores querían más y empezaron a utilizar Office.Interop.

En este artículo, compararé dos librerías Excel muy buenas que no dependen de Office.Interop para trabajar con Excel. Lo son:

  • IronXL
  • NPOI

    Verá y aprenderá lo que puede hacer cada biblioteca de Excel y, a continuación, comparará las dos mediante ejemplos de código y tutoriales paso a paso. Aunque este artículo no puede cubrir todas las características de ambas bibliotecas de Excel, explicará los usos más comunes y populares de cada una.

¿Qué es NPOI?

NPOI es la versión .NET del proyecto Java POI en http://poi.apache.org/. POI es un proyecto de código abierto que puede ayudarte a leer/escribir archivos xls, doc, ppt. Tiene una amplia gama de aplicaciones.

Por ejemplo, puedes utilizarlo para:

  • Generar un informe de Excel sin Microsoft Office suite instalado en su servidor y más eficiente que llamar a Microsoft Excel ActiveX en segundo plano.
  • Extraiga texto de documentos de Office para ayudarle a implementar una función de indexación de texto completo(la mayoría de las veces esta función se utiliza para crear motores de búsqueda)
  • Extraer imágenes de documentos de Office
  • Generar hojas Excel que contengan fórmulas

NPOI y Excel

NPOI es una adaptación a C# del programa PDI Java de Apache. Es gratuito y de código abierto. Además, no necesita Interop, lo que significa que los usuarios no necesitarán tener Excel instalado para que la aplicación del desarrollador funcione con él.

IronXL y Excel

IronXL es una API de Excel para VB y C#. Con IronXL puedes leer, editar y crear archivos de hojas de cálculo Excel en .NET.

Características comunes de las bibliotecas NPOI y IronXL Excel

NPOIIronXL
Rangos de celdasRangos de celdas
Estilo de las celdas (Borde, Color, Relleno, Fuente, Número, Alineaciones)Estilos visuales de celda Formatos de fuente, tamaño, patrón de fondo, borde, alineación y número.
Cálculo de la fórmulaFórmulas
Validación de datosValidación de datos
Formato condicionalFormato condicional
ImágenesImágenes
GráficosGráficos

Cuadro 1 - Comparación de funciones


Instalación de IronXL y NPOI

Puede instalar ambas bibliotecas descargándolas manualmente, a través de NuGet o con el gestor de paquetes NuGet de Visual Studio. He aquí un breve resumen.

Instalación de NPOI

Instalación de NPOI con NuGet

Para instalar NPOI a través de NuGet, abra el símbolo del sistema del desarrollador de Visual Studio e introduzca lo siguiente:

Interfaz gráfica de usuarioDescripción generada automáticamente

Figura 1 - Instalación de NuGet NPOI

Gestor de paquetes NuGet de Visual Studio y NPOI

Utilice los siguientes pasos para instalar IronXL o NPOI a través del gestor de paquetes NuGet en Visual Studio:

  • Haga clic con el botón derecho en el proyecto en el Explorador de soluciones
  • Seleccione Gestionar paquetes NuGet
  • Busque su paquete
  • Haga clic en Instalar
    Captura de pantalla de un ordenadorDescripción generada automáticamente

    Figura 2 - Gestor de paquetes NuGet para NPOI

Instalación de IronXL

Descarga de IronXL

Para descargar IronXL, vaya a la siguiente dirección URL y haga clic en el botón "Descargar".

Descargar IronXL

Figura 3 - Descargar IronXL

Instalación de IronXL con NuGet

Para instalar IronXL a través de NuGet, abra el símbolo del sistema del desarrollador de Visual Studio e introduzca lo siguiente:

Instalación de NuGet IronXL

Figura 4 - Instalación de NuGet IronXL

Gestor de paquetes NuGet de Visual Studio e IronXL

Utilice los siguientes pasos para instalar IronXL a través del gestor de paquetes NuGet en Visual Studio:

  • Haga clic con el botón derecho en el proyecto en el Explorador de soluciones
  • Seleccione Gestionar paquetes NuGet
  • Busque su paquete
  • Haga clic en Instalar
    Captura de pantalla de un ordenadorDescripción generada automáticamente

    Gráfico 5 - Gestor de paquetes NuGet para IronXL

Lectura y escritura en un archivo Excel con NPOI y IronXL

Lectura de un fichero Excel con NPOI

El siguiente código demuestra cómo leer un archivo Excel y mostrar su contenido con NPOI. Añade el siguiente código e incluye los espacios de nombres necesarios:

using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
Imports NPOI.SS.UserModel
Imports NPOI.XSSF.UserModel
VB   C#

El siguiente código lee un archivo Excel existente y lo muestra dentro de una vista de cuadrícula de datos.

 public void ReadExcelNPOI()
        {
            DataTable dtTable = new DataTable();
            List<string> lstRows = new List<string>();
            ISheet objWorksheet;
            string strPath = @"c:\temp\NPOI_Test.XLSX";
            using (var fStream = new FileStream(strPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
            {
                fStream.Position = 0;
                XSSFWorkbook objWorkbook = new XSSFWorkbook(fStream);
                objWorksheet = objWorkbook.GetSheetAt(0);
                IRow objHeader = objWorksheet.GetRow(0);
                int countCells = objHeader.LastCellNum;

                for (int j = 0; j < countCells; j++)
                {
                    ICell objCell = objHeader.GetCell(j);
                    if (objCell == null 
 string.IsNullOrWhiteSpace(objCell.ToString())) continue;
                    {
                        dtTable.Columns.Add(objCell.ToString());
                    }
                }
                for (int i = (objWorksheet.FirstRowNum + 1); i <= objWorksheet.LastRowNum; i++)
                {
                    IRow objRow = objWorksheet.GetRow(i);
                    if (objRow == null) continue;
                    if (objRow.Cells.All(d => d.CellType == CellType.Blank)) continue;
                    for (int j = objRow.FirstCellNum; j < countCells; j++)
                    {
                        if (objRow.GetCell(j) != null)
                        {
                            if (!string.IsNullOrEmpty(objRow.GetCell(j).ToString()) && !string.IsNullOrWhiteSpace(objRow.GetCell(j).ToString()))
                            {
                                lstRows.Add(objRow.GetCell(j).ToString());
                            }
                        }
                    }

                    if (lstRows.Count > 0)
                        dtTable.Rows.Add(lstRows.ToArray());
                    lstRows.Clear();
                }
            }
            dataGridView1.DataSource = dtTable;
        }
        private void button1_Click(object sender, EventArgs e)
        {
            ReadExcelNPOI();
        }
 public void ReadExcelNPOI()
        {
            DataTable dtTable = new DataTable();
            List<string> lstRows = new List<string>();
            ISheet objWorksheet;
            string strPath = @"c:\temp\NPOI_Test.XLSX";
            using (var fStream = new FileStream(strPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
            {
                fStream.Position = 0;
                XSSFWorkbook objWorkbook = new XSSFWorkbook(fStream);
                objWorksheet = objWorkbook.GetSheetAt(0);
                IRow objHeader = objWorksheet.GetRow(0);
                int countCells = objHeader.LastCellNum;

                for (int j = 0; j < countCells; j++)
                {
                    ICell objCell = objHeader.GetCell(j);
                    if (objCell == null 
 string.IsNullOrWhiteSpace(objCell.ToString())) continue;
                    {
                        dtTable.Columns.Add(objCell.ToString());
                    }
                }
                for (int i = (objWorksheet.FirstRowNum + 1); i <= objWorksheet.LastRowNum; i++)
                {
                    IRow objRow = objWorksheet.GetRow(i);
                    if (objRow == null) continue;
                    if (objRow.Cells.All(d => d.CellType == CellType.Blank)) continue;
                    for (int j = objRow.FirstCellNum; j < countCells; j++)
                    {
                        if (objRow.GetCell(j) != null)
                        {
                            if (!string.IsNullOrEmpty(objRow.GetCell(j).ToString()) && !string.IsNullOrWhiteSpace(objRow.GetCell(j).ToString()))
                            {
                                lstRows.Add(objRow.GetCell(j).ToString());
                            }
                        }
                    }

                    if (lstRows.Count > 0)
                        dtTable.Rows.Add(lstRows.ToArray());
                    lstRows.Clear();
                }
            }
            dataGridView1.DataSource = dtTable;
        }
        private void button1_Click(object sender, EventArgs e)
        {
            ReadExcelNPOI();
        }
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Lectura de un archivo Excel con IronXL

El siguiente código demuestra cómo leer un archivo de Excel y mostrarlo dentro de una vista de cuadrícula de datos con IronXL. Añade el siguiente código e incluye el namespace:

using IronXL;
using IronXL;
Imports IronXL
VB   C#

Fíjese en la inclusión de IronXL. Esto es necesario para que IronXL funcione. Añade las siguientes líneas:

        private void button2_Click(object sender, EventArgs e)
        {
            string strPath = @"c:\temp\NPOI_Test.XLSX";
            WorkBook workbook = WorkBook.Load(strPath);
            WorkSheet sheet = workbook.DefaultWorkSheet;
            var dtTable = sheet.ToDataTable(true);
            dataGridView1.DataSource = dtTable;
        }
        private void button2_Click(object sender, EventArgs e)
        {
            string strPath = @"c:\temp\NPOI_Test.XLSX";
            WorkBook workbook = WorkBook.Load(strPath);
            WorkSheet sheet = workbook.DefaultWorkSheet;
            var dtTable = sheet.ToDataTable(true);
            dataGridView1.DataSource = dtTable;
        }
Private Sub button2_Click(ByVal sender As Object, ByVal e As EventArgs)
			Dim strPath As String = "c:\temp\NPOI_Test.XLSX"
			Dim workbook As WorkBook = WorkBook.Load(strPath)
			Dim sheet As WorkSheet = workbook.DefaultWorkSheet
			Dim dtTable = sheet.ToDataTable(True)
			dataGridView1.DataSource = dtTable
End Sub
VB   C#

Como puedes ver, todo esto supone mucho menos trabajo.

Conclusión

¿Por qué IronXL? Como ves, IronXL tiene una API fácil de usar, que mantiene tu código limpio. Bibliotecas que utilizan IronXL presumir de código limpio y legible es una inversión que vale la pena mediante la reducción de tiempo y esfuerzo necesarios para entender lo que el código permite que se cambie sin romper las cosas.

IronXL es más intuitivo en todos los sentidos y, al mismo tiempo, tan potente como NPOI. Y, por supuesto, con una clave de licencia tendrá acceso a la ventaja más importante del software de pago: obtendrá nuestro soporte profesional, programas de actualización coherentes y fiables, y la posibilidad de solicitar funciones a los agentes de soporte de Iron Software, que estarán encantados de ayudarle. Esto es algo que el código abierto no puede ofrecer.

Descargas

Este proyecto está disponible en GitHub: Ejemplo de IronXL frente a NPOI

< ANTERIOR
Comparación entre IronXL y CsvHelper
SIGUIENTE >
Comparación de las células IronXL y Aspose

¿Listo para empezar? Versión: 2024.11 acaba de salir

Descarga gratuita de NuGet Descargas totales: 1,111,773 Ver licencias >