Java基础——HSSFworkbook,XSSFworkbook,SXSSFworkbook区别简述

Posted Firm陈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础——HSSFworkbook,XSSFworkbook,SXSSFworkbook区别简述相关的知识,希望对你有一定的参考价值。

区别:

JavaPOI导出Excel时,我们会考虑到Excel版本及数据量的问题。针对不同的Excel版本,要采用不同的工具类。

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

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

对于不同版本的EXCEL文档要使用不同的工具类,如果使用错了,会提示如下错误信息。

org.apache.poi.openxml4j.exceptions.InvalidOperationException
org.apache.poi.poifs.filesystem.OfficeXmlFileException

从POI 3.8版本开始,提供了一种基于XSSF的低内存占用的API----SXSSF

当数据量超出65536条后,在使用HSSFWorkbookXSSFWorkbook,程序会报OutOfMemoryErrorJavaheap space;内存溢出错误。
这时应该用SXSSFworkbook。

注意:针对 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写到硬盘的了就不能再改了

简单定义:

  input = classPathResource.getInputStream();
  input = classPathResource.getInputStream();
  Workbook wb = null;
  HSSFWorkbook hwb=null;
  XSSFWorkbook xwb=null;
  SXSSFWorkbook swb = null;
  Sheet sh = null;
  wb = WorkbookFactory.create(input);
  hwb = (HSSFWorkbook) WorkbookFactory.create(input);
  xwb = (XSSFWorkbook) WorkbookFactory.create(input);
  swb = new SXSSFWorkbook(xwb,1000);

以上是关于Java基础——HSSFworkbook,XSSFworkbook,SXSSFworkbook区别简述的主要内容,如果未能解决你的问题,请参考以下文章

java常用工具类—— Excel 操作工具

sxssfworkbook在哪个jar包中

org.apache.poi.hssf.usermodel.HSSFWorkbookorg.apache.poi.xssf.usermodel.XSSFWorkbook excel2003 exce

java把HSSF全部替换成XSSF,然后来写excel2007报错?

java中用HSSFWorkBook创建的时候为啥这么创建不行啊

org.apache.poi.xssf.usermodel.XSSFCell中的Java Excel数据上载错误