作者kojinvhfsk (野砲蕃薯)
看板java
標題[問題] 有關Java Excel
時間Sat Mar 29 00:19:57 2008
前陣子有個需求,需要將UI上顯示的資訊(ex.JTable、JLabel、JFreeChart)
輸出至Xls檔,在網路上東找西找,找到了Java Excel
包一包後使用,沒問題。
最近增加了一項需求,需要將Txt檔同樣輸出至Xls檔
但這Txt檔算是蠻大的(都是n個欄位*n萬筆資料)
於是,就造成了記憶體不足的情況(問題1)
好吧!只好尋找別的解決方法!
後來選擇了用JDBC將Excel當成資料庫來使用
很好,可以使用,但有了(問題2)
最後…(問題3)出現了!!!
問題1: 當我新增資料至Xls檔時,新增了一堆Cell至Sheet時,這些Cell都是存在記憶體
直到最後workbook.write()時,才一次寫入至檔案,只能這樣子使用嗎?
無法自己控制哪些Cell要先寫入檔案,而不放在記憶體裡嗎?
問題2: 透過JDBC將Xls當做資料庫來使用,同樣要建立Table(也就是Sheet),
並設定其欄位型態,為何設定為varchar的欄位,在用Excel開啟Xls檔後,
他的欄位資料都會多加個「'」呢?(ex.男,就會變成'男)
問題3: 當我用JDBC將n欄*n萬筆資料,全部輸出至Xls檔後,但接下來,
我在別的功能裡,需要再新增Sheet到這個Xls檔,
但…卻在createWorkbook的時候出現記憶體不足!!!
我想請問的是,Java Excel開啟一個Xls檔後,是將其內的所有資料(Sheet、Cell)
全都放到記憶體嗎…?有可能是這樣子嗎?
以上…還煩請有經驗的前輩們指點一二…頭痛啊…頭痛…
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.117.170.85
推 PsMonkey:總覺得... 你的需求很... 不合理 XDXD 03/29 00:41
推 kyoby:拜托用一個database吧...都几千几万了...mysql不要錢的... 03/29 01:16
推 qrtt1:java api產生的xls通常不會格式太新,column有256欄限制.注意 03/29 01:43
→ kojinvhfsk:呵呵…無奈啊,這是使用者指定的需求XD 03/29 06:52
推 qrtt1:難道登入月球列入需求也要答應嗎@@? 03/29 09:19
→ kojinvhfsk:樓上…你的問題我實在不知如何回答… 03/29 10:28
推 godfat:qrtt1 大讓我想到發射火箭的問題... XDD 03/29 10:46
推 qrtt1:俺的意義是說, 要表明做不到的事. 研商雙方可接受的結果 03/29 11:05