Ir para o conteúdo do rodapé
USANDO O IRONXL

Como abrir arquivos do Excel em C#

IronXL permite que desenvolvedores C# abram, leiam e manipulem arquivos Excel sem precisar instalar o Microsoft Office. Carregue simplesmente as planilhas usando WorkBook.Load(), acesse as folhas de cálculo e leia os valores das células com uma sintaxe intuitiva como sheet["A1"].

Este tutorial explora o uso do IronXL para abrir e ler arquivos Excel em projetos C#, fornecendo exemplos abrangentes e práticas recomendadas para desenvolvedores juniores trabalhando com dados do Excel.

O que é a Biblioteca Excel IronXL?

IronXL é uma biblioteca .NET que prioriza facilidade de uso, precisão e velocidade. Ela ajuda você a abrir, ler, criar e editar arquivos Excel eficientemente sem precisar do MS Office Interop, tornando-se uma escolha prática para desenvolvedores que buscam trabalhar com Excel em C# sem Interop.

IronXL é compatível com todos os .NET Frameworks juntamente com Linux, macOS, Docker, Azure, e AWS. Você pode usá-la para criar Aplicações de Console, Web e Desktop, como Blazor e .NET MAUI para aplicativos Web modernos. Ela suporta diferentes formatos de workbook como arquivos XLS e XLSX, XSLT e XLSM, CSV, e TSV.

Quais são os principais recursos do IronXL?

Como abrir um arquivo Excel em C#?

O que preciso antes de começar?

Para usar o IronXL em aplicações C#, instale os seguintes componentes no seu computador local:

  1. Visual Studio - O IDE oficial para desenvolvimento de aplicações .NET em C#. Você pode baixar e instalar o Visual Studio no site da Microsoft. Você também pode usar JetBrains ReSharper & Rider. Para orientações adicionais de configuração, consulte o Visão Geral de Introdução.
  2. IronXL - A biblioteca Excel que ajuda a trabalhar com planilhas Excel em C#. Deve ser instalada em sua aplicação C# antes de usá-la. Você pode baixá-lo do site do NuGet ou do Gerenciador de Pacotes NuGet no Visual Studio. Você também pode baixar o arquivo .NET Excel DLL diretamente. Para implementação de licenças, consulte Usando Chaves de Licença.

Quais Namespaces Devo Importar?

Uma vez que o Visual Studio e o IronXL estejam instalados, adicione os namespaces necessários do IronXL incluindo a seguinte linha no topo do seu arquivo C#:

// Add reference to the IronXL library
using IronXL;
// Add reference to the IronXL library
using IronXL;
$vbLabelText   $csharpLabel

Para trabalhar com formatos Excel específicos ou recursos avançados, você também pode precisar de:

using IronXl.Formatting;  // For cell styling
using IronXl.Drawing;     // For images and charts
using System.Data;        // For DataSet/DataTable operations
using IronXl.Formatting;  // For cell styling
using IronXl.Drawing;     // For images and charts
using System.Data;        // For DataSet/DataTable operations
$vbLabelText   $csharpLabel

Como Carregar um Arquivo Excel Existente?

Arquivos Excel, também conhecidos como cadernos de trabalho, consistem em várias planilhas, cada uma contendo valores de células. Para abrir e ler um arquivo Excel, carregue-o usando o método WorkBook da classe Load. A funcionalidade LoadSpreadsheets suporta vários formatos.

// Supported Excel spreadsheet formats for reading include: XLSX, XLS, CSV, and TSV
WorkBook workbook = WorkBook.Load("test.xlsx");

// You can also load from streams for web applications
// using (var stream = File.OpenRead("test.xlsx"))
// {
//     WorkBook workbook = WorkBook.Load(stream);
// }
// Supported Excel spreadsheet formats for reading include: XLSX, XLS, CSV, and TSV
WorkBook workbook = WorkBook.Load("test.xlsx");

