一:簡介微信
SXSSFWorkbook是用來生成海量excel數據文件,主要原理是藉助臨時存儲空間生成excel,markdown
SXSSFWorkbook專門處理大數據,對於大型excel的建立且不會內存溢出的,就只有SXSSFWorkbook了。大數據
它的原理很簡單,用硬盤空間換內存(就像hashmap用空間換時間同樣)。 SXSSFWorkbook是streaming版本的XSSFWorkbook,它只會保存最新的excel rows在內存裏供查看,在此以前的excel rows都會被寫入到硬盤裏(Windows電腦的話,是寫入到C盤根目錄下的temp文件夾)。被寫入到硬盤裏的rows是不可見的/不可訪問的。只有還保存在內存裏的才能夠被訪問到。 spa
注:HSSFWorkbook和XSSFWorkbook的Excel Sheet導出條數上限(<=2003版)是65535行、256列,(>=2007版是1048576行,16384列,若是數據量超過了此上限,那麼可使用SXSSFWorkbook來導出。實際上上萬條數據 甚至上千條數據就能夠考慮使用SXSSFWorkbook了。excel
注意:首先須要引入依賴:注意:4.0.0版本的JDK須要1.8以上,若是JDK是1.7的,那麼就使用3.9版本的依賴code
二:實例一,咱們使用SXSSFWorkbook向Excel中寫入50萬條數據,只須要34秒左右,內存佔用率最多在700M左右,CPU使用率在25%左右orm
cpu的使用率甚至不到25%,運行大概持續了一兩分鐘圖片
三:咱們使用XSSFWorkbook常規的方法分批向excel中寫入50萬條數據,內存佔用率最多在 2.1個G左右(佔用了很大的內存),CPU使用率在90%左右 ,最後內存溢出了內存
cpu使用率最大在96%,運行大概持續了不到十分鐘左右hash