Ir para o conteúdo do rodapé
COMPARAR COM OUTROS COMPONENTES

EPPlus: Ler Excel para Datatable em C# (Tutorial IronXL)

Procurando uma biblioteca para Excel para ler dados do Excel em um DataTable em C#?

Ler arquivos Excel em um DataTable em C# tem várias aplicações práticas em diferentes setores e domínios, como análise e relatórios de dados, importação de dados em bancos de dados, migração de dados, validação e limpeza de dados, integração com outros sistemas, automação e processamento em lote.

Neste artigo, discutiremos e compararemos duas bibliotecas diferentes para Excel no .NET Core em C# que oferecem esse recurso para ler dados do Excel e arquivos Excel em um DataTable. As bibliotecas são

  1. EPPlus
  2. IronXL

1. Biblioteca EPPlus

EPPlus é uma poderosa biblioteca de código aberto para criar e manipular arquivos Excel em C#. Ela fornece uma API simples e intuitiva que permite aos desenvolvedores gerar, ler e modificar planilhas Excel programaticamente, sem exigir instalação do Microsoft Office ou Excel nas máquinas servidoras ou clientes. Com o EPPlus, você pode facilmente criar planilhas, adicionar dados, aplicar formatos, criar gráficos e executar outras operações em arquivos Excel. Ela suporta tanto o formato .xls mais antigo quanto o formato .xlsx mais recente e proporciona um desempenho eficiente e gestão de memória. Seja para gerar relatórios dinâmicos, importar/exportar dados ou automatizar tarefas relacionadas ao Excel, o EPPlus oferece um conjunto abrangente de recursos e capacidades para simplificar o manuseio de arquivos Excel em aplicações C#.

2. IronXL

IronXL é uma biblioteca poderosa e versátil que capacita os desenvolvedores com a habilidade de ler, escrever e manipular arquivos Excel sem esforço dentro de suas aplicações .NET. Com sua API intuitiva e abrangente, o IronXL simplifica o processo, geralmente complexo, de trabalhar com planilhas, permitindo que os desenvolvedores extraiam dados, realizem cálculos, criem gráficos e gerem relatórios sem dificuldades. Seja automatizando tarefas de importação/exportação de dados, realizando análise de dados ou criando modelos dinâmicos do Excel, o IronXL fornece uma solução robusta que economiza tempo e esforço valiosos dos desenvolvedores, enquanto garante precisão e confiabilidade ao lidar com dados do Excel. Com sua integração perfeita, documentação extensa e ampla gama de recursos, o IronXL se destaca como a escolha preferida para desenvolvedores que buscam uma ferramenta confiável e eficiente para enfrentar os desafios associados à manipulação de arquivos do Excel no framework .NET.

3. Instalando a biblioteca EPPlus

Para instalar a biblioteca EPPlus em seu projeto C#, primeiro você precisa criar um novo projeto baseado em console no Visual Studio. Após isso, você pode facilmente instalá-la usando o Gerenciador de Pacotes NuGet.

Uma vez que o novo projeto é criado, vá para Ferramentas e passe o mouse sobre o Gerenciador de Pacotes NuGet, depois selecione 'Gerenciar Pacotes NuGet para Solução'.

Uma nova janela será aberta. Nesta nova janela, vá para a opção 'Procurar' e busque por 'EPPlus'. Uma lista de pacotes aparecerá, e você deve selecionar a versão estável mais recente. Então, clique no botão 'Instalar' do lado direito para instalar a biblioteca EPPlus.

Assim, a EPPlus será adicionada ao seu projeto.

4. Instalando IronXL

Existem muitos métodos para instalar o IronXL, mas nesta seção, discutiremos apenas a instalação do IronXL usando o Gerenciador de Pacotes NuGet.

Assim como na seção 3, crie um novo projeto e vá para 'Ferramentas' e abra o Gerenciador de Pacotes NuGet para soluções.

Na nova janela, digite a palavra-chave 'IronXL' na barra de busca. Uma lista aparecerá, e você pode selecionar o pacote IronXL que deseja instalar. Então, clique no botão 'Instalar' para instalar o IronXL em seu projeto.

Agora o IronXL está pronto para uso.

5. Lendo Arquivos do Excel e Dados para DataTable Usando a Biblioteca EPPlus

Nesta seção, examinaremos o código para ler o Excel como um DataTable usando a biblioteca do pacote C# EPPlus.

Precisamos de um arquivo Excel de exemplo para ler como um DataTable. Para esse propósito, geraremos um arquivo Excel de exemplo.

Abaixo está o código para ler o arquivo Excel como um DataTable.

