Ir para o conteúdo do rodapé
COMPARAR COM OUTROS COMPONENTES
Comparação entre NPOI e IronXL

Comparação entre IronXL e NPOI

Como você deve saber, o Excel é provavelmente o aplicativo de planilha mais usado no mundo. Os usuários incluem tanto desenvolvedores quanto o público em geral, mas são os desenvolvedores que provavelmente estarão mais engajados com este artigo. Inicialmente, não havia muitas opções para desenvolvedores trabalharem com Excel em seus diversos aplicativos. No entanto, havia o VBA (Visual Basic for Applications) embutido no Office Suite com o qual você poderia manipular qualquer produto do Office de acordo com suas necessidades.

Os desenvolvedores usavam VBA no Excel para personalizar suas interações com o Excel e seus dados, até mesmo suas capacidades visuais. Mas, eventualmente, isso não foi suficiente. Os desenvolvedores queriam mais, e assim começaram a usar o Office.Interop.

Neste artigo, vou comparar duas bibliotecas Excel muito boas que não dependem do Office.Interop para trabalhar com Excel. São elas:

  • IronXL
  • NPOI

Você verá e aprenderá o que cada biblioteca Excel pode fazer, e então comparará as duas através de exemplos de código e tutoriais passo a passo. Embora este artigo não possa cobrir todos os recursos de ambas as bibliotecas Excel, ele explicará os usos mais comuns e mais populares de cada uma.

O que é NPOI?

NPOI is the .NET version of the POI Java project at http://poi.apache.org/. POI é um projeto de código aberto que pode ajudá-lo a ler/escrever arquivos xls, doc, ppt. Ele tem uma ampla gama de aplicações.

Por exemplo, você pode usá-lo para:

  • Gerar um relatório do Excel sem a suíte Microsoft Office instalada no seu servidor e mais eficiente do que chamar Microsoft Excel ActiveX em segundo plano
  • Extrair texto de documentos do Office para ajudá-lo a implementar um recurso de indexação de texto completo (na maioria das vezes esse recurso é usado para criar motores de busca)
  • Extrair imagens de documentos do Office
  • Gerar planilhas do Excel que contêm fórmulas

NPOI e Excel

NPOI is a C# port of the POI Java project by Apache. É gratuito e de código aberto. Além disso, ele não precisa de Interop, o que significa que os usuários não precisarão ter o Excel instalado para que o aplicativo do desenvolvedor funcione com ele.

IronXL e Excel

IronXL é uma API Excel para VB e C#. Com o IronXL você pode ler, editar e criar arquivos de planilhas Excel no .NET.

Recursos Comuns das Bibliotecas Excel NPOI e IronXL

NPOI IronXL
Intervalos de células Intervalos de células
Estilo de célula (Borda, Cor, Preenchimento, Fonte, Número, Alinhamentos) Estilos visuais de célula Fonte, Tamanho, Padrão de fundo, Borda, Alinhamento, e Formatos de número.
Cálculo da fórmula Fórmulas
Validação de dados Validação de dados
Formatação condicional Formatação condicional
Imagens Imagens
Gráficos Gráficos

**Tabela 1** - Comparação de Recursos


Instalação do IronXL e NPOI

Você pode instalar ambas as bibliotecas baixando-as manualmente, via NuGet ou com o Gerenciador de Pacotes NuGet no Visual Studio. Aqui está uma visão geral rápida.

Instalação do NPOI

Instalando o NPOI com NuGet

Para instalar o NPOI através do NuGet, abra o prompt de comando do desenvolvedor do Visual Studio e insira o seguinte:

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

**Figura 1** - Instalação do NPOI via NuGet

Gerenciador de Pacotes NuGet do Visual Studio e NPOI

Use as seguintes etapas para instalar o IronXL ou NPOI via o Gerenciador de Pacotes NuGet no Visual Studio:

  • Clique com o botão direito no projeto no Explorador de Soluções
  • Selecione Gerenciar Pacotes NuGet
  • Procure seu Pacote
  • Clique em Instalar
A screenshot of a computerDescription automatically generated

**Figura 2** - Gerenciador de Pacotes NuGet para NPOI

Instalação do IronXL

Baixando o IronXL

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

Download IronXL

**Figura 3** - Baixar IronXL

Instalando o IronXL com NuGet

Para instalar o IronXL através do NuGet, abra o prompt de comando do desenvolvedor Visual Studio e insira o seguinte:

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

**Figura 4** - Instalação do IronXL via NuGet

Gerenciador de Pacotes NuGet do Visual Studio e IronXL

Use as seguintes etapas para instalar o IronXL via o Gerenciador de Pacotes NuGet no Visual Studio:

  • Clique com o botão direito no projeto no Explorador de Soluções
  • Selecione Gerenciar Pacotes NuGet
  • Procure seu Pacote
  • Clique em Instalar
A screenshot of a computerDescription automatically generated

**Figura 5** - Gerenciador de Pacotes NuGet para IronXL

Lendo de e escrevendo para um arquivo Excel com NPOI e IronXL

Lendo um arquivo Excel com NPOI

O código a seguir demonstra como ler um arquivo Excel e exibir seu conteúdo com NPOI. Adicione o seguinte código e inclua os namespaces necessários:

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