// You can also load from streams for web applications
// using (var stream = File.OpenRead("test.xlsx"))
// {
//     WorkBook workbook = WorkBook.Load(stream);
// }
$vbLabelText   $csharpLabel

Isso inicializa a planilha como uma instância WorkBook. Para abrir uma WorkSheet específica, recupere-a da coleção WorkSheets. O guia Manage Worksheet fornece mais detalhes sobre operações de planilha:

// Access the first worksheet in the workbook
WorkSheet sheet = workbook.WorkSheets.First();

// Alternative ways to access worksheets
WorkSheet sheetByIndex = workbook.WorkSheets[0];  // By index
WorkSheet sheetByName = workbook.GetWorkSheet("Sheet1");  // By name
// Access the first worksheet in the workbook
WorkSheet sheet = workbook.WorkSheets.First();

// Alternative ways to access worksheets
WorkSheet sheetByIndex = workbook.WorkSheets[0];  // By index
WorkSheet sheetByName = workbook.GetWorkSheet("Sheet1");  // By name
$vbLabelText   $csharpLabel

Isso acessa a primeira planilha no arquivo Excel, pronta para leitura e escrita.

Planilha do Excel mostrando dados de funcionários com colunas para Nome, Cargo e Salário para 5 empregados com cabeçalhos formatados e bordas de célula Arquivo Excel

Como Ler Dados de Células do Excel?

Uma vez que o arquivo Excel esteja aberto, está pronto para leitura de dados. Ler dados de arquivos Excel em C# usando IronXL é direto. Você pode ler valores de células especificando a referência da célula usando a funcionalidade Select Range.

O código a seguir recupera o valor de uma célula:

// Select the cell using Excel notation and retrieve its integer value
int cellValue = sheet["C2"].IntValue;

// You can also retrieve values in different formats
string textValue = sheet["C2"].StringValue;
decimal decimalValue = sheet["C2"].DecimalValue;
DateTime dateValue = sheet["C2"].DateTimeValue;
bool boolValue = sheet["C2"].BoolValue;

// Display the value in the console
Console.WriteLine($"Cell C2 contains: {cellValue}");

// Check if cell is empty before reading
if (!sheet["C2"].IsEmpty)
{
    Console.WriteLine($"Cell value: {sheet["C2"].Value}");
}
// Select the cell using Excel notation and retrieve its integer value
int cellValue = sheet["C2"].IntValue;

// You can also retrieve values in different formats
string textValue = sheet["C2"].StringValue;
decimal decimalValue = sheet["C2"].DecimalValue;
DateTime dateValue = sheet["C2"].DateTimeValue;
bool boolValue = sheet["C2"].BoolValue;

// Display the value in the console
Console.WriteLine($"Cell C2 contains: {cellValue}");

// Check if cell is empty before reading
if (!sheet["C2"].IsEmpty)
{
    Console.WriteLine($"Cell value: {sheet["C2"].Value}");
}
$vbLabelText   $csharpLabel

O resultado é o seguinte:

Janela do Console de Depuração do Microsoft Visual Studio mostrando a extração bem-sucedida do valor '100000' da célula Excel C2 com mensagem de saída contextual Leia o Excel

Para ler dados de um intervalo de células, use um loop para iterar pelo intervalo especificado. O exemplo Select Excel Range fornece mais padrões:

// Iterate through a range of cells and display their address and text content
foreach (var cell in sheet["A2:A6"])
{
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}

// Read an entire column
foreach (var cell in sheet.GetColumn(0))  // Column A
{
    if (!cell.IsEmpty)
    {
        Console.WriteLine($"Column A value: {cell.Text}");
    }
}

// Read an entire row
foreach (var cell in sheet.GetRow(1))  // Row 2
{
    Console.WriteLine($"Row 2 value: {cell.Text}");
}
// Iterate through a range of cells and display their address and text content
foreach (var cell in sheet["A2:A6"])
{
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}

