EasyExcel(java处理Excel助手)是一款很优秀好用的阿里巴巴开发的快速、简单避免OOM的java处理Excel的辅助工具。小编带来的这款EasyExcel软件功能强大,简单易用,使用后可以帮助用户轻松进行java处理Excel操作,非常方便实用。这是基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。这里提供快速的Jar包下载,方便程序导入使用。有需要的朋友欢迎来下载使用。
更新说明:
新增支持导入、导出支持公式
新增支持读取单元格类型、写入指定单元格类型
支持通过模板填充数据
新增写支持 禁用头样式 useDefaultStyle
用map读取数据 空的单元格也会有个 null的数据
转换报错 能获取到对应的行号和列号
优化读取全部sheet方案
新增注解ExcelIgnoreUnannotated 支持忽略未加ExcelProperty注解的字段
支持导出加密 Issue #361
支持导入加密
原理说明:
写有大量数据的xlsx文件时,POI为我们提供了SXSSFWorkBook类来处理,这个类的处理机制是当内存中的数据条数达到一个极限数量的时候就flush这部分数据,再依次处理余下的数据,这个在大多数场景能够满足需求。
读有大量数据的文件时,使用WorkBook处理就不行了,因为POI对文件是先将文件中的cell读入内存,生成一个树的结构(针对Excel中的每个sheet,使用TreeMap存储sheet中的行)。如果数据量比较大,则同样会产生java.lang.OutOfMemoryError: Java heap space错误。POI官方推荐使用“XSSF and SAX(event API)”方式来解决。
测试效果:
64M内存1分钟内读取75M(46W行25列)的Excel
当然还有急速模式能更快,但是内存占用会在100M多一点