HSSFworkbook,XSSFworkbook,SXSSFworkbook區別
用JavaPOI匯出Excel時,我們會考慮到Excel版本及資料量的問題。針對不同的Excel版本,要採用不同的工具類。
HSSFWorkbook:是操作Excel2003以前(包括2003)的版本,副檔名是.xls;
XSSFWorkbook:是操作Excel2007的版本,副檔名是.xlsx;
對於不同版本的EXCEL文件要使用不同的工具類,如果使用錯了,會提示如下錯誤資訊:
org.apache.poi.openxml4j.exceptions.InvalidOperationException
org.apache.poi.poifs.filesystem.OfficeXmlFileException
從POI 3.8版本開始,提供了一種基於XSSF的低記憶體佔用的API----SXSSF
當資料量超出65536條後,在使用HSSFWorkbook或XSSFWorkbook,程式會報OutOfMemoryError:Javaheap space;記憶體溢位
錯誤。這時應該用SXSSFworkbook。
注意:針對 SXSSF Beta 3.8下,會有臨時檔案產生,比如:
poi-sxssf-sheet4654655121378979321.xml
檔案位置:java.io.tmpdir這個環境變數下的位置
Windows 7下是C:\Users\xxxxxAppData\Local\Temp
Linux下是 /var/tmp/
要根據實際情況,看是否刪除這些臨時檔案
與XSSF的對比
在一個時間點上,只可以訪問一定數量的資料
不再支援Sheet.clone()
不再支援公式的求值
在使用Excel模板下載資料時將不能動態改變表頭,因為這種方式已經提前把excel寫到硬碟的了就不能再改了
相關文章
- 使用SXSSFWorkbook來匯出excelExcel
- 和區別
- #include <> ““區別
- lamplnmplnamp區別LAMPLNMP
- __weak與__block區別,深層理解兩者區別BloC
- MyISAM InnoDB 區別
- ??與?:的區別
- save() create()區別
- 蜂蜜的區別
- if …if 和if …else if 區別
- 和 的區別
- ojdbc版本區別JDBC
- as 和 with的區別
- &與&&, |與||區別
- UNDO REDO 區別
- GPL、GA區別
- 歸檔區別
- in 和 exists區別
- django版本區別Django
- ||和??的區別
- /*和/**的區別
- LinkedList和ArrayList的區別、Vector和ArrayList的區別
- http和https的區別/get和post的區別HTTP
- js基本型別和引用型別區別JS型別
- 值型別與引用型別的區別型別
- JAVA 基本型別與 引用型別區別Java型別
- UIModalPresentationStyle 各種型別的區別UI型別
- Android中 @和?區別以及?attr/**與@style/**等的區別Android
- mysql索引型別Normal,Unique,Full Text區別以及索引方法Btree,Hash的區別MySql索引型別ORM
- Golang的值型別和引用型別的範圍、儲存區域、區別Golang型別
- @synthesize @dynamic 的區別
- undefined 和 null 區別?UndefinedNull
- <section>與<article> 區別
- showModal()與show() 區別
- localStorage與sessionStorage 區別Session
- SSL和TLS 區別TLS
- ../和./和/的區別
- CMM/CMMI 的區別