EasyExcel读取第一行数据,读取表头

在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();
}
经验分享 程序员 微信小程序 职场和发展