EasyExecl

592 阅读3分钟

表格导出常用三方组建

目前比较流行的导出execl表格的框架比较多,如apache poiEasypoi EasyExcel\

  1. apache poi 是最早出现的工具
  2. easypoi 的底层也是基于 apache poi 进行深度开发的,主要的特点就是将更多重复的工作全部简单化。
  3. easyexcel 是阿里巴巴开源的一款 excel 解析工具,底层逻辑也是基于 apache poi 进行二次开发的。不同的是,再读写数据的时候,采用 sax 模式一行一行解析,在并发量很大的情况下,依然能稳定运行.

三方组建区别

1、导出性能

apache poi 和 easypoi 导出大数据时会面临着严重的内存损耗问题。如果系统的并发量还不行,一旦导出大量数据,便会出现JVM频繁full gc,甚至导致OOM。一般百万级别的数据就已经OOM了。 当然easypoi也提供了大数据量导出的接口「exportBigExcel」,并可以分段写来避免一次性处理大量对象造成oom的问题,但是性能上不如EasyExcel。

  • HSSF方式:这种方式导出的文件格式为office 2003专用格式,即.xls,优点是导出数据速度快,但是最多65536行数据
  • XSSF方式:这种方式导出的文件格式为office 2007专用格式,即.xlsx,优点是导出的数据不受行数限制,缺点导出速度慢
  • SXSSF方式:SXSSF 是 XSSF API的兼容流式扩展,主要解决当使用 XSSF 方式导出大数据量时,内存溢出的问题,支持导出大批量的excel数据 easyexcel 能大大减少占用内存,主要原因是再解析Excel时没有将文件数据一次性全部加载到内存中,而是从磁盘上一行行读取数据,逐个解析。easyExcel并且支持边读边写的方式,大大减少内存溢出的问题。

2、导出格式

  • EasyExcel 导出的为xlsx,在单sheet页上,理论上没有行数限制
  • EasyPoi 这是比较常见的,导出格式为xls,在条数超过6万行,会增加sheet页
  • CSV导出,更常见了,一种以逗号分割格式的文件,不存在行数限制 值得注意的是,导出的文件大小,同样的条数,xlsx文件要比xls小很多。

3、使用方式

easypoi、EasyExcel 可基于注解实体类来导出、导入excel,并可以使用注解定制化表头样式。 image.png 类似与这种比较复杂的表头,一个sheet多张表,多个sheet,合并单元格各种复杂的情况下(性能较低),easypoi处理起来就比较复杂了,反观easyExcel就比较拿手。

4、使用建议

总体来说,easypoi和easyexcel都是基于apache poi进行二次开发的。

  • easypoi 在读写数据的时候,优先是先将数据写入内存,优点是读写性能非常高,但是当数据量很大的时候,会出现oom,当然它也提供了 sax 模式的读写方式,需要调用特定的方法实现。

  • easyexcel 基于sax模式进行读写数据,不会出现oom情况,程序有过高并发场景的验证,因此程序运行比较稳定,相对于 easypoi 来说,读写性能稍慢!

easypoi 与 easyexcel 还有一点区别在于,easypoi 对定制化的导出支持非常的丰富,如果当前的项目需求,并发量不大、数据量也不大,但是需要导出 excel 的文件样式千差万别,推荐使用 easypoi;反之,使用 easyexcel !

EasyExecl 使用

git 地址: github.com/alibaba/eas… 使用方式可以直接参考官网例子,比较详细了 easyexcel.opensource.alibaba.com/docs/curren…