一、簡單瞭解一下
1.poi屬於Apache產品,具體使用請參考官網地址:http://poi.apache.org/。
2.Apache poi 是java編寫、免費開源、跨平臺java api。
3.poi英文全拼Poor Obfuscation Implementation,翻譯爲“可憐的模糊實現”。
4.Apache poi 提供api給java對Microsoft Office格式文檔讀寫的功能。
二、excle使用
(一)、api分類
POI-HSSF:Excel '97(-2007)文件格式的純Java實現,具體使用https://blog.csdn.net/qq_39630314/article/details/102544609
POI-XSSF :Excel 2007 OOXML(.xlsx)文件格式的純Java實現,具體使用
POI-SXSSF:從3.8-beta3開始,POI提供了基於XSSF的低內存佔用的SXSSF API。,具體使用
(二)、POI-SXSSF
1、介紹
SXSSF是XSSF的API兼容流擴展,可用於必須生成非常大的電子表格且堆空間有限的情況。SXSSF通過限制對滑動窗口內的行的訪問來實現其低內存佔用,而XSSF允許對文檔中的所有行進行訪問。不再存在於窗口中的較舊的行由於被寫入磁盤而變得不可訪問。
2.優點
支持大批量數據,並且速度快很多
3.缺點
由於實現的流性質,與XSSF相比存在以下限制:
- 在某個時間點只能訪問有限數量的行。
- 不支持Sheet.clone()。
- 不支持公式評估
4.常識
針對 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寫到硬盤的了就不能再改了
(三)使用注意事項
1.數據限制
當數據量超出65536條後,在使用HSSFWorkbook或XSSFWorkbook,程序會報OutOfMemoryError:Javaheap space;內存溢出錯誤。這時應該用SXSSFworkbook。
2.錯誤使用版本
對於不同版本的EXCEL文檔要使用不同的工具類,
如果使用錯了,會提示如下錯誤信息。
org.apache.poi.openxml4j.exceptions.InvalidOperationException
org.apache.poi.poifs.filesystem.OfficeXmlFileException