EasyExcel 导入 获取头部及列表数据
问题:数据能获取到 字段值乱了 请教!
【相关推荐】
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import lombok.Data;
import java.util.*;
@Data
public class AnalysisEventMonitor extends AnalysisEventListener<Map<Integer, String>> {
/**
* 存储Key
*/
Map<Integer, String> key = new HashMap<>();
/**
* keuList
*/
List<String> keyList=new ArrayList<>();
public AnalysisEventMonitor() {
}
/**
* 重写invokeHeadMap方法,获去表头,如果有需要获取第一行表头就重写这个方法,不需要则不需要重写
*
* @param headMap Excel每行解析的数据为Map<Integer, String>类型,Integer是Excel的列索引,String为Excel的单元格值
* @param context context能获取一些东西,比如context.readRowHolder().getRowIndex()为Excel的行索引,表头的行索引为0,0之后的都解析成数据
*/
@Override
public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
Set<Integer> integerSet = headMap.keySet();
for (Integer integer : integerSet) {
keyList.add(headMap.get(integer));
}
key.putAll(headMap);
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
}
@Override
public void invoke(Map<Integer, String> integerStringMap, AnalysisContext analysisContext) {
}
}
这块代码就是用于easyExcel读取excel表格的时候拦截表头
类自己创建 继承AnalysisEventListener 就可以 然后重写她的invokeHeadMap方法就可以获取到excel 的一级表头了。