他们的区别如下:
HSSF:是操作Excel97-2003版本,扩展名为.xls。
XSSF:是操作Excel2007版本开始,扩展名为.xlsx。
SXSSF:是在XSSF基础上,POI3.8版本开始提供的一种支持低内存占用的操作方式,扩展名为.xlsx。
其次,大家需要了解下Excel不同版本的一些区别,这些限制其实间接的局限了POI提供的API功能。
1、支持的行数、列数
Excel97-2003版本,一个sheet最大行数65536,最大列数256。
Excel2007版本开始,一个sheet最大行数1048576,最大列数16384。
2、文件大小
.xlsx文件比.xls的压缩率高,也就是相同数据量下,.xlsx的文件会小很多。
3、兼容性
Excel97-2003版本是不能打开.xlsx文件的。
Excel2007开始的版本是可以打开.xls文件的。
根据以上内容,大家可以根据自己的需求进行选择,当然海量数据的导出肯定是推荐SXSSF的方式。编码过程中,其实不同方式的使用方式基本相同,所以互相切换也是比较简单的,只要把带有前缀的接口改成对应的就行了。如:
HSSF对应:HSSFWorkbook、HSSFSheet、HSSFRow、HSSFCell……
XSSF对应:XSSFWorkbook、XSSFSheet、XSSFRow、XSSFCell……
SXSSF对应:SXSSFWorkbook、Sheet、Row、Cell……
规律还是挺明显的吧,除了workbook,SXSSF的接口都不带前缀,另外两种方式的各个接口都带有对应的前缀。
另外,前面有提到SXSSF是一种低内存占用的操作方式,因为其提供了一个新的方法:
1 |
SXSSFWorkbook w3= new SXSSFWorkbook(100);//内存中保留100条数据,其余写入硬盘临时文件 |
在数据量超过设置的值时,会在硬盘生成临时文件保存之前的数据,而且POI会根据规则自动删除生成的这些临时文件。