2010-10-12 37 views
0

我一直在尋找這個問題的解決方案,並沒有發現任何好=(POI堆空間異常或用於Excel 2007的任何其他java api?

所以問題是我需要創建一個多達50.000寄存器的Excel文件,當我這樣做給我看這個錯誤在50.000應用程序註冊:

Java堆空間

至於我要找的,解決方法之一就是增加了堆內存,但相當不喜歡我(第一個艾滋病),因爲問題依然存在,如果文件變大並且服務器凍結並佔用大量內存,試圖這樣做並且變得緩慢

我認爲一個解決方案將寫出Excel文件,而不是將數據留在堆內存中,但我不明白它的工作

任何想法?或Excel 2007文件的另一個框架???????

回答

1

調用write()方法對你HSSFWorkbook,以保存Excel工作簿文件:

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

但作爲this thread表示沒有辦法做流中寫道POI到文件。 POI的替代品是jXLS(開源)或Aspose.Cells for Java(專有)

+0

實際上,據我一直在測試時,我調試程序,Excel文件創建fileOut.close()時;不知道爲什麼,altso我嘗試調用寫入metod在多個實例來釋放堆內存,工作,但只寫了文件的最後部分=( – ErVeY 2010-10-12 19:39:03

+0

POI是不是偉大的內存。如果你想寫一個巨大的文件,你應該有巨大的內存。 – bwawok 2010-10-13 02:02:17

+0

threaad顯示與我的相同的錯誤,jxls是基於POI庫,所以不認爲它會工作,我認爲解決方案可以aspose細胞,但我需要的東西免費=(,我會繼續環顧你的時間= D – ErVeY 2010-10-15 13:04:16