using OfficeOpenXml;
using System;
using System.Data;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var path = @"sample.xlsx"; // Specify the path to your Excel file
        var data = ExcelDataToDataTable(path, "Table");

        // Iterate through each row in the DataTable and print its contents
        foreach (DataRow row in data.Rows)
        {
            foreach (var wsrow in row.ItemArray)
            {
                Console.Write(wsrow + " ");
            }
            Console.WriteLine();
        }
    }

    /// <summary>
    /// Converts Excel sheet data to a DataTable.
    /// </summary>
    /// <param name="filePath">The path to the Excel file.</param>
    /// <param name="sheetName">The name of the worksheet to read from.</param>
    /// <param name="hasHeader">Indicates whether the Excel sheet has a header row.</param>
    /// <returns>DataTable containing Excel data.</returns>
    public static DataTable ExcelDataToDataTable(string filePath, string sheetName, bool hasHeader = true)
    {
        DataTable dt = new DataTable();
        var fi = new FileInfo(filePath);

        // Check if the file exists
        if (!fi.Exists)
            throw new Exception("File " + filePath + " does not exist.");

        // Set the license context for EPPlus
        ExcelPackage.LicenseContext = LicenseContext.NonCommercial;

        // Load the Excel file into an EPPlus ExcelPackage
        using (var xlPackage = new ExcelPackage(fi))
        {
            // Get the specified worksheet from the workbook
            var worksheet = xlPackage.Workbook.Worksheets[sheetName];

            // Convert the worksheet to a DataTable, optionally using the first row as column names
            dt = worksheet.Cells[1, 1, worksheet.Dimension.End.Row, worksheet.Dimension.End.Column].ToDataTable(c =>
            {
                c.FirstRowIsColumnNames = hasHeader;
            });
        }

        return dt;
    }
}
using OfficeOpenXml;
using System;
using System.Data;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var path = @"sample.xlsx"; // Specify the path to your Excel file
        var data = ExcelDataToDataTable(path, "Table");

        // Iterate through each row in the DataTable and print its contents
        foreach (DataRow row in data.Rows)
        {
            foreach (var wsrow in row.ItemArray)
            {
                Console.Write(wsrow + " ");
            }
            Console.WriteLine();
        }
    }

    /// <summary>
    /// Converts Excel sheet data to a DataTable.
    /// </summary>
    /// <param name="filePath">The path to the Excel file.</param>
    /// <param name="sheetName">The name of the worksheet to read from.</param>
    /// <param name="hasHeader">Indicates whether the Excel sheet has a header row.</param>
    /// <returns>DataTable containing Excel data.</returns>
    public static DataTable ExcelDataToDataTable(string filePath, string sheetName, bool hasHeader = true)
    {
        DataTable dt = new DataTable();
        var fi = new FileInfo(filePath);

        // Check if the file exists
        if (!fi.Exists)
            throw new Exception("File " + filePath + " does not exist.");

        // Set the license context for EPPlus
        ExcelPackage.LicenseContext = LicenseContext.NonCommercial;

        // Load the Excel file into an EPPlus ExcelPackage
        using (var xlPackage = new ExcelPackage(fi))
        {
            // Get the specified worksheet from the workbook
            var worksheet = xlPackage.Workbook.Worksheets[sheetName];

            // Convert the worksheet to a DataTable, optionally using the first row as column names
            dt = worksheet.Cells[1, 1, worksheet.Dimension.End.Row, worksheet.Dimension.End.Column].ToDataTable(c =>
            {
                c.FirstRowIsColumnNames = hasHeader;
            });
        }

        return dt;
    }
}
$vbLabelText   $csharpLabel

O código acima define um método que recebe parâmetros de entrada, como o caminho do arquivo e o nome da planilha, e retorna um DataTable como saída. Também itera por cada linha do DataTable, imprimindo os dados.

5.1. Saída

A saída será o conteúdo do arquivo Excel impresso no console.

6. Lendo Arquivos do Excel como um DataTable usando IronXL

Converter uma planilha do Excel e lê-la como um DataTable é bastante fácil utilizando IronXL, com apenas algumas linhas de código. Além disso, usaremos o arquivo Excel anterior como entrada.

O exemplo de código a seguir realiza a mesma funcionalidade que o código acima, mas usando o IronXL.

using IronXL;
using System;
using System.Data;

class Program
{
    static void Main(string[] args)
    {
        // Load the Excel file into an IronXL WorkBook
        WorkBook workBook = WorkBook.Load("sample.xlsx");

        // Get the default worksheet from the workbook
        WorkSheet workSheet = workBook.DefaultWorkSheet;

        // Convert the worksheet to a DataTable, specifying that the first row contains column names
        DataTable table = workSheet.ToDataTable(true);

        // Iterate through each row in the DataTable and print its contents
        foreach (DataRow row in table.Rows)
        {
            foreach (var cell in row.ItemArray)
            {
                Console.Write(cell + " ");
            }
            Console.WriteLine();
        }
    }
}
using IronXL;
using System;
using System.Data;

class Program
{
    static void Main(string[] args)
    {
        // Load the Excel file into an IronXL WorkBook
        WorkBook workBook = WorkBook.Load("sample.xlsx");

        // Get the default worksheet from the workbook
        WorkSheet workSheet = workBook.DefaultWorkSheet;

        // Convert the worksheet to a DataTable, specifying that the first row contains column names
        DataTable table = workSheet.ToDataTable(true);

        // Iterate through each row in the DataTable and print its contents
        foreach (DataRow row in table.Rows)
        {
            foreach (var cell in row.ItemArray)
            {
                Console.Write(cell + " ");
            }
            Console.WriteLine();
        }
    }
}
$vbLabelText   $csharpLabel

