引入依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>${easyexcel.version}</version>
</dependency>
<properties>
<easyexcel.version>3.1.1</easyexcel.version>
</properties>
导出excel
/*
* 导出excel
* fileName excel文件名
* Collection<?> data 导出数据
* writer.write(data, sheet)
* */
String fileName = "文件名" + DateUtil.formatDate(new Date()) + ".xlsx";
File file = new File(fileName);
ExcelWriter writer = EasyExcel.write(file).build();
WriteSheet sheet = EasyExcel.writerSheet("表格名").build();
writer.write(data, sheet);
writer.finish();
file.deleteOnExit();
导入excel
- 创建excel字段映射的实体类
- 创建excel监听器(新建类实现AnalysisEventListener<T>)
- 业务层实现
创建excel字段映射的实体类
实体类属性
@ExcelProperty(“ FID”) //填入excel列名映射
private String id;
创建excel监听器
public class DataReadListener<T> extends AnalysisEventListener<T> {
/**
* 自定义用于暂时存储data
* 可以通过实例获取该值
*/
List<T> datas = new ArrayList<>();
public DataReadListener(){
}
/**
* 每解析一行都会回调invoke()方法
*
* @param t 读取后的数据对象
* @param analysisContext 内容
*/
@Override
public void invoke(T t, AnalysisContext analysisContext) {
System.out.println("解析到一条数据:{}"+JSON.toJSONString(t));
datas.add(t);
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
//解析结束销毁不用的资源
//注意不要调用datas.clear(),否则getDatas为null
System.out.println(JSON.toJSONString(datas));
}
/**
* 返回数据
*
* @return 返回读取的数据集合
**/
public List<T> getData(){
return datas;
}
}
业务层实现
public void ReadExcel(String fileName){
//创建监听器dataListener
DataReadListener dataListener = new DataReadListener();
//读文件为fileName的excel文件,数据存入dataListener,T为excel字段映射的实体类
EasyExcel.read(fileName, T.class, dataListener).sheet().doRead();
//获取读入的List<T>数据
List<T> list= dataListener.getData();
}