java操作excel表格,以前只知道POI。POI是apache公司的一個子項目,主要是提供一組操作windows文檔的Java API。
還有個JXL(java excel),也是個開源項目,用起來的感覺跟POI很類似,因為用到的功能都很簡單,也沒覺得有什麼大的差距。網上找了一些他們的區別,算是給自己掃盲了。
自從 MS 公開了 OFFICE 的編碼格式以來,很多開源的組織都提供了對 Excel 支援讀寫操作的外掛程式包。Java 世界裡,Apache應該算是開源世界中的領頭羊。他的Jakarta Project 中的 POI Project 就提供了對OFFICE的完美支援(不過最近好像他對Word的支援項目已經停止,而且公開在網站上圈人呢 ^^ ,如果你對Word檔案的編碼格式非常熟悉,可以發封郵件哦!)。JXL ,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
。
就這兩者的區別,主要談下JVM虛擬機器記憶體消耗的情況.
資料量3000條資料,每條60列.JVM虛擬機器記憶體大小64M.
使用POI:運行到2800條左右就報記憶體溢出.
使用JXL:3000條全部出來,並且記憶體還有21M的空間.
可想而知,在對記憶體的消耗方面差距還是挺大的.
也許是由於JXL在對資源回收利用方面做的還挺不錯的.
關於兩者效率方面,沒有研究過,我想這個也是基於大資料量而言的,資料量小的話基本上差別不大,也不難被發覺.但是大的資料量,POI消耗的JVM記憶體遠比JXL消耗的多.但相比提供的功能的話,JXL又相對弱了點.所以如果要實現的功能比較複雜的情況下可以考慮使用POI,但如果只想產生一些大資料量可以考慮使用JXL,或者CSV也是一個不錯的選擇,不過CSV並不是真正的excel.
對excel的基本操作
jxl:最基本的excel api
poi:也是基本api,讀取2M檔案的時候沒有jxl效率高,優點是能保持Excel裡原有的宏(但不能用它寫新的宏)。