和上一篇读取为实体类类似,在这里可以读取为Map,Map有一个好处,可以使一些代码变得通用。
先定义一个Listener,和之前的实体类监听器类似,定义一个存储每一行数据的dataList,
在invoke代码中,将他们存到dataList。
监听器代码
package org.example.excel.easyexcel.second;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import lombok.Getter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Getter
public class ReadAsMapListener extends AnalysisEventListener<Map<String, Object>> {
public List<Map<String, Object>> dataList = new ArrayList<Map<String, Object>>();
public void invoke(Map<String, Object> data, AnalysisContext context) {
dataList.add(data);
}
public void doAfterAllAnalysed(AnalysisContext context) {
System.out.println("read finish");
}
}
读取代码
public class ReadAsMapMain {
public static void main(String[] args) {
String path = "yourExcel.xlsx";
ReadAsMapListener readAsMapListener = new ReadAsMapListener();
EasyExcel.read(path)
.sheet(1)
.headRowNumber(1)
.registerReadListener(readAsMapListener)
.doRead();
List<Map<String, Object>> dataList = readAsMapListener.getDataList();
System.out.println(JSONUtil.toJsonStr(dataList));
}
}
结果
源文件
读取结果
可以看到key是 index,value就是对应的值