您现在的位置是:首页 > 文章详情

java EasyExcel集成及工具类使用

日期:2019-02-14点击:443

EasyExcel简介

  • easyExcel是阿里巴巴开源poi插件之一,当前最新版本1.1.2-beta5,poi版本3.17,因此,集成时老版本poi需要提升poi版本,或者做版本隔离。
  • 吐槽一下这个版本没有RELEASE版本
  • 主要解决了poi框架使用复杂,sax解析模式不容易操作,数据量大起来容易OOM,解决了POI并发造成的报错
  • 主要解决方式:通过解压文件的方式加载,一行一行的加载,并且抛弃样式字体等不重要的数据,降低内存的占用
  • 具体实现原理,建议看github上的readme

EasyExcel优势

  • 注解式自定义操作。
  • 输入输出简单,提供输入输出过程的接口
  • 支持一定程度的单元格合并等灵活化操作

EasyExcel劣势

  • 框架不成熟,1.1.0版本后提供灵活接口的只剩beta版本
  • 依然存在一些bug
  • 没有一套完整的api

ExcelUtil快速使用

  • maven引用(版本控制内若存在低版本POI,请升级版本和代码,官方POI版本3.17):
<dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>1.1.2-beta5</version> </dependency>
  • 工具类:
    详见底部附带的github地址
  • 实体类继承BaseRowModel ,对需要导出或者导入的字段增加@ExcelProperty注解,index值为对应excel中的列,value为表头,format为日期格式化
public class PersonDto extends BaseRowModel{ /** id */ @ExcelProperty(index = 0 , value = "id") private String id; /** 姓名 **/ @ExcelProperty(index = 1 , value = "姓名") private String name; /** 生日 **/ @ExcelProperty(index = 2 , value = "生日" , format = "yyyy-MM-dd") private String birth; }

导出:

ExcelUtil.writeExcel(response,exportVoList,"导出文件名","sheet1", ExcelTypeEnum.XLSX , PersonDto .class);

导入:

List<FundDto> importDtoList = ExcelUtil.readExcel(excelFile,PersonDto .class);

自定义样式注解:

  • 在对应列上增加注解,修改对应的列上的参数,例
public class PersonDto extends BaseRowModel{ /** id */ @ExcelProperty(index = 0 , value = "id") private String id; /** 姓名 **/ @ExcelProperty(index = 1 , value = "姓名") private String name; /** 生日 **/ @ExcelProperty(index = 2 , value = "生日" , format = "yyyy-MM-dd") @CellStyleFormat(fillBackgroundColor= IndexedColors.LIGHT_YELLOW) @CellFontFormat(fontColor=IndexedColors.BLACK) private String birth; }

Ps.

  • 后续有新的需要,可以就自定义注解的修改增加新的功能

目前已知存在问题:

  • 自定义注解目前未经过多种场景的测试,出现问题,需要再修改
  • 导入的实体类中配置了注解的属性为基本类型时,可能会读到一部分空行,这个问题目前需要EasyExcel的看看后续版本处理

EasyExcel github地址:https://github.com/alibaba/easyexcel
EasyExcelUtils github项目地址:https://github.com/wangxiaoxiongjuly/easyExcelUtils

原文链接:https://yq.aliyun.com/articles/690407
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章