SXSSF(流用户模型 API)

SXFFS导出的数据不容易造成内存溢出

产品需要灵活变化,根据配置的表单样式和字典查询数据库后获取的数据,所有只是导出导入模板使用了EasyExcel,其他大数据量需要poi写入,前期一直使用的是xls后来调整xlsx。

  • 关键字标“*”号标识

  • 对应名称居中,数字居右,自定义设置居左(爱好),列宽调整大小

  • 导出字段对应性别的字典
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • xls可写入 (HSSFWorkbook) 65536条数据,超出异常

  • xlsx可写入(XSSFWorkbook) 批量数据,内存溢出

  • xlsx可写入(SXSSFWorkbook)临时文件,效率提高
    在这里插入图片描述

SXSSF是 XSSF 的一个 API 兼容的流扩展,当必须生成非常大的电子表格并且堆空间有限时使用。SXSSF 通过限制对滑动窗口内的行的访问来实现其低内存占用,而 XSSF 允许访问文档中的所有行。不再出现在窗口中的旧行将无法访问,因为它们被写入磁盘。您可以在工作簿构建时通过new SXSSFWorkbook(int windowSize)指定窗口大小, 也可以通过SXSSFSheet#setRandomAccessWindowSize(int windowSize)为每页设置它,当通过 createRow() 创建新行并且未刷新的记录总数将超过指定的窗口大小时,具有最低索引值的行将被刷新并且无法再通过 getRow() 访问。默认窗口大小为100,由 SXSSFWorkbook.DEFAULT_WINDOW_SIZE 定义。windowSize 为 -1 表示无限制访问。在这种情况下,所有未被调用 flushRows() 刷新的记录都可用于随机访问。

注意:SXSSF通过调用 dispose 方法分配您必须始终明确清除的临时文件。

SXSSFWorkbook 默认使用内联字符串而不是共享字符串表。这是非常有效的,因为不需要将文档内容保存在内存中,但也已知会生成与某些客户端不兼容的文档。启用共享字符串后,文档中的所有唯一字符串都必须保存在内存中。根据您的文档内容,这可能比禁用共享字符串使用更多的资源。

注意:根据您使用的功能,仍有一些内容可能会消耗大量内存,例如合并区域、超链接、评论……仍然只存储在内存中,因此可能需要大量内存,如果广泛使用。

在决定是否启用共享字符串之前,请仔细检查您的内存预算和兼容性需求。面的示例编写了一个带有 100 行窗口的工作表。当行数达到 101 时,将 rownum=0 的行刷新到磁盘并从内存中删除,当 rownum 达到 102 时,则刷新 rownum=1 的行,依此类推。

import junit.framework.Assert;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
NPOI是一个行的.NET库,用于读写Microsoft Office文件,包括Excel、Word和PowerPoint等。在NPOI中,SXSSF(Streaming Usermodel API for XSSF)是用于处理大量数据的一种特殊模式。 SXSSF是基于XSSF的一种优化技术,它可以处理大量数据而不会占用过多的内存。相比于XSSF的"Event-based"模型,SXSSF使用方式将数据写入到内存中保存的XML文件中,从而减少了内存的使用。它适用于需要处理大数据量的Excel文件的场景,可以减小内存占用,提高性能。 关于SXSSF的支持,NPOI提供了相应的DLL文件。我们可以从NPOI的官方网站或者GitHub仓库中下载最新版本的NPOI库,其中包含了SXSSF的相关DLL文件。将这些DLL文件引入到我们的项目中后,我们就可以使用SXSSF模式来处理大数据量的Excel文件。 使用SXSSF的步骤大致如下: 1. 引入NPOI的DLL文件到项目中。 2. 创建一个SXSSFWorkbook对象,它会生成一个内存中保存XML文件的工作簿。 3. 创建SXSSFSheet对象,它用于在内存中保存工作表数据。 4. 使用SXSSFRow和SXSSFCell对象创建行和单元格,并设置相关数据。 5. 使用SXSSFSheet的writeTo方法将数据写入到内存中的XML文件。 6. 最后,通过SXSSFWorkbook的write方法将内存中的XML文件写入到硬盘上的Excel文件。 总而言之,NPOI的支持SXSSF的DLL文件提供了一种处理大数据Excel文件的解决方案,通过它我们可以更高效地处理大量数据,减小内存占用,提高性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

掘金者说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值