• Java HSSFworkbook,XSSFworkbook,SXSSFworkbook区别简述


    Java HSSFworkbook,XSSFworkbook,SXSSFworkbook区别简述

    一、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条后,在使用HSSFWorkbook或XSSFWorkbook,程序会报OutOfMemoryError:Javaheap space;内存溢出错误。这时应该用SXSSFworkbook。

    注意:针对 SXSSF Beta 3.8下,会有临时文件产生,比如:
    poi-sxssf-sheet4654655121378979321.xml
    文件位置:java.io.tmpdir这个环境变量下的位置
    Windows 7下是C:UsersxxxxxAppDataLocalTemp
    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);
  • 相关阅读:
    3.2 Lucene实战:一个简单的小程序
    3.3 Lucene检索原理
    3.1 Java以及Lucene的安装与配置
    1.2 垂直搜索引擎的框架设计
    【lucene系列学习】排序
    【lucene系列学习】BooleanQuery
    【算法系列学习】codeforces D. Mike and distribution 二维贪心
    【算法系列学习】codeforces C. Mike and gcd problem
    【算法系列学习】HDU 5527 Too Rich贪心
    JavaScript实现数组转置
  • 原文地址:https://www.cnblogs.com/lizm166/p/9994533.html
Copyright © 2020-2023  润新知