O código abaixo lê um arquivo Excel existente e o exibe dentro de uma visualização de grade de dados.

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

Lendo um arquivo Excel com IronXL

O seguinte código demonstra como ler um arquivo Excel e exibi-lo dentro de uma visualização de grade de dados com IronXL. Adicione o seguinte código e inclua o namespace:

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

Observe a inclusão do IronXL. É necessário para que o IronXL funcione. Adicione as próximas linhas:

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 você pode ver, tudo isso resulta em muito menos trabalho.

Conclusão

Então, por que o IronXL? Como você vê, o IronXL tem uma API fácil de usar, que mantém seu código limpo. Bibliotecas que utilizam IronXL ostentam código limpo e legível, o que é um investimento que compensa ao reduzir o tempo e o esforço necessários para entender o que o código faz, permitindo que ele seja alterado sem quebrar as coisas.

O IronXL é mais intuitivo em todos os aspectos, enquanto é tão poderoso quanto o NPOI. E, claro, com uma chave de licença, você obtém acesso à vantagem mais importante do software pago: você recebe nosso suporte profissional, cronogramas de atualização consistentes e confiáveis, e a capacidade de solicitar recursos aos agentes de suporte do Iron Software que estão felizes em ajudá-lo. Isso é algo que o código aberto simplesmente não pode fornecer.

Downloads

Este projeto está disponível no GitHub:

Exemplo IronXL vs NPOI

ObserveNPOI é uma marca registrada de seu respectivo proprietário. Este site não é afiliado, endossado ou patrocinado pelo NPOI. Todos os nomes de produtos, logotipos e marcas são propriedade de seus respectivos proprietários. As comparações são apenas para fins informativos e refletem informações disponíveis publicamente no momento da redação.

Perguntas frequentes

Qual é uma alternativa ao uso de Office.Interop para manipulação de arquivos Excel em C#?

IronXL é uma alternativa ao uso do Office.Interop para manipulação de arquivos Excel em C#. Ele fornece uma API amigável que permite aos desenvolvedores criar, ler e editar arquivos Excel sem a necessidade de instalar o Microsoft Office.

Como posso converter arquivos do Excel para PDF em C#?

Você pode usar o IronXL para converter arquivos do Excel em PDF em C# carregando a planilha do Excel com WorkBook.Load e, em seguida, usando o método WorkBook.SaveAs para salvar o arquivo no formato PDF.

Quais são os principais benefícios de usar o IronXL para manipulação de arquivos do Excel?

O IronXL oferece uma API mais intuitiva para facilitar a manutenção do código, suporte profissional, atualizações regulares e a capacidade de lidar com arquivos do Excel sem a necessidade do Microsoft Office instalado, o que o torna uma excelente opção para desenvolvedores.

O IronXL pode ser instalado via NuGet?

Sim, o IronXL pode ser instalado via NuGet. Abra o prompt de comando do desenvolvedor do Visual Studio e digite Install-Package IronXl.Excel -Version xxx .

Quais são algumas tarefas comuns relacionadas ao Excel que podem ser realizadas usando o IronXL?

Com o IronXL, os desenvolvedores podem realizar tarefas como ler e gravar arquivos do Excel, formatar células, usar fórmulas, validar dados, aplicar formatação condicional e trabalhar com imagens e gráficos.

Como faço para ler um arquivo do Excel em C# sem o Microsoft Office?

Com o IronXL, você pode ler um arquivo Excel em C# carregando a pasta de trabalho usando WorkBook.Load , acessando a planilha e iterando pelas linhas e células usando métodos simples.

Por que escolher o IronXL em vez de alternativas de código aberto para manipulação do Excel?

O IronXL oferece uma API mais amigável, suporte profissional, atualizações regulares e solicitações de novos recursos em andamento, o que representa vantagens em relação a alternativas de código aberto como o NPOI.

Quais as diferenças entre o NPOI e o IronXL na manipulação de arquivos Excel?

NPOI é uma biblioteca de código aberto baseada no projeto Apache POI para manipulação de arquivos Excel sem o Microsoft Office. IronXL, por sua vez, oferece uma API mais intuitiva, suporte profissional e atualizações regulares, tornando-a adequada para aplicações comerciais.

Qual é o processo para converter uma planilha do Excel em uma DataTable usando o IronXL?

Para converter uma planilha do Excel em um DataTable usando o IronXL, carregue a pasta de trabalho com WorkBook.Load , acesse a planilha desejada e use o método disponível para convertê-la em um DataTable para uso posterior.

Como o IronXL pode aprimorar o gerenciamento de arquivos do Excel em aplicativos .NET?

O IronXL aprimora o gerenciamento de arquivos do Excel em aplicativos .NET, oferecendo uma API limpa e intuitiva, que facilita tarefas como leitura, edição e criação de arquivos do Excel com facilidade, sem depender de instalações do Microsoft Office.

Jordi Bardia
Engenheiro de Software
Jordi é extremamente proficiente em Python, C# e C++, e quando não está utilizando suas habilidades na Iron Software, dedica-se à programação de jogos. Compartilhando as responsabilidades por testes, desenvolvimento e pesquisa de produtos, Jordi agrega imenso valor à melhoria contínua dos produtos. Essa experiência diversificada o mantém ...
Leia mais

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me