日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HSSFworkbook,XSSFworkbook,SXSSFworkbook区别总结

發布時間:2025/3/12 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HSSFworkbook,XSSFworkbook,SXSSFworkbook区别总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

HSSFworkbook,XSSFworkbook,SXSSFworkbook區別總結

用JavaPOI導出Excel時,我們需要考慮到Excel版本及數據量的問題。針對不同的Excel版本,要采用不同的工具類,如果使用錯了,會出現錯誤信息。JavaPOI導出Excel有三種形式,他們分別是1.HSSFWorkbook 2.XSSFWorkbook 3.SXSSFWorkbook。

HSSFWorkbook:是操作Excel2003以前(包括2003)的版本,擴展名是.xls;

XSSFWorkbook:是操作Excel2007后的版本,擴展名是.xlsx;

SXSSFWorkbook:是操作Excel2007后的版本,擴展名是.xlsx;

第一種:HSSFWorkbook

poi導出excel最常用的方式;但是此種方式的局限就是導出的行數至多為65535行,超出65536條后系統就會報錯。此方式因為行數不足七萬行所以一般不會發生內存不足的情況(OOM)。

第二種:XSSFWorkbook

這種形式的出現是為了突破HSSFWorkbook的65535行局限。其對應的是excel2007(1048576行,16384列)擴展名為“.xlsx”,最多可以導出104萬行,不過這樣就伴隨著一個問題—OOM內存溢出,原因是你所創建的book sheet row cell等此時是存在內存的并沒有持久化。

第三種:SXSSFWorkbook

從POI 3.8版本開始,提供了一種基于XSSF的低內存占用的SXSSF方式。對于大型excel文件的創建,一個關鍵問題就是,要確保不會內存溢出。其實,就算生成很小的excel(比如幾Mb),它用掉的內存是遠大于excel文件實際的size的。如果單元格還有各種格式(比如,加粗,背景標紅之類的),那它占用的內存就更多了。對于大型excel的創建且不會內存溢出的,就只有SXSSFWorkbook了。它的原理很簡單,用硬盤空間換內存(就像hash map用空間換時間一樣)。

SXSSFWorkbook是streaming版本的XSSFWorkbook,它只會保存最新的excel rows在內存里供查看,在此之前的excel rows都會被寫入到硬盤里(Windows電腦的話,是寫入到C盤根目錄下的temp文件夾)。被寫入到硬盤里的rows是不可見的/不可訪問的。只有還保存在內存里的才可以被訪問到。

SXSSF與XSSF的對比:

a. 在一個時間點上,只可以訪問一定數量的數據

b. 不再支持Sheet.clone()

c. 不再支持公式的求值

d. 在使用Excel模板下載數據時將不能動態改變表頭,因為這種方式已經提前把excel寫到硬盤的了就不能再改了

當數據量超出65536條后,在使用HSSFWorkbook或XSSFWorkbook,程序會報OutOfMemoryError:Javaheap space;內存溢出錯誤。這時應該用SXSSFworkbook。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的HSSFworkbook,XSSFworkbook,SXSSFworkbook区别总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。