// Read an entire column
foreach (var cell in sheet.GetColumn(0))  // Column A
{
    if (!cell.IsEmpty)
    {
        Console.WriteLine($"Column A value: {cell.Text}");
    }
}

// Read an entire row
foreach (var cell in sheet.GetRow(1))  // Row 2
{
    Console.WriteLine($"Row 2 value: {cell.Text}");
}
$vbLabelText   $csharpLabel

Cada valor no intervalo de células A2:A6 é acessado e impresso no console.

Console de Depuração do Microsoft Visual Studio com destaque de sintaxe mostrando saída da leitura do intervalo Excel A2:A6, exibindo os nomes dos funcionários John, Sara, Peter, Method e Katherine Intervalo de leitura de células

Para exemplos mais detalhados de leitura e escrita, consulte o tutorial de leitura do Excel em C#. Você também pode converter dados do Excel para DataTables para facilitar a manipulação:

// Convert worksheet to DataTable for easier data manipulation
DataTable dataTable = sheet.ToDataTable(true);  // true = first row contains headers

// Access data using DataTable methods
foreach (DataRow row in dataTable.Rows)
{
    Console.WriteLine($"Employee: {row["Name"]}, Salary: {row["Salary"]}");
}
// Convert worksheet to DataTable for easier data manipulation
DataTable dataTable = sheet.ToDataTable(true);  // true = first row contains headers

// Access data using DataTable methods
foreach (DataRow row in dataTable.Rows)
{
    Console.WriteLine($"Employee: {row["Name"]}, Salary: {row["Salary"]}");
}
$vbLabelText   $csharpLabel

Como Posso Criar um Novo Arquivo Excel?

O IronXL também facilita a criação de novos cadernos de trabalho para salvamento e recuperação de dados. O guia Create Spreadsheets fornece exemplos abrangentes.

Você pode criar um novo arquivo Excel com uma única linha de código:

// Create a new workbook with the XLSX format
WorkBook workBook = new WorkBook(ExcelFileFormat.XLSX);

// Alternative: Create with XLS format for compatibility
WorkBook xlsWorkBook = new WorkBook(ExcelFileFormat.XLS);

// Set workbook metadata
workBook.Metadata.Title = "Employee Data";
workBook.Metadata.Author = "Your Name";
workBook.Metadata.Keywords = "employees, salary, data";
// Create a new workbook with the XLSX format
WorkBook workBook = new WorkBook(ExcelFileFormat.XLSX);

// Alternative: Create with XLS format for compatibility
WorkBook xlsWorkBook = new WorkBook(ExcelFileFormat.XLS);

// Set workbook metadata
workBook.Metadata.Title = "Employee Data";
workBook.Metadata.Author = "Your Name";
workBook.Metadata.Keywords = "employees, salary, data";
$vbLabelText   $csharpLabel

Em seguida, crie uma planilha e adicione dados a ela. Para padrões de criação mais avançados, veja Create a new Excel File.

Como Adicionar Planilhas a um Caderno de Trabalho?

// Create a worksheet named "GDPByCountry" in the workbook
WorkSheet workSheet = workBook.CreateWorkSheet("GDPByCountry");

// Create multiple worksheets at once
WorkSheet sheet2 = workBook.CreateWorkSheet("PopulationData");
WorkSheet sheet3 = workBook.CreateWorkSheet("Summary");

// Copy an existing worksheet
WorkSheet copiedSheet = workSheet.CopySheet("GDPByCountryCopy");
// Create a worksheet named "GDPByCountry" in the workbook
WorkSheet workSheet = workBook.CreateWorkSheet("GDPByCountry");

// Create multiple worksheets at once
WorkSheet sheet2 = workBook.CreateWorkSheet("PopulationData");
WorkSheet sheet3 = workBook.CreateWorkSheet("Summary");

// Copy an existing worksheet
WorkSheet copiedSheet = workSheet.CopySheet("GDPByCountryCopy");
$vbLabelText   $csharpLabel

