在EasyExcel中默认是不会去读取表头数据的
我们在编写EasyExcel解析类的时候,继承了AnalysisEventListener类
看一下该类的结构,可以看到它有invokeHeadMap这个方法
直接覆写这个方法,就可以得到表头数据了
public class ExcelService extends AnalysisEventListener<Map<Integer, String>> {
private static final Logger LOGGER = LoggerFactory.getLogger(ExcelService.class);
List<Map<Integer, String>> list = new ArrayList<Map<Integer, String>>();
@Override
public void invoke(Map<Integer, String> data, AnalysisContext context) {
LOGGER.info("解析到的数据: {}", data);
list.add(data);
}
@Override
public void invokeHeadMap(Map headMap, AnalysisContext context) {
LOGGER.info("解析到的表头数据: {}", headMap);
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
saveData();
}
/**
* 如果有必要,存储到数据库
*/
private void saveData() {
LOGGER.info("{}条数据,开始存储数据库!", list.size());
LOGGER.info("存储数据库成功!");
}
}
测试
@Test
void contextLoads() {
String fileName = "test1.xlsx";
// 这里 只要,然后读取第一个sheet 同步读取会自动finish
EasyExcel.read(fileName, new ExcelService()).sheet().doRead();
}