一行代码完成 Java的 Excel 读写--easyexcel

最近我在 Github 上查找一个能够快速开发 excel 导入导出工具,偶然发现由阿里开发 easyexcel 开源项目,尝试使用后感受这款工具挺不错的,下面分享一下个人 easyexcel 案例使用。git

一、easyexcel 简介github

通常在项目可能会涉及到 Excel 导入和导出,一般咱们都是使用 Apache POI 或者 jxl。但他们都存在一个严重的问题就是很是的耗内存,POI 有一套 SAX 模式的 API 能够必定程度的解决一些内存溢出的问题,但 POI 依旧存在一些缺陷,好比 07 版 Excel 解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。而 easyexcel 重写了 POI 对 07 版 Excel 的解析,可以本来一个 3M 的 Excel 用 POI SAX 依然须要 100M 左右内存下降到 KB 级别,而且再大的 Excel 不会出现内存溢出,03 版依赖 POI 的 SAX 模式。在上层作了模型转换的封装,使用起来更加方便。浏览器

二、项目结构网络

2.一、pom.xml工具

2.二、模型插件

@Data 是 Lombok 插件的注解,须要先安装。@Data 注解在类上,会为类的全部属性自动生成 set/get、equals、canEqual、hashCode、toString方法。3d

RowNumExcelListenerexcel

使用 easyexcel,咱们须要继承 AnalysisEventListener 。必须实现 invoke() 和 doAfterAllAnalysed() 方法。easyexcel 会调用 invoke() 将数据存入 List 中。xml

2.三、读操做blog

当只读取一个 Excel 的一个sheet,能够直接 EasyExcelFactory.readBySax() 方法解析 Excel 文件。

读取多个 sheet,须要经过读取全部 sheet,再进行选择读取哪些数据,读取完一个 sheet,须要从新清空列表,否则会致使全部 sheet 数据都存储在列表中。

2.四、写操做

根据模型的写入,经过 ExcelWriter 的 wirter() 方法,ExcelWriter 根据 sheet 预先设置的 模型生成和插入数据。

推荐)根据模板的写入,根据一个 Excel 文件为模板,生成 Excel 文件。

easyexcel 还支持对单元格的样式的控制,经过 WriteHandler 接口实现。可是 easyexcel 所支持的样式要比 POI 少,官方也不是不推荐使用 easyexcel 进行实现复杂的 Excel。easyexcel 主要为了解决 OOM 的问题,实现低消耗读取解析文件。

如何实现经过浏览器下载 Excel 文件,案例中使用的文件输出流,要实现网络下载,只须要把对应的输出流改成获取 Response 进行输出便可。

三、小结

通常在项目实现 Excel 导入导出功能,easyexcel 是能够胜任的,easyexcel 有着这处理海量数据?? Excel 的能力和更高一级的封装,可让咱们更快的上手,easyexcel 适用于解析海量数据 Excel 场景,若是须要实现生成复杂的 Excel 文件,最好仍是使用 POI 比较好。

更加详细的信息能够查看 github 上的内容,GitHub连接为 https://github.com/alibaba/easyexcel。

ps:须要完整代码,关注公众号:哈尔的数据城堡(data_dev),回复‘easyexcel’得到~

相关文章
相关标签/搜索