Criando um arquivo Excel utilizando EPPlus. (C#/.NET)

Gerar relatórios em Excel é uma coisa relativamente comum e o problema de muitas abordagens é: Ter que usar interop como abordagem para o processo, ou seja, a maquina que vai gerar o relatório (mesmo que seja um servidor) precisa ter o Microsoft Office instalado e isso significa pagar por licenças. Neste post mostro como utilizar o pacote EPPlus, que consegue gerar e manipular arquivos Excel sem a necessidade de utilizar interop.

Vantagens de utilizar o EPPlus:

  1. Não requer instalação do Microsoft Office;
  2. API simples;
  3. Formato compatível com Open Office XML;

 

 

Pre-requisitos

Este pacote não vem instalado/habilitado por padrão nos seus projetos. Sendo assim, podemos utilizar o NuGet para adicioná-lo.

 

Se você não quiser utilizar o console do NuGet, pode utilizar a interface dele e instalar o pacote.

Uma vez que o pacote estiver instalado, basta fazer a importação:

 

 

Estrutura do arquivo Excel

O arquivo Excel é considerado um pacote (package) que possui um Workbook e dentro dele existem as planilhas.

Então a estrutura é:

  • ExcelPackage (Pacote Excel, o seu arquivo)
    • ExcelWorkbook (O elemento que guarda todas as planilhas do seu arquivo)
      • ExcelWorksheet: A planilha em si. Existe uma instancia desta classe para cada planilha que existe no seu arquivo.

 

 

Criando um novo arquivo

Para criar um arquivo, primeiro temos que criar um pacote:

 

Ok. Agora você já possui um pacote e um Workbook (ele é criado automaticamente) .

Para facilitar, podemos separar o Workbook em uma variável. Desta forma, vamos escrever menos:

 

 

Abrindo um arquivo Excel

As vezes você vai precisar abrir um arquivo. Vamos supor que você quer abrir o arquivo c:\temp\planilha.xlsx…

 

No código acima, passamos uma instancia da classe System.IO.FileInfo no construtor do ExcelPackage e utilizará esta informação para abrir o arquivo.

 

 

Adicionando uma planilha (sheet)

Para adicionar uma planilha:

 

No código acima, adicionamos uma planilha com o nome “SheetName”. Você pode adicionar quantas planilhas quiser.

 

 

Recuperando uma planilha

Vamos imaginar que você adicionou varias planilhas ao seu arquivo ou está lendo um arquivo que possui diversas planilhas. Como acessar uma sheet específica?

 

Na classe Workbook existe uma propriedade chamada Worksheets. Ela é uma espécie de lista de Worksheets que te permite acessar os objetos pelo índice ou pelo nome da planilha.

 

O código acima recupera o objeto referente a planilha com nome SheetName.

 

O código acima recupera a segunda planilha do Workbook.

 

O próximo passo é acessar as células da planilha…

 

 

Acessando células da planilha

As células são acessadas através da propriedade Cells. Elas podem ser acessadas de diversas formas.

 

A primeira forma é passando a referência de linha (row) e coluna (col). No código abaixo estou escrevendo a string “oi!” na célula A1 (primeira coluna da primeira linha).

 

Importante: A referencia de linha e coluna para o EPPlus é base 1, ou seja, a primeira linha é a número 1 (em contraste com base zero, que é a forma como acessamos posições nos vetores do C#).

 

Outra forma de escrever “oi!” na primeira célula da primeira linha do Excel é utilizando a forma abaixo, que é passando a referência da célula que desejamos escrever. Note que utilizamos a mesma propriedade (Cells), mas desta vez passamos uma string ao invés de dois inteiros.

 

Você não precisa selecionar apenas uma célula por vez! Você pode selecionar um grupo (range) de células. Abaixo eu seleciono as primeiras colunas da primeira linha e coloco elas em negrito.

 

Nos exemplos acima, selecionamos e alteramos as células de uma vez, mas você pode armazenar a referência para uma célula ou um range de células.

 

No código acima, salvei a referência para a célula A3 e para o range que começa na A1 e vai até a E1.

Outra nota importante: Se você quiser apagar o conteúdo de uma célula, não basta mudar o valor dela para uma string vazia. O Excel considera isso como uma célula preenchida. Se você quiser apagar o conteúdo, deve definir a propriedade Value da célula para null.

 

 

Salvando o arquivo

O que falta agora é salvar o arquivo.

Da forma que fizemos neste exemplo, podemos salva-lo informando o nome do arquivo:

 

Como o pacote (package) é o objeto que representa o arquivo em si, é nele que está a função que salva o arquivo.

Para informar o nome do arquivo você deve passar uma instancia da classe System.IO.FileInfo. O pacote EPPlus vai pegar o nome do arquivo desta instancia e utiliza-lo.

 

Se você preferir, pode passar a instancia da classe FileInfo no momento da criação do pacote. Assim você pode chamar a função Save sem passar qualquer argumentos. (Ou a função SaveAs, passando outra instancia da classe FileInfo para criar uma cópia do arquivo)

 

Este post já está bem grande, mas vale mais uma observação: Para conseguir salvar, o arquivo deve conter, no mínimo, uma planilha!

 

Com este conhecimento, você já é capaz de criar um arquivo (ou editar) um arquivo Excel. No próximo post vou mostrar como mudar a formatação das células, fazendo com que as datas e números sejam exibidos corretamente.

 

Criei um arquivo com este exemplo no meu Github.

 

Espero ter ajudado!

The following two tabs change content below.
Breno RdV
Ex-Psicólogo, com quase uma década de experiência em Recursos Humanos e Gestão de Pessoas, atual desenvolvedor e Analista de Sistemas, trabalhando com PowerBuilder, C#, PowerShell e expandindo horizontes para Python, Xamarin, PHP, Angular e (por que não?) Unity.

Comments

comments

Posted in .Net, Dev and tagged , , , , , .