Saltar al pie de página
COMPARAR CON OTROS COMPONENTES
Una Comparación de NPOI vs IronXL

Una comparación de IronXL y NPOI

IronXL y NPOI son bibliotecas IronXL y NPOI for .NET que funcionan sin Office.Interop, por lo que no es necesaria la instalación de Microsoft Excel. Esta comparación abarca sus API para leer, escribir y manipular archivos de Excel, con ejemplos de código para las operaciones con las que los desarrolladores se encuentran con mayor frecuencia.

¿Qué es NPOI?

NPOI is the .NET version of the POI Java project at 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 usarlo para:

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

NPOI y Excel

NPOI is a C# port of the POI Java project by 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 de Excel en .NET.

¿En qué se diferencian NPOI e IronXL?

NPOI IronXL
Rangos de Celdas Rangos de Celdas
Estilo de celda (borde, color, relleno, fuente, número, alineaciones) Estilos visuales de celda: Fuente, Tamaño, Patrón de fondo, Borde, Alineación y Formatos numéricos.
Cálculo de fórmulas Fórmulas
Validación de datos Validación de datos
Formato condicional Formato condicional
Imágenes Imágenes
Gráficos Gráficos

**Tabla 1** - Comparación de características

Los equipos que estén evaluando IronXL como alternativa a NPOI pueden probar la API completa con una prueba gratuita de 30 días.


Instalación de IronXL y NPOI

Puedes instalar ambas bibliotecas descargándolas manualmente, vía NuGet, o con el Administrador de Paquetes de NuGet en Visual Studio. A continuación, se ofrece una breve descripción general: Para obtener una guía paso a paso, consulte la guía de introducción a IronXL.

Instalación de NPOI

Instalación de NPOI con NuGet

Para instalar NPOI a través de NuGet, abre el símbolo del sistema de desarrolladores de Visual Studio y escribe lo siguiente:

Install-Package NPOI -Version x.x.x
Graphical user interfaceDescription automatically generated

**Figura 1** - Instalación de NuGet NPOI

Administrador de paquetes NuGet de Visual Studio y NPOI

Usa los siguientes pasos para instalar IronXL o NPOI a través del Administrador de Paquetes de NuGet en Visual Studio:

  • Haz clic derecho en el proyecto en el Explorador de Soluciones
  • Selecciona Administrar Paquetes NuGet
  • Busca tu Paquete
  • Haz clic en Instalar
A screenshot of a computerDescription automatically generated

**Figura 2** - Administrador de paquetes NuGet para NPOI

Instalación de IronXL

Descargando IronXL

To download IronXL, navigate to the following URL and click the "Download" button.

Download 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 de desarrollador de Visual Studio e ingrese lo siguiente:

Install-Package IronXL.Excel -Version x.x.x
NuGet IronXL Installation

**Figura 4** - Instalación de NuGet IronXL

Administrador de paquetes NuGet de Visual Studio e IronXL

Usa los siguientes pasos para instalar IronXL a través del Administrador de Paquetes de NuGet en Visual Studio:

  • Haz clic derecho en el proyecto en el Explorador de Soluciones
  • Selecciona Administrar Paquetes NuGet
  • Busca tu Paquete
  • Haz clic en Instalar
A screenshot of a computerDescription automatically generated

**Figura 5** - Administrador de paquetes NuGet para IronXL

Lectura y escritura en un archivo de Excel con NPOI e IronXL

Lectura de un archivo Excel con NPOI

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

using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.Data;
using System.IO;
using System.Collections.Generic;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.Data;
using System.IO;
using System.Collections.Generic;
$vbLabelText   $csharpLabel

