EasyExcel模板多sheet数据导入
1.依赖导入
这边同样使用的是2.1.6,版本大家可以自行选择
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.6</version>
<dependency>
2.文件读取
EasyExcel.readSheet()方法可以根据sheet页的名称匹配也可以根据sheet的页码进行匹配,大家可以自行选择
ExcelReader excelReader = EasyExcel.read("需要解析的excel文件").build();
// 创建需要读取的Excel中的sheet对象
ReadSheet textRegistrationsheet = EasyExcel.readSheet("测试1")
.head(TestVo.class)
.registerReadListener(new TestListener())
.build();
ReadSheet withSealSheet = EasyExcel.readSheet(2)
.head(TestVo.class)
.registerReadListener(new TestListener())
.build();
ReadSheet contractSheet = EasyExcel.readSheet("测试3")
.head(TestVo.class)
.registerReadListener(new TestListener())
.build();
3.自定义监听器解析数据
package com.ruoyi.system.listener;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.ruoyi.system.domain.SysTextRegistration;
import com.ruoyi.system.domain.vo.TestVo;
import org.springframework.beans.BeanUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class TextRegistrationListener extends AnalysisEventListener<TestVo> {
//收集数据
List<TestVo> list = new ArrayList<>();
public List<SysTextRegistration> getList() {
return list;
}
public void setList(List<SysTextRegistration> list) {
this.list = list;
}
//读取excel表头信息时执行
@Override
public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
System.out.println("表头信息:"+headMap);
}
// 读取excel内容信息时执行
// EasyExcel会会一行一行去读取excle内容,每解析excel文件中的一行数据,都会调用一次invoke方法
@Override
public void invoke(TestVo testVo, AnalysisContext analysisContext) {
list.add(testVo);
}
//读取完成后执行
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
//根据需要自行做数据处理
}
}
以上便是easyExcel实现多sheet文件导入的基础代码,感谢大家观看