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);
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
HSSFWorkbookXSSFWorkbook是Apache POI包中用于操作Excel文件的两种方式。HSSFWorkbook主要用于操作Excel2003以前(包括2003)的版本,文件的扩展名是.xls。而XSSFWorkbook主要用于操作Excel2007及以上的版本,文件的扩展名是.xlsx。 由于HSSFWorkbookXSSFWorkbook在内存使用方面存在一定的限制,当数据量超过65536条时,使用这两种方式可能会导致内存溢出错误。 如果需要操作大数据量的导出(例如超过5000条),可以考虑使用SXSSFWorkbook,它是POI 3.8版本中引入的一种工作表,主要用于处理大数据量的导出。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Winform中通过NPOI导出Excel的三种方式HSSFWorkbookXSSFWorkbook,SXSSFWorkbook示例代码.zip](https://download.csdn.net/download/qq_35406995/16604372)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [HSSFworkbook,XSSFworkbook,SXSSFworkbook区别总结](https://blog.csdn.net/YiQ2018/article/details/81458149)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Java POI三种WorkbookHSSFworkbook,XSSFworkbook,SXSSFworkbook主要区别](https://blog.csdn.net/wh445306/article/details/103755283)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值