Este código adiciona uma planilha chamada "GDPByCountry" ao caderno de trabalho, permitindo adicionar valores de células. Saiba mais sobre gerenciamento de planilhas e cópia de planilhas.

Para definir um valor para uma célula específica, use o código abaixo:

// Set the value of cell A1 to "Example"
workSheet["A1"].Value = "Example";

// Add different types of data
workSheet["A2"].Value = 12345;  // Integer
workSheet["A3"].Value = 99.99m;  // Decimal
workSheet["A4"].Value = DateTime.Now;  // Date
workSheet["A5"].Value = true;  // Boolean

// Add formulas
workSheet["B1"].Formula = "=SUM(A2:A3)";

// Set multiple cells at once using a range
workSheet["C1:C5"].Value = "Bulk Value";

// Save the workbook
workBook.SaveAs("output.xlsx");
// Set the value of cell A1 to "Example"
workSheet["A1"].Value = "Example";

// Add different types of data
workSheet["A2"].Value = 12345;  // Integer
workSheet["A3"].Value = 99.99m;  // Decimal
workSheet["A4"].Value = DateTime.Now;  // Date
workSheet["A5"].Value = true;  // Boolean

// Add formulas
workSheet["B1"].Formula = "=SUM(A2:A3)";

// Set multiple cells at once using a range
workSheet["C1:C5"].Value = "Bulk Value";

// Save the workbook
workBook.SaveAs("output.xlsx");
$vbLabelText   $csharpLabel

A saída final é:

Planilha do Excel mostrando a célula A1 preenchida com o texto 'Exemplo' adicionado programaticamente usando C#, com a aba da planilha GDPByCountry visível e destaque de célula para mostrar o valor adicionado Adicionar Valor à Célula

Trabalhando com Diferentes Formatos de Excel

IronXL suporta vários formatos Excel. Veja como lidar com diferentes tipos de arquivos:

// Convert between formats
WorkBook workbook = WorkBook.Load("data.csv");
workbook.SaveAs("data.xlsx");  // Convert CSV to XLSX

// Export to different formats
workbook.SaveAsCsv("output.csv", ";");  // CSV with semicolon delimiter
workbook.SaveAsJson("output.json");     // Export as JSON
workbook.SaveAsXml("output.xml");       // Export as XML
// Convert between formats
WorkBook workbook = WorkBook.Load("data.csv");
workbook.SaveAs("data.xlsx");  // Convert CSV to XLSX

// Export to different formats
workbook.SaveAsCsv("output.csv", ";");  // CSV with semicolon delimiter
workbook.SaveAsJson("output.json");     // Export as JSON
workbook.SaveAsXml("output.xml");       // Export as XML
$vbLabelText   $csharpLabel

Saiba mais sobre conversão de tipos de arquivos de planilha e conversão de XLSX para CSV, JSON, XML.

Tratamento de Erros e Melhores Práticas

Ao trabalhar com arquivos Excel, implemente a manipulação de erros adequada:

try
{
    WorkBook workbook = WorkBook.Load("test.xlsx");
    WorkSheet sheet = workbook.GetWorkSheet("Sheet1");

    // Check if sheet exists
    if (sheet == null)
    {
        Console.WriteLine("Worksheet not found!");
        return;
    }

    // Process data
    var value = sheet["A1"].Value;
}
catch (Exception ex)
{
    Console.WriteLine($"Error reading Excel file: {ex.Message}");
}
try
{
    WorkBook workbook = WorkBook.Load("test.xlsx");
    WorkSheet sheet = workbook.GetWorkSheet("Sheet1");

    // Check if sheet exists
    if (sheet == null)
    {
        Console.WriteLine("Worksheet not found!");
        return;
    }

    // Process data
    var value = sheet["A1"].Value;
}
catch (Exception ex)
{
    Console.WriteLine($"Error reading Excel file: {ex.Message}");
}
$vbLabelText   $csharpLabel

Para aplicativos em produção, considere configurar o registro e implementar padrões adequados de manipulação de erros.

O que aprendemos?

