![]() |
Hoje vou apresentar a biblioteca EPPlus que permite gerar arquivos no formato Excel sem precisar usar a interoperabilidade nem ter o Office instalado. |
Gerar relatórios no formato Excel para gerenciar os dados é uma tarefa comum em muitas empresas. Para fazer isso na plataforma .NET temos que usar os recursos da interoperabilidade, e, dessa forma a máquina onde que vai gerar os arquivos no formato Excel precisa ter o Excel instalado.
![]() ![]() |
A biblioteca EPPlus consegue gerar e manipular arquivos Excel sem precisar usar a interoperabilidade e assim não requer que o Office esteja instalado. Ela gera arquivos no formato Excel compatível com o Open Office XML e tem uma API simples de usar.
Para usar esta biblioteca em seu projeto basta instalar o pacote Nuget : EPPlus
Install-Package
EPPlus -Version 5.6.0
Se você quiser mais informações detalhadas com exemplos, consulte a documentação
no site oficial :
https://www.epplussoftware.com/pt
Conceitos básicos
O EPPlus trata o arquivo Excel como um
pacote (package) que possui um Workbook e, dentro do Workbook existem as
planilhas(sheets).
A estrutura básica é a seguinte:
Para poder usar os recursos do EPPlus em seu código você tem que declarar a licença usada que pode ser de dois tipos: Comercial e não Comercial conforme será mostrado nos exemplos.
A seguir temos exemplos de uso destes objetos:
- Criar um arquivo Excel e um Workbook
var package = new ExcelPackage();
ExcelPackage package = new ExcelPackage(); |
- Separar um workbook criado em um ExcelPackage
var workbook = package.Workbook;
ExcelWorkbook workbook = package.Workbook; |
- Definir a licença usada
ExcelPackage.LicenseContext = LicenseContext.NonCommercial; |
- Abrir um arquivo Excel gerado ou já existente
var package new ExcelPackage(new FileInfo(“nome_arquivo”); |
- Acessar planilhas (sheets) em um WorkBook
var package = new ExcelPackage(new FileInfo("nome_arquivo_excel")); var workbook = package.Workbook; var sheet = workbook.Worksheets["Nome_Planilha"]; |
- Acessar células das planilhas
var row = 1; var col = 1;
sheet.Cells[row, col].Value = “teste";
sheet.Cells["A1"].Value = “teste"; sheet.Cells["A1:C1"].Style.Font.Bold = true; |
Cabe ressaltar que o EPPlus usa o índice para linha e coluna com base 1. Assim a primeira célula possui linha e coluna com índice de valor igual a 1.
No exemplo acima estamos usando a propriedade Cells e acessando uma célula usando a linha e coluna(row e col) e também usando referência da célula ("A1"), e ainda podemos acessar um intervalo de células ("A1:C1").
Vejamos a seguir um exemplo básico onde vamos criar um projeto Console no VS 2019 Community, e usando a EPPLus, vamos gerar um arquivo Excel e a seguir acessar e abrir o arquivo gerado.
Criando uma planilha Excel com o EPPlus
Vamos criar um projeto Console chamado C_EPPlus1 e incluir a referência ao pacote Nuget EPPlus 5.6.0.
No método Main vamos incluir o código onde vamos chamar o método CriaPlanilhaExcel() para criar uma planilha de vendas fictícia e e depois o método AbrePlanilhaExcel() onde vamos abrir essa planilha:
private static void Main(string[] args)
{
// define o nome do arquivo .xlsx
string caminhoPlanilha = @"c:\Dados\xlx\VendasEPPLus.xlsx";
Console.WriteLine("Pressione algo para iniciar");
Console.ReadKey();
CriaPlanilhaExcel(caminhoPlanilha);
Console.WriteLine("Pressione algo para acessar e exibi a planilha\n");
Console.ReadKey();
AbrePlanilhaExcel(caminhoPlanilha);
Console.ReadKey();
}
|
A seguir temo o código do método CriaPlanilhaExcel() que recebe o caminho e nome do arquivo que será criado.
private static void CriaPlanilhaExcel(string caminhoPlanilha)
{
//cria tipo anônimo com os dados da planilha
var Vendas = new[]
{
new { Id = "SP101", Filial="São Paulo", Vendas = 980 },
new { Id = "RJ102", Filial="Rio de Janeiro", Vendas = 840 },
new { Id = "MG103", Filial="Minas Gerais", Vendas = 790 },
new { Id = "BA104", Filial="Bahia", Vendas = 699 },
new { Id = "PR105", Filial="Paraná", Vendas = 775 },
new { Id = "RS106", Filial="Porto Alegre", Vendas = 660 }
};
// define a licença
// cria instância do ExcelPackage
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
ExcelPackage excel = new ExcelPackage();
// nome da planilha
var workSheet = excel.Workbook.Worksheets.Add("PlanilhaVendas");
// define propriedades da planilha
workSheet.TabColor = System.Drawing.Color.Black;
workSheet.DefaultRowHeight = 12;
// Define propriedades da primeira linha
workSheet.Row(1).Height = 20;
workSheet.Row(1).Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
workSheet.Row(1).Style.Font.Bold = true;
// Define o cabeçalho da planilha(base 1)
workSheet.Cells[1, 1].Value = "Cod.";
workSheet.Cells[1, 2].Value = "Filial";
workSheet.Cells[1, 3].Value = "Vendas/mil";
workSheet.Cells["A1:C1"].Style.Font.Italic = true;
// inclui dados na planilha
// inicia na segunda linha
int indice = 2;
foreach (var venda in Vendas)
{
workSheet.Cells[indice, 1].Value = venda.Id;
workSheet.Cells[indice, 2].Value = venda.Filial;
workSheet.Cells[indice, 3].Value = venda.Vendas;
indice++;
}
// Ajusta o tamanho da coluna
workSheet.Column(1).AutoFit();
workSheet.Column(2).AutoFit();
workSheet.Column(3).AutoFit();
//se o arquivo existir exclui
if (File.Exists(caminhoPlanilha))
File.Delete(caminhoPlanilha);
// Cria o arquivo excel no disco fisico
FileStream objFileStrm = File.Create(caminhoPlanilha);
objFileStrm.Close();
// Escreve o conteudo para o arquivo excel
File.WriteAllBytes(caminhoPlanilha, excel.GetAsByteArray());
//Fecha o arquivo excel
excel.Dispose();
Console.WriteLine($"Planilha criada com sucesso em : {caminhoPlanilha}\n");
} |
Será gerado o arquivo no formato excel com extensão .xlsx chamado VendasEPPlus.xlsx que quando aberto mostra o conteúdo a seguir:
O método AbrePlanilhaExcel() recebe o caminho e nome da planilha criada e abre o arquivo percorrendo e exibindo os dados no console:
private static void
AbrePlanilhaExcel(string caminhoPlanilha) { //abre a planilha criada var arquivoExcel = new ExcelPackage(new FileInfo(caminhoPlanilha));
//Localiza e planilha a ser acessada
//obtem o numero de linhas e colunas
// percorre as linhas e colunas da planilha |
Executando o projeto iremos ter o seguinte resultado final:
Pegue o projeto completo aqui :
C_EPPlus1.zip
"Os que confiam no SENHOR serão como
o monte de Sião, que não se abala, mas permanece para sempre."
Salmos 125:1
Referências:
Guia básico de sobrevivência VB .NET e Excel
ADO .NET - Acesso Assíncrono aos dados
Apostila Excel - Macros e Visual Basic for ...
C# - Programação Funcional - Exemplos
C# - Criando um Arquivo Excel -
C# - Coleções Imutáveis - Macoratti
C# - Lendo, Incluindo e Atualizado dados de uma planilha Excel
C# 9.0 - Apresentando Records - Macoratti.net
Excel - Acessando dados com ADO
C# - Os 10 Erros mais comuns dos iniciantes
Excel e VB - Importando e Exportando dados
VBA - Criando um projeto no Excel
C# - Otimizando o código - Macoratti
VBA - Cadastro de Clientes (Excel)