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的簡單使用
- 和區別
- #include <> ““區別
- __weak與__block區別,深層理解兩者區別BloC
- LinkedList和ArrayList的區別、Vector和ArrayList的區別
- http和https的區別/get和post的區別HTTP
- django版本區別Django
- MyISAM InnoDB 區別
- simulink模式區別模式
- ||和??的區別
- /*和/**的區別
- save() create()區別
- ??與?:的區別
- 蜂蜜的區別
- js基本型別和引用型別區別JS型別
- 值型別與引用型別的區別型別
- UIModalPresentationStyle 各種型別的區別UI型別
- Golang的值型別和引用型別的範圍、儲存區域、區別Golang型別
- mysql索引型別Normal,Unique,Full Text區別以及索引方法Btree,Hash的區別MySql索引型別ORM
- scala中:: , +:, :+, :::, +++的區別
- mouseenter與mouseover區別
- java arrayList vector 區別Java
- Synchronize和ReentrantLock區別ReentrantLock
- currentTarget與target區別
- String、StringBuffer、StringBuilder區別?UI
- SSL和TLS 區別TLS
- mouseout與mouseleave區別
- call、apply、bind 區別APP
- classList與className區別
- jquery $(this) 和this的區別jQuery
- innerText與textContent區別
- nio aio netty區別AINetty
- GET與POST區別
- let與const區別
- ClassNotFoundException和NoClassDefFoundError區別ExceptionError
- NIO與IO區別
- break,continue,return區別
- 區別mouseover與mouseenter?