1. 先引入easy的pom包数据
<!-- 导入阿里得Excel工具 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.0.5</version>
</dependency>
2.重写 并继承 AnalysisEventListener 的分析事件监听器,实现代码如下:
@Slf4j
public class EasyExcelListener extends AnalysisEventListener<Map<Integer,String>> {
/**
* 获取全部表头
*/
private List<Map<Integer,String>> headList;
/**
* 数据体
*/
private List<Map<Integer,String>> dataList;
public EasyExcelListener(){
this.headList = new ArrayList<>();
this.dataList = new ArrayList<>();
}
/**
* 这里会一行一行的返回全部表头数据
* @param headMap
* @param context
*/
@Override
public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
headList.add(headMap);
}
@Override
public void invoke(Map<Integer, String> dataMap, AnalysisContext analysisContext) {
dataList.add(dataMap);
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
log.info("数据全部导入完成");
}
public List<Map<Integer, String>> getHeadList() {
return headList;
}
public List<Map<Integer, String>> getDataList() {
return dataList;
}
}
3.在逻辑代码处直接new一个监听器
//数据流转换层excel的文件
EasyExcelListener readListener = new EasyExcelListener();
4.按照以上逻辑调用easyexcel的读取excel的工厂,代码如下:
EasyExcelFactory.read(file).registerReadListener(readListener).headRowNumber(1).sheet(0).doRead();
//头部数据
List<Map<Integer, String>> headList = readListener.getHeadList();
//数据体
List<Map<Integer, String>> dataList = readListener.getDataList();
read处可以读取文件,流.registerReadListener是上一步创建的监听器,headRowNumber是表头行,表示读取的是第几行的表头,下标从1开始,sheet表示是工作簿的下标,从0开始,以上代码编写完成后即可读取到表头和数据体的信息,表头体和数据体当中的key值代表的是列号.
后续会更新如何将数据转换成实体