El código siguiente lee un archivo de 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";

    // Use FileStream to open the Excel file
    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;

        // Add columns to the DataTable based on the header row of Excel
        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());
            }
        }

        // Add rows to the DataTable, looping through each row and cell
        for (int i = (objWorksheet.FirstRowNum + 1); i <= objWorksheet.LastRowNum; i++)
        {
            IRow objRow = objWorksheet.GetRow(i);
            if (objRow == null || objRow.Cells.All(d => d.CellType == CellType.Blank)) continue;

            for (int j = objRow.FirstCellNum; j < countCells; j++)
            {
                ICell cell = objRow.GetCell(j);
                if (cell != null && !string.IsNullOrEmpty(cell.ToString()) && !string.IsNullOrWhiteSpace(cell.ToString()))
                {
                    lstRows.Add(cell.ToString());
                }
            }

            if (lstRows.Count > 0)
                dtTable.Rows.Add(lstRows.ToArray());

            lstRows.Clear();
        }
    }

    // Assuming dataGridView1 is a DataGridView control on a Form
    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";

    // Use FileStream to open the Excel file
    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;

        // Add columns to the DataTable based on the header row of Excel
        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());
            }
        }

        // Add rows to the DataTable, looping through each row and cell
        for (int i = (objWorksheet.FirstRowNum + 1); i <= objWorksheet.LastRowNum; i++)
        {
            IRow objRow = objWorksheet.GetRow(i);
            if (objRow == null || objRow.Cells.All(d => d.CellType == CellType.Blank)) continue;

            for (int j = objRow.FirstCellNum; j < countCells; j++)
            {
                ICell cell = objRow.GetCell(j);
                if (cell != null && !string.IsNullOrEmpty(cell.ToString()) && !string.IsNullOrWhiteSpace(cell.ToString()))
                {
                    lstRows.Add(cell.ToString());
                }
            }

            if (lstRows.Count > 0)
                dtTable.Rows.Add(lstRows.ToArray());

            lstRows.Clear();
        }
    }

    // Assuming dataGridView1 is a DataGridView control on a Form
    dataGridView1.DataSource = dtTable;
}

private void button1_Click(object sender, EventArgs e)
{
    ReadExcelNPOI();
}
$vbLabelText   $csharpLabel

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. Para ver más ejemplos de código de IronXL, consulte la documentación. Agrega el siguiente código e incluye el espacio de nombres:

using IronXL;
using System.Data;
using IronXL;
using System.Data;
$vbLabelText   $csharpLabel

Observa 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)
{
    // Load the Excel workbook
    string strPath = @"c:\temp\NPOI_Test.XLSX";
    WorkBook workbook = WorkBook.Load(strPath);

    // Access the default worksheet
    WorkSheet sheet = workbook.DefaultWorkSheet;

    // Convert the worksheet to a DataTable
    var dtTable = sheet.ToDataTable(true);

    // Assuming dataGridView1 is a DataGridView control on a Form
    dataGridView1.DataSource = dtTable;
}
private void button2_Click(object sender, EventArgs e)
{
    // Load the Excel workbook
    string strPath = @"c:\temp\NPOI_Test.XLSX";
    WorkBook workbook = WorkBook.Load(strPath);

    // Access the default worksheet
    WorkSheet sheet = workbook.DefaultWorkSheet;

    // Convert the worksheet to a DataTable
    var dtTable = sheet.ToDataTable(true);

    // Assuming dataGridView1 is a DataGridView control on a Form
    dataGridView1.DataSource = dtTable;
}
$vbLabelText   $csharpLabel

Como puede ver, IronXL reduce la operación de lectura y visualización a unas 5 líneas de código, en comparación con las más de 40 de NPOI, eliminando por completo la iteración manual de filas y el bucle de extracción celda por celda. Explora el conjunto completo de guías de funciones de IronXL para conocer enfoques más optimizados de las tareas habituales de Excel.

¿Qué biblioteca elegir?

NPOI proporciona una base de código abierto sólida y bien establecida para la manipulación de Excel en .NET; su origen como adaptación de Apache POI significa que se beneficia de años de contribuciones de la comunidad y de una amplia cobertura de formatos. Para los equipos cuyo principal requisito es leer y escribir hojas de cálculo en un paquete gratuito impulsado por la comunidad, NPOI es una opción fiable.

Donde los equipos suelen encontrar dificultades es en la cantidad de código repetitivo que NPOI requiere para operaciones comunes. Como ilustra el ejemplo de lectura de archivos anterior, el enfoque de IronXL requiere aproximadamente 5 líneas de código frente a las más de 40 líneas de NPOI para la misma operación —cargar un libro de trabajo y mostrarlo en una cuadrícula de datos—, lo que elimina por completo el bucle de iteración manual de filas y celdas. Esa reducción de la superficie de código es una inversión que se amortiza gracias a un mantenimiento más sencillo y a que hay menos lugares donde puedan esconderse los errores.

IronXL también incluye asistencia profesional, calendarios de actualización regulares y la posibilidad de solicitar funciones directamente a los ingenieros de Iron Software. Los proyectos impulsados por la comunidad ofrecen diferentes ventajas e inconvenientes en este sentido: una mayor participación de los colaboradores, pero tiempos de respuesta menos predecibles para cuestiones específicas.

