2010-10-12 6 views
0

que je suis autour de la recherche d'une solution à ce problème et n'ont pas trouvé quelque chose de bon = (Exception d'espace de tas de POI ou n'importe quelle API Java alternative pour Excel 2007?

Le problème est que je dois créer un fichier Excel à registres et quand 50000 je fais cela me montrer ce erreur à 50,000 application registre:

espace de tas java

pour autant que je suis à la recherche sur, une façon de résoudre ce problème est de plus en plus la mémoire du tas, mais tout à fait ne pas comme moi (premiers soins) parce que la le problème persiste si le fichier devient plus grand et le serveur se fige et consomme beaucoup de mémoire en essayant de le faire et devient lent

Je pense qu'une solution serait écrite sur le fichier Excel au lieu de laisser les données dans la mémoire de tas, mais je ne l'obtiens pas le travail

des idées? ou un autre cadre pour les fichiers Excel 2007 ???????

Répondre

1

Appelez la méthode write() sur votre HSSFWorkbook persister votre classeur Excel dans un fichier:

FileOutputStream fileOut = new FileOutputStream("workbook.xls"); 
wb.write(fileOut); 
fileOut.close(); 

Mais comme this thread indique qu'il n'y a pas moyen de faire le streaming écrit à déposer dans POI. Les alternatives aux POI sont jXLS (open source) ou Aspose.Cells for Java (propriétaire)

+0

en fait aussi loin que j'ai testé sur quand je suis debuggin le programme, le fichier excel crée quand fileOut.close(); je ne sais pas pourquoi, altso j'ai essayé d'appeler écrire metod en multiples instance pour libérer la mémoire de tas, travaillé, mais seulement écrit la dernière partie du fichier = ( – ErVeY

+0

POI n'est pas génial sur la mémoire.Si vous voulez écrire un énorme fichier, vous devriez avoir une énorme mémoire – bwawok

+0

le message montre la même erreur que le mien, jxls est basé dans la bibliothèque de POI donc ne pense pas que cela fonctionnera, je pense que la solution pourrait être cellule asse, mais j'ai besoin de quelque chose gratuitement = (, Je vais continuer à chercher autour de thx pour votre temps = D – ErVeY

Questions connexes