1-HSSFworkbook
1.操作Excel2003以前(包括2003)的版本,扩展名是.xls;
2.行数限制是65535,超出会报错。
3.数据在内存,数据量小一般不会OOM。
2-XSSFworkbook
1.操作Excel2007后的版本,扩展名是.xlsx;
2.1048576行,16384列;
3.数据在内存,数据量大会OOM,占内存大。
3-SXSSFworkbook
基于XSSFworkbook但是低内存占用,确保数据量大不会OOM。
它的原理很简单,用硬盘空间换内存(就像hash map用空间换时间一样)。
SXSSFWorkbook是streaming版本的XSSFWorkbook,它只会保存最新的excel rows在内存里供查看,在此之前的excel rows都会被写入到硬盘里(Windows电脑的话,是写入到C盘根目录下的temp文件夹)。被写入到硬盘里的rows是不可见的/不可访问的。只有还保存在内存里的才可以被访问到。
SXSSF与XSSF的对比:
a. 在一个时间点上,只可以访问一定数量的数据
b. 不再支持Sheet.clone()
c. 不再支持公式的求值
d. 在使用Excel模板下载数据时将不能动态改变表头,因为这种方式已经提前把excel写到硬盘的了就不能再改了