最近在封装公司统一使用的组件,主要目的是要求封装后开发人员调用简单,不用每个项目组中重复去集成同一个依赖l,写的五花八门,代码不规范,后者两行泪。
为此,我们对EasyExcel进行了二次封装,我会先来介绍下具体使用,然后再给出封装过程
环境准备
开发环境:SpringBoot+mybatis-plus+db
数据库:
1 | sql复制代码 -- `dfec-tcht-platform-dev`.test definition |
使用
第一步、在接口类中引入以下
1 | less复制代码 |
第二步、标注字段
这些个注解是EasyExcel的注解,我们做了保留,仍然使用他的注解
1 | less复制代码/** |
第三步、使用
1 | less复制代码@PostMapping("/importExcel") |
完整代码
1 | java复制代码package com.dfec.server.controller; |
哈哈哈,是不是非常简洁
以上只是一个简单的使用情况,我们还封装了支持模板的导入、导出,数据转换等问题,客官请继续向下看。
如果遇到有读取到的数据和实际保存的数据不一致的情况下,可以使用如下方式导入,这里给出一个示例
1 | java复制代码 @PostMapping("/importExcel") |
封装过程
核心思想:
对导入和导出提供接口、保持最少依赖原则
我们先从ExcelService接口类出发,依次看下封装的几个核心类
1 | java复制代码package com.dfec.framework.excel.service; |
以上接口只有个导入、导出,只是加了几个重载方法而已
再看下具体的实现类
1 | java复制代码package com.dfec.framework.excel.service.impl; |
ExcelUtils
1 | java复制代码package com.dfec.framework.excel.util; |
ExcelListener.java
1 | java复制代码package com.dfec.framework.excel.listener; |
遇到的问题
1、通过模板导出数据作为导入数据再导入进来,日期格式不正确
解决方法:
1 | java复制代码package com.dfec.server; |
实体类上添加
1 | java复制代码 /** |
同理,这块
注意这里也是可以用相同的方法去做字典值类型的转换的,可以参考下芋道源码的DictConvert.java
2、POI版本
这里切记POI版本和ooxml的版本一堆要保持一致,不然会出现各种问题
3、日期类型 LocalDateTime 转换的问题
1 | java复制代码package com.dfec.framework.excel.convert; |
遗留问题
目前我们使用的这个EasyExcel版本是3.3.2,但是发现,导出的时候按照模板去导出文件数据的话只能支持xls,xlsx的不支持,目前还未有解决方案,有遇到的朋友还望不吝赐教
参照:
EasyExcel官方文档;easyexcel.opensource.alibaba.com/docs/curren…
参照芋道源码
微信关注博主,有更多精彩内容哦,更新频率频繁,经常更新面试题目
本文转载自: 掘金