
EPPlus: Ler Excel para Datatable em C# (Tutorial IronXL)
Procurando uma biblioteca 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 indústrias e domínios, como análise e relatório de dados, importação de dados para 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 de Excel for .NET Core em C# que oferecem este recurso de ler dados de Excel e arquivos Excel em um DataTable. As bibliotecas são
- EPPlus
- 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, vamos examinar o código para ler Excel como um DataTable usando o pacote Excel da biblioteca EPPlus em C#.
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;
}
}Imports OfficeOpenXml
Imports System
Imports System.Data
Imports System.IO
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim path = "sample.xlsx" ' Specify the path to your Excel file
Dim data = ExcelDataToDataTable(path, "Table")
' Iterate through each row in the DataTable and print its contents
For Each row As DataRow In data.Rows
For Each wsrow In row.ItemArray
Console.Write(wsrow & " ")
Next wsrow
Console.WriteLine()
Next row
End Sub
''' <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 Shared Function ExcelDataToDataTable(ByVal filePath As String, ByVal sheetName As String, Optional ByVal hasHeader As Boolean = True) As DataTable
Dim dt As New DataTable()
Dim fi = New FileInfo(filePath)
' Check if the file exists
If Not fi.Exists Then
Throw New Exception("File " & filePath & " does not exist.")
End If
' Set the license context for EPPlus
ExcelPackage.LicenseContext = LicenseContext.NonCommercial
' Load the Excel file into an EPPlus ExcelPackage
Using xlPackage = New ExcelPackage(fi)
' Get the specified worksheet from the workbook
Dim 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(Sub(c)
c.FirstRowIsColumnNames = hasHeader
End Sub)
End Using
Return dt
End Function
End ClassO 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. Ele 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 Excel e lê-la como um DataTable é bastante fácil usando 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();
}
}
}Imports IronXL
Imports System
Imports System.Data
Friend Class Program
Shared Sub Main(ByVal args() As String)
' Load the Excel file into an IronXL WorkBook
Dim workBook As WorkBook = WorkBook.Load("sample.xlsx")
' Get the default worksheet from the workbook
Dim workSheet As WorkSheet = workBook.DefaultWorkSheet
' Convert the worksheet to a DataTable, specifying that the first row contains column names
Dim table As DataTable = workSheet.ToDataTable(True)
' Iterate through each row in the DataTable and print its contents
For Each row As DataRow In table.Rows
For Each cell In row.ItemArray
Console.Write(cell & " ")
Next cell
Console.WriteLine()
Next row
End Sub
End ClassNo exemplo de código acima, estamos simplesmente carregando o arquivo Excel e convertendo-o para 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 para DataTables em C#, tanto EPPlus quanto 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 o IronXL em vez do 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.

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.
Artigos relacionados



