1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Problema ao gerar excel muito grande com Apache Poi

Tenho uma aplicação jsf com primefaces, nela há um botão que é responsável por gerar um xlsx no servidor e outro botão que depois de gerado, faz a ação do download desse arquivo gerado.

Para gerar o xlsx, estou usando o POI-XSSF (poi-3.9), trago a lista do banco de dados e mando popular e gerar o arquivo excel.

Para gerar um arquivo com 5500 linhas, não tenho problema. O problema está numa lista com 120500 linhas, nenhum erro é mostrado mas o arquivo também não é gerado.

Pelo que eu pesquisei o limite é em torno de 65000 linhas.

Não será difícil precisar gerar um arquivo com mais de 1 milhão de linhas.

Há alguma forma de gerar esse excel com um número gigantesco de linhas? Será que é melhor gerar um CSV?

Obrigado!

  • opá, eae heitor blz, sera que com essa API num daria certo http://jxls.sourceforge.net/

    renatorudolf   26 de jan de 2015
  • Se for apenas texto sem formatação nem nada, recomendo gerar CSV mesmo.

    lucastody   27 de jan de 2015
  • O limite do Excel é 65536 linhas. Você pode totalizar, sumarizar ou subtotalizar estes dados ou dividir em páginas, se for necessário.

    Alexandre   27 de jan de 2015
  • Alexandre pelo que eu pesquisei, o xls tem esse limite, mas o xlsx não. Porém parece que se usar o XSSF há algum problema com estouro de memória, usando o SXSSF há um controle book = new SXSSFWorkbook(100); onde 100 é o tamanho do bloco em linhas que será escrito em disco a cada vez.

    Heitor   27 de jan de 2015
  • Heitor, você está certíssimo! Fiz uma pesquisa rápida e o Excel 2007 passou a comportar 16x mais linhas, totalizando assim 1048576 linhas. Em relação ao seu estouro de memória, estas linhas possuem formatação? Pois se não possuírem, segue o conselho do lucastody e gera CSV mesmo. Se precisar ter formatado mesmo dá uma olhada no TYPE_FORWARD_ONLY do ResultSet e vê se te ajuda :)

    Alexandre   27 de jan de 2015
Mostrar todos os 8 comentários>
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags jsf primefaces excel ou faça a sua própria pergunta.