No exemplo de código acima, estamos simplesmente carregando o arquivo Excel e convertendo-o em um DataTable usando o método workSheet.ToDataTable(true).

6.1 Saída

A saída será o conteúdo do arquivo Excel impresso no console.

7. Conclusão

Em conclusão, quando se trata de ler arquivos Excel e convertê-los em DataTables em C#, tanto o EPPlus quanto o IronXL são excelentes bibliotecas que oferecem recursos poderosos e simplificam o processo.

EPPlus é uma biblioteca de código aberto que fornece uma API direta para gerar, ler e modificar planilhas Excel programaticamente. Ele suporta os formatos .xls e .xlsx e oferece desempenho eficiente e gerenciamento de memória.

Por outro lado, IronXL é uma biblioteca versátil que permite aos desenvolvedores trabalharem sem esforço com arquivos Excel em aplicações .NET. Ele oferece uma API intuitiva e recursos abrangentes para extrair dados, realizar cálculos, criar gráficos e gerar relatórios. O IronXL simplifica tarefas complexas de manipulação de arquivos Excel, como importação/exportação de dados, análise de dados e criação de modelos dinâmicos.

Ao comparar os exemplos de código de ambos IronXL e EPPlus, descobrimos que o código do EPPlus é bastante extenso, complexo e difícil de ler. Por outro lado, o código do IronXL é bastante simples e fácil de ler. IronXL usa a planilha padrão, mas no EPPlus, você precisa dar o nome da planilha; do contrário, você receberá um erro.

Em resumo, eu recomendaria IronXL em vez de EPPlus para manipular arquivos Excel e lê-los como DataTables. Além disso, o IronXL oferece muito mais recursos do que o EPPlus ao lidar com arquivos Excel com código simples. Para mais tutoriais sobre IronXL, por favor, visite o seguinte link.

{{i:(EPPlus é uma marca registrada de seu respectivo proprietário. Este site não é afiliado, endossado ou patrocinado pelo EPPlus. 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

Como posso ler dados do Excel e inseri-los em um DataTable em C#?

Você pode usar o IronXL para ler dados do Excel em um DataTable carregando a pasta de trabalho do Excel com WorkBook.Load() , acessando a planilha e usando ToDataTable() para converter os dados.

Quais são as vantagens de usar o IronXL para manipulação do Excel?

IronXL oferece uma API simples e intuitiva que simplifica a manipulação de arquivos Excel. Inclui recursos como extração de dados, cálculos, criação de gráficos e geração de relatórios, tornando-se uma solução completa para desenvolvedores.

O IronXL suporta os formatos de arquivo .xls e .xlsx?

Sim, o IronXL suporta os formatos de arquivo .xls e .xlsx, permitindo flexibilidade no trabalho com diferentes tipos de arquivos do Excel.

Posso usar o IronXL sem o Microsoft Office instalado?

Sim, o IronXL pode ser usado para manipular arquivos do Excel sem a necessidade de instalar o Microsoft Office ou o Excel em seu computador.

Como faço para instalar o IronXL em um projeto .NET?

Para instalar o IronXL, abra o Gerenciador de Pacotes NuGet em seu projeto .NET, procure por 'IronXL' e instale o pacote. Isso adicionará o IronXL ao seu projeto e permitirá que você comece a usar seus recursos.

Quais são alguns problemas comuns ao ler arquivos do Excel em um DataTable e como solucioná-los?

Problemas comuns incluem caminhos de arquivo incorretos, formatos não suportados ou dados formatados incorretamente. Certifique-se de que o caminho do arquivo esteja correto, o formato seja compatível e os dados estejam íntegros. O IronXL fornece mensagens de erro claras para ajudar na solução desses problemas.

Como o IronXL se compara ao EPPlus na leitura de arquivos Excel em um DataTable?

O IronXL destaca-se pela sua facilidade de uso e recursos abrangentes, enquanto o EPPlus também é eficaz, mas pode ser mais complexo de implementar. O IronXL oferece uma API mais direta para desenvolvedores.

O IronXL é adequado para arquivos Excel grandes?

Sim, o IronXL foi projetado para lidar com arquivos grandes do Excel de forma eficiente, oferecendo recursos que otimizam o desempenho e o uso de memória durante a manipulação de arquivos.

O IronXL pode ser usado para análise e geração de relatórios de dados?

Sem dúvida, o IronXL é muito adequado para análise e geração de relatórios de dados, oferecendo recursos robustos para extrair e manipular dados, criar gráficos e gerar relatórios.

Quais são as principais funcionalidades do IronXL que beneficiam os desenvolvedores?

Os principais recursos do IronXL incluem extração de dados simplificada, poderosas capacidades de cálculo, criação fácil de gráficos, geração eficiente de relatórios e ampla compatibilidade com formatos de arquivo do Excel.

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