EasyExcel读取数据(包括表头)到List<Map>
1、引用
<!-- alibaba easyexcel依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.9</version>
</dependency>
2、EasyExcel读取数据到Map的方法
/**
* 读取excel,放入List<Map<String, String>>
* @param fileName 读取excel的文件名称
* @param sheetName sheetName
* @return datalist
*/
public static List<Map<String, Object>> readExcelToMap(String fileName, String sheetName){
List<Map<String, Object>> dataList = new ArrayList<>();
EasyExcel.read(fileName,new AnalysisEventListener<Map<String, Object>>() {
//用于存储表头的信息
private Map<Integer, String> headMap;
//读取excel表头信息
@Override
public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
this.headMap=headMap;
System.out.println("表头信息:" + headMap);
}
//直接使用Map来保存数据
@Override
public void invoke(Map<String, Object> valueData, AnalysisContext context) {
//把表头和值放入Map
HashMap<String, Object> paramsMap = new HashMap<>();
for(int i=0;i<valueData.size();i++){
String key=headMap.get(i);
Object value=valueData.get(i);
//将表头作为map的key,每行每个单元格的数据作为map的value
paramsMap.put(key,value);
}
dataList.add(paramsMap);
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
log.info("Excel读取完成,文件名:"+fileName+",sheet:"+sheetName+",行数:"+dataList.size());
}
}).sheet(sheetName).doRead();
return dataList;
}
3、调用
public static void main(String[] args){
//读取数据
String fileName="D:\\java_projectsdk\\maventest\\用户信息表.xlsx";
List<Map<String, Object>> list_read=readExcelToMap(fileName,"data");
List<Map<String, Object>> listB=new ArrayList<>();
for(Map<String, Object> map:list_read){
System.out.println(map);
}
}
4、返回结果