EasyExcel:pom 包
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.0.5</version>
</dependency>
创建工具类:EasyExcelUtil
public static <T> List<T> read(InputStream inputStream, final Class<?> clazz,Map<Integer,String> head) throws Exception {
if (inputStream == null) {
throw new Exception("解析出错了,文件流是null");
}
// 有个很重要的点 DataListener 不能被spring管理,要每次读取excel都要new,然后里面用到spring可以构造方法传进去
DataListener<T> listener = new DataListener<>();
EasyExcel.read(inputStream, clazz, listener).sheet().doRead();
head.putAll(listener.getHead());
return listener.getRows();
}
class DataListener<T> extends AnalysisEventListener<T> {//内部类
private final List<T> rows = new ArrayList<>();
private Map<Integer, String> head = new HashMap<>();
@Override
public void invoke(T t, AnalysisContext analysisContext) {
rows.add(t);
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
log.info("解析完成!读取{}行", rows.size());
}
@Override
public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
head.putAll(headMap);
}
public List<T> getRows() {
return rows;
}
public Map<Integer, String> getHead() {
return head;
}
}
调用:
Map<Integer,String> head = new HashMap<>();
List<BatchSampleALLVO> list = EasyExcelUtil.read(inputStream, BatchSampleALLVO.class,head);
重写:AnalysisEventListener方法,将数据暴露给调用者。
本文介绍了如何在项目中使用阿里巴巴的EasyExcel库来读取Excel文件,并创建一个`DataListener`和`AnalysisEventListener`的工具类,确保Spring的正确集成和数据处理。
1554

被折叠的 条评论
为什么被折叠?



