2013-06-26 59 views
1

我使用apache poi讀取和寫入excel。我可以做到這一點,沒有任何問題。但我在現有的excel上編寫大型excel時遇到了內存問題。要詳細解釋下面的細節 我有模板,其中列標題是彩色一些合併(我在談論100至150列在一張)我有約10張約。 現在我從數據庫讀取數據並將數據填充到此excel中。 現在對於我能夠做的小數據集,但對於大數據集,它會拋出內存不足。 雖然我從一小塊數據庫中獲取數據,例如1000行數據,但一次處理1000次,然後再次獲取另一組數據。 Maxiumn數據行將是每張50000行,minumun行將是每張紙上的一行poi讀取現有的excel並使用大數據編輯

我已閱讀關於SXSSF,但問題是它不會在現有的Excel上編輯。

請讓我知道你如何解決這個問題的想法。

+0

增加您的Java堆大小和/或爲您的服務器購買更多內存? – Gagravarr

+0

我知道,但我不想增加Java堆大小,請建議另一種解決方案 – user2509885

回答

1

有幾個選項可用,但沒有一個是「銀彈」簡單的答案。不幸的是,Excel文件格式確實需要一點點內存才能使用。

  1. 增加提供給Java的堆大小,因此它可以在同一時間
  2. 買你的服務器更多的內存持有更多的內存,那麼增加堆大小。記憶是相當便宜這些天,它並不需要一個體面的程序員非常多小時工資標準支付費用
  3. 使用不同的文件格式 - CSV例如是在內存佔用
  4. 使用low level SAX API非常輕巧在.xlsx文件中讀取,然後使用SXSSF將其再次寫出,而沒有太多緩衝。雖然需要相當多的自定義編碼,但對於您來說更多的工作不僅僅是使用HSSF/XSSF
  5. 貢獻/贊助內存改進對Apache POI的貢獻。 POI是開放源代碼,免費提供,完全由志願者維護,所以如果您對您有任何問題,您通常最好不要提供幫助!
相關問題