Gerar Excel em .NET sem Excel instalado

Publicado por Hugo Pires / 8 Comentários

Muitas vezes precisamos de gerar ficheiros Excel nas aplicações que desenvolvemos, mas o Office com Excel nem sempre está instalado, e muitas vezes não o podemos instalar, ou porque não temos licença, ou porque nos é impossível, como é o caso dos servidores partilhados. O NPOI é a solução ideal para resolução deste problema.

Icon Excel

O NPOI é um componente para .NET que permite ler e escrever ficheiros XLS sem ter o Microsoft Office instalado na máquina. Para quem conhece o Apache POI para Java não vai estranhar este componente porque, de facto, esta é uma portabilização para .NET desse componente.

Quais as vantagens

Para além de não necessitar do Excel instalado, existem outras vantagens, como o facto de ser mais leve, e ser mais rápido. Sim leu bem, o NPOI consegue ser mais rápido que o componente da Microsoft. E porquê? Perguntam vocês. Bem este componente é 100% .NET, enquanto o da Microsoft, é um componente COM, que usa como interface o próprio Excel, ou seja, o componente da Microsoft abre uma instância do Excel para gerar o XLS, daí ser mais lento e consumir mais recursos.

Desvantagens

Com o componente da Microsoft é possível fazer praticamente tudo, já com o NPOI, existem ainda muitas funcionalidades por implementar, como por exemplo o suporte para gráficos.

Binarios NPOI

Código Fonte NPOI

Exemplos NPOI

Na categoria Programação

HTML Playground - Aprender HTML e CSS experimentando
HTML 5 - Introdução à Tag Canvas
Tutorial de Python - Controlo de fluxo
HTML - Tabela com cabeçalho e tamanho fixo

8 Comentários a “Gerar Excel em .NET sem Excel instalado”

  1. dulce diz:

    quero instalar o excel

  2. Hugo Pires diz:

    @dulce
    Este tópico fala de como Gerar um ficheiro Excel na framework .NET para programadores da Microsoft, em nada tem a ver com a instalação do Excel.
    Quanto ao seu problema não sei em que a posso ajudar…
    Qual o problema na instalação?
    Tem o CD/DVD original do Office?

  3. Jonas diz:

    ola amigo,
    estou com uma duvida que me levou ao seu blog…
    estou com este problema de dll onde trabalho estamos sem licença do excel pra instalar no servidor de teste entao optei pelo componente sitado acima por voce. Vi que é um pacote de dlls, eu registro no servidor normal pelo windows ou pelo registro do framworks?
    e outra pergunta…. no vs como eu uso ele? como farei referencia a ele?
    pode ma ajudar?

    forte abraço

  4. Hugo Pires diz:

    @Jonas
    Não precisas registar as dlls.
    Para usar basta fazer referência directamente no Visual Studio.
    Para adicionar no Visual Studio, é como qualquer outra dll, ou seja, seleccionas o projecto, clicas com o butão direito do rato sobre o projecto, depois clicas em “Add Reference” e adicionas as dlls do componente.
    Depois, convém verificar os exemplos no link acima, para entender o uso do componente.

    Fica bem :)

  5. Jonas diz:

    ola Hugo,
    eu tinha feito referência mas para Microsoft Excel 12.0 object library na abinha COM.

    Se nao for essa, qual referencia devo adcionar no projeto?
    Estou desenvolvendo para intranet.
    Estou usando este exemplo para gerar meu excel
    http://www.macoratti.net/aspn_gre.htm

    Obrigado mais uma vez.

  6. Jonas diz:

    Meu erro é que O tipo ‘Excel.Workbook’ não está definido.
    Não consigo entender porque nao, sendo que dentro do code-behind não da erro só quano está rodando
    e o interessante é que se rodo local ele funfa mas no servidor nao.

  7. Jonas diz:

    agora se eu quero apenas gerar o relatorio em excel sem grafico ele me da este erro
    Não foi possível encontrar ISAM instalável.
    issso porque estou estraindo dados de um exel

  8. Hugo Pires diz:

    @Jonas,
    Este componente não é compativel com o componente da Microsoft e não é um componente COM, mas sim .NET, por isso o “Excel.Workbook” não existe, existe o ‘HSSFWorkbook’, mas a forma de uso é completamente diferente, por isso recomendo que veja os exemplos do link acima.
    Para adicionar não é na aba “COM”, é na aba “Browse”, onde terás de procurar os dlls do componente para adicionar ao projecto.