博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java EasyExcel集成及工具类使用
阅读量:6156 次
发布时间:2019-06-21

本文共 1791 字,大约阅读时间需要 5 分钟。

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):
com.alibaba
easyexcel
1.1.2-beta5
  • 工具类:
    详见底部附带的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
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地址:

EasyExcelUtils github项目地址:

转载地址:http://rhbfa.baihongyu.com/

你可能感兴趣的文章
angularjs 控制器
查看>>
bat相关命令
查看>>
restful
查看>>
单线程爬虫实现
查看>>
锁与线程
查看>>
bzoj 3223: Tyvj 1729 文艺平衡树
查看>>
MySQL高级 之 order by、group by 优化
查看>>
JavaScript学习笔记(三)
查看>>
PyQt4学习笔记2:事件和信号
查看>>
windows系统实现mysql数据库数据库主从复制
查看>>
elasticsearch5.0.1集群排错的几个思路总结
查看>>
Linux 平台设备驱动模型
查看>>
前端学习之jquery
查看>>
RedHat6.2搭建FTP服务器
查看>>
DataTable学习笔记
查看>>
this指向问题
查看>>
原生查找DOM的方法
查看>>
Global variables vs. Host variables vs. Parameter markers
查看>>
百度电影推荐系统比赛 小结 ——记我的初步推荐算法实践
查看>>
HDU2033 人见人爱A+B
查看>>