1、 pom.xml 引入 easyexcel
<!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.0.3</version>
</dependency>
2. 编写EasyExcelUtil.java
2.1 写excel
EasyExcel.write(fileName,XXBean.class).sheet("1").doWrite(objList);
2.2 读Excel
EasyExcel.read(fileName,clazz.getClass(), listener).sheet().doRead();
2.3 引入 Listener
需要引入 Listener
/**
* EasyExcel 导入监听
*/
public class ExcelListener extends AnalysisEventListener {
//可以通过实例获取该值
private List<Object> datas = new ArrayList<Object>();
@Override
public void invoke(Object o, AnalysisContext analysisContext) {
datas.add(o);//数据存储到list,供批量处理,或后续自己业务逻辑处理。
doSomething(o);//根据自己业务做处理
}
private void doSomething(Object object) {
//1、入库调用接口
System.out.println("parse obj:"+object.toString());
}
public List<Object> getDatas() {
return datas;
}
public void setDatas(List<Object> datas) {
this.datas = datas;
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
// datas.clear();//解析结束销毁不用的资源
}
}
3. 保存数据
//获取数据
List<Object> list = listener.getDatas();
// excel中的数据导入到数据库
xxxService.saveDatas(list,clazz,user);
4. 导入中的问题,日期格式处理
字段可设置为 string类型;定义string 格式化日期的format
数据库可以为 Datetime类型;以mysql 为例;其他数据库未测试。
@ExcelProperty(value="审批时间" ,index=1)
@DateTimeFormat(value="yyyy-MM-dd")
private String auditDate;