Este artigo demonstra como abrir e ler arquivos Excel, como XLS e XLSX, em C# usando IronXL. IronXL não requer que o Microsoft Excel esteja instalado no sistema para tarefas relacionadas ao Excel, tornando-o perfeito para implementações no Docker e funções Azure.

O IronXL fornece uma solução abrangente para tarefas relacionadas ao Excel programaticamente, incluindo cálculo de fórmulas, ordenação de strings, recorte, localizar e substituir, mesclar e desmesclar, salvar arquivos e mais. Você também pode definir formatos de dados das células, trabalhar com formatação condicional e criar gráficos.

Para recursos avançados, explore agrupar e desagrupar, intervalos nomeados, hyperlinks e proteger arquivos Excel. A Referência da API completa oferece documentação detalhada para todos os recursos.

IronXL está disponível para um teste gratuito de 30 dias e pode ser licenciado para uso comercial. O pacote Lite do IronXL começa a partir de $799. Para recursos adicionais, visite a seção de tutoriais ou explore exemplos de código para cenários comuns.

Perguntas frequentes

Como posso abrir arquivos do Excel em C# sem usar Interop?

É possível abrir arquivos do Excel em C# sem usar Interop, utilizando a biblioteca IronXL. Use o método WorkBook.Load para carregar um arquivo do Excel em uma instância WorkBook , o que permite acessar e manipular os dados dentro do arquivo.

Quais formatos de arquivo são compatíveis com esta biblioteca C# para Excel?

O IronXL oferece suporte a diversos formatos de arquivo do Excel, incluindo XLS, XLSX, CSV e TSV. Isso permite que os desenvolvedores abram, leiam e gravem esses formatos de forma flexível em seus aplicativos C#.

Posso editar arquivos do Excel em C# usando esta biblioteca?

Sim, você pode editar arquivos do Excel usando o IronXL. Depois de carregar uma pasta de trabalho, você pode modificar dados, adicionar novas planilhas e salvar as alterações de volta no arquivo ou exportá-lo em vários formatos.

Como faço para instalar esta biblioteca para usá-la no meu projeto C#?

Para instalar o IronXL em seu projeto C#, você pode usar o Gerenciador de Pacotes NuGet no Visual Studio para adicionar a biblioteca. Como alternativa, você pode baixar a DLL do Excel for .NET e referenciá-la em seu projeto.

É possível criptografar arquivos do Excel usando esta biblioteca?

Sim, o IronXL permite criptografar e descriptografar arquivos do Excel. Você pode proteger seus documentos do Excel com senhas para resguardar dados confidenciais durante as operações com os arquivos.

Esta biblioteca suporta o recálculo de fórmulas em planilhas do Excel?

O IronXL suporta o recálculo automático de fórmulas, garantindo que quaisquer alterações nos dados atualizem automaticamente as fórmulas, tal como no Excel.

Como posso ler valores de células específicas em uma planilha do Excel usando esta biblioteca?

Para ler valores de células específicas usando o IronXL, você pode referenciar a célula usando a notação do Excel. Por exemplo, sheet["A1"].StringValue recuperará o valor da string da célula A1.

Esta biblioteca pode ser usada em diferentes sistemas operacionais?

Sim, o IronXL é compatível com diversos sistemas operacionais, incluindo Windows, Linux e macOS. Ele também suporta implantação em ambientes Docker, Azure e AWS.

Quais são as vantagens de usar esta biblioteca em vez da MS Office Interop?

O IronXL oferece diversas vantagens em relação ao MS Office Interop, como não exigir a instalação do Excel no sistema, melhor desempenho em ambientes de servidor e facilidade de uso com aplicativos .NET modernos.

Existe alguma versão de avaliação gratuita disponível para esta biblioteca C# para Excel?

Sim, o IronXL oferece um período de teste gratuito de 30 dias, permitindo que você experimente seus recursos e funcionalidades antes de decidir por uma licença comercial para seus projetos.

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