用poi将excel转换txt(POI读取生成Excel大文件)

最近在搞一个通用文件处理服务器,需要处理Excel文件,但是有的excel文件大小超过3M,读取文件时直接导致jvm异常:gc overhead limit exceeded。

原来poi读取excel时有两种模式,我们常用的是第一种,通俗点就是空间换时间/时间换空间:

  • 1种直接将整个excel读入内存后再解析userModel
  • 1种边读取边解析,比较省内存event-userModel
首先加大jvm内存参数针对excel大文件读取,采用第二种模式来处理可以有效避免常见内存异常,但是得加上文件大小限制,如果文件特别大,那也会照样内存异常。

常用的工具包有阿里开源的easyExcel,easyPOI等,一两行代码搞定。但是第二种模式有个缺点是:无法读取用户当前打开的sheet(比如一个excel中有一个隐藏sheet,一个可见sheet,第一种模式可以使用getActiveSheetIndex()),只能一个一个读取sheet。

针对excel大量数据写入,借助SXSSFWorkbook,再加上数据分页处理,再加上数据记录条数限制,可以避免内存异常。

用poi将excel转换txt(POI读取生成Excel大文件)(1)

使用缓存 临时文件处理

不知有没有高人有更好的解决方案?

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页