HSSFworkbook,XSSFworkbook,SXSSFworkbook區別

ZHOU_VIP發表於2019-03-06

用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寫到硬碟的了就不能再改了

https://blog.csdn.net/qq_34869143/article/details/76512289

相關文章