Más allá del coste de la licencia, el coste total del proyecto incluye las horas de desarrollo dedicadas a escribir y mantener el código repetitivo adicional que requiere la API de nivel inferior de NPOI, así como a depurar la lógica de mapeo de datos manual que se muestra en los ejemplos anteriores. Para los equipos que evalúan los costes a lo largo del ciclo de vida de un proyecto de varios años, estos costes de desarrollo y mantenimiento suelen superar la diferencia entre las licencias de código abierto y las comerciales.

Descargas

Este proyecto está disponible en GitHub:

Ejemplo de IronXL vs. NPOI

¿Listo para ver la diferencia en tu propio proyecto? Inicie una prueba gratuita de 30 días de IronXL para ejecutar estos ejemplos localmente.

Por favor notaNPOI es una marca registrada de su respectivo propietario. Este sitio no está afiliado, patrocinado ni respaldado por NPOI. Todos los nombres de producto, logotipos y marcas son propiedad de sus respectivos dueños. Las comparaciones son solo para fines informativos y reflejan información públicamente disponible en el momento de la redacción.

Preguntas Frecuentes

¿Cuál es una alternativa para usar Office.Interop para la manipulación de Excel en C#?

IronXL es una alternativa al uso de Office.Interop para la manipulación de Excel en C#. Proporciona una API fácil de usar que permite a los desarrolladores crear, leer y editar archivos de Excel sin necesidad de tener Microsoft Office instalado.

¿Cómo puedo convertir archivos Excel a PDF en C#?

Puedes usar IronXL para convertir archivos de Excel a PDF en C# cargando el libro de Excel con WorkBook.Load y luego usando el método WorkBook.SaveAs para guardar el archivo en formato PDF.

¿Cuáles son los beneficios clave de usar IronXL para la manipulación de archivos de Excel?

IronXL ofrece una API más intuitiva para un mantenimiento de código más fácil, soporte profesional, actualizaciones regulares y la capacidad de manejar archivos de Excel sin Microsoft Office instalado, lo que lo convierte en una opción fuerte para los desarrolladores.

¿Se puede instalar IronXL a través de NuGet?

Sí, IronXL se puede instalar a través de NuGet. Abre el símbolo del sistema de desarrollador de Visual Studio e introduce Install-Package IronXL.Excel -Version x.x.x.

¿Cuáles son algunas tareas comunes relacionadas con Excel que pueden realizarse utilizando IronXL?

Utilizando IronXL, los desarrolladores pueden realizar tareas como leer y escribir archivos de Excel, dar estilo a las celdas, usar fórmulas, validar datos, aplicar formato condicional y trabajar con imágenes y gráficos.

¿Cómo leo un archivo de Excel en C# sin Microsoft Office?

Con IronXL, puedes leer un archivo de Excel en C# cargando el libro usando WorkBook.Load, accediendo a la hoja de trabajo y recorriendo las filas y celdas mediante métodos sencillos.

¿Por qué elegir IronXL frente a alternativas de código abierto para la manipulación de Excel?

IronXL proporciona una API más fácil de usar, soporte profesional, actualizaciones regulares y atenciones constantes a solicitudes de características, que son ventajas sobre las alternativas de código abierto como NPOI.

¿En qué se diferencia NPOI de IronXL para la manipulación de archivos de Excel?

NPOI es una biblioteca de código abierto basada en el proyecto Apache POI para manejar archivos de Excel sin Microsoft Office. Sin embargo, IronXL ofrece una API más intuitiva, soporte profesional y actualizaciones regulares, lo que lo hace adecuado para aplicaciones comerciales.

¿Cuál es el proceso para convertir una hoja de trabajo de Excel a un DataTable usando IronXL?

Para convertir una hoja de trabajo de Excel a un DataTable usando IronXL, carga el libro con WorkBook.Load, accede a la hoja de trabajo deseada y usa el método disponible para convertirlo en DataTable para su uso posterior.

¿Cómo puede mejorar IronXL la gestión de archivos Excel en aplicaciones .NET?

IronXL mejora la gestión de archivos de Excel en aplicaciones .NET al ofrecer una API limpia e intuitiva, facilitando tareas como lectura, edición y creación de archivos de Excel de manera fácil, sin depender de instalaciones de Microsoft Office.

Jordi Bardia
Ingeniero de Software
Jordi es más competente en Python, C# y C++. Cuando no está aprovechando sus habilidades en Iron Software, está programando juegos. Compartiendo responsabilidades para pruebas de productos, desarrollo de productos e investigación, Jordi agrega un valor inmenso a la mejora continua del producto. La experiencia variada lo mantiene ...
Leer más

Equipo de soporte de Iron

Estamos disponibles online las 24 horas, 5 días a la semana.
Chat
Email
Llámame