POI 與 JXL 的一點比較——關於使用Java操作excel文件

java操作excel表格,基本上有兩種主流的方法,涉及到兩種API,第一個是POI。POI是apache公司的一個子項目,主要是提供一組操作windows文檔的Java API,自從 MS 公開了 OFFICE 的編碼格式以來,很多開源的組織都提供了對 Excel 支持讀寫操作的插件包。Java 世界裏,Apache應該算是開源世界中的領頭羊。他的Jakarta Project 中的 POI Project 就提供了對OFFICE的完美支持。第二個是JXL(java excel),Java Excel是一開放源碼項目,通過它Java開發人員可以讀取Excel文件的內容、創建新的Excel文件、更新已經存在的Excel文件。使用該API非Windows操作系統也可以通過純Java應用來處理Excel數據表。因爲是使用Java編寫的,所以我們在Web應用中可以通過JSP、Servlet來調用API實現對Excel數據表的訪問。

Jakarta 的 POI Project 與 Java Excel API 在開源世界中可以說是並駕齊驅,但是也各有優劣,poi在某些細節有些小Bug並且不支持寫入圖片(poi其實可以寫入圖片,不過沒有jxl來的方便,比較麻煩),其他方面都挺不錯的;而JXL提供了對圖片的支持(但是僅僅支持png格式的圖片),問題就是對公式支持不是很好,但還是提供了簡單的公式讀取支持。因此你的項目中要選用什麼樣的第三方插件爲完全由你的應用來決定。如果你的軟件是跟財務有相當的關係的話,建議採用 POI Project,如果用不到計算公式,而且很可能需要導出圖片,可選擇JXL 。


網上找到了一些測試結果:


數據量3000條數據,每條60列.JVM虛擬機內存大小64M. 
使用POI:運行到2800條左右就報內存溢出. 
使用JXL:3000條全部出來,並且內存還有21M的空間. 
可想而知,在對內存的消耗方面差距還是挺大的. 也許是由於JXL在對資源回收利用方面做的還挺不錯的. 關於兩者效率方面,沒有研究過,我想這個也是基於大數據量而言的,數據量小的話基本上差別不大,也不難被發覺.但是大的數據量,POI 消耗的JVM內存遠比JXL消耗的多.但相比提供的功能的話,JXL又相對弱了點.

所以如果要實現的功能比較複雜的情況下可以考慮使用POI,但如果只想生成一些大數據量可以考慮使用JXL。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章