easyexcel icon indicating copy to clipboard operation
easyexcel copied to clipboard

监听器invokeHeadMap和invoke读取的列数不一致问题

Open MyNameisPeterParker opened this issue 10 months ago • 1 comments

建议先去看文档

快速开始常见问题

触发场景描述

使用的easyExcel版本是:3.1.1 我写了一个导入类继承了AnalysisEventListener<Map<Integer, String>>

触发Bug的代码

   @Override
    public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
        log.info("=====================解析头=====================");
        if (CollUtil.isEmpty(headMap)) {
            throw new FLFileException(RStatus.FILE_UPLOAD_FAIL, "所传文件表头为空, 请检查");
        }
        for (int i = 0; i < headMap.size(); i++) {
            String caption = headMap.get(i);
            if (sasFieldListHashMap.containsKey(caption)) {
                exportFieldList.add(sasFieldListHashMap.get(caption).getFieldName());
            } else {
                exportFieldList.add(caption);
            }
        }

        if (!exportFieldList.containsAll(realFieldSet)) {
            throw new FLFileException(RStatus.FILE_UPLOAD_FAIL, "所传文件与模板文件字段不一致, 请检查");
        }

        this.headMap.putAll(headMap);
    }
    
    @Override
    public void invoke(Map<Integer, String> data, AnalysisContext analysisContext) {
    }

提示的异常或者没有达到的效果

我这里invokeHeadMap解析出来是27列(是正常的),但是第二张图解析数据时出现了29列(多了两列),请问这是什么原因导致的 image image

MyNameisPeterParker avatar Mar 28 '24 02:03 MyNameisPeterParker

说明表头行存在27个有效的单元格,数据行存在29个有效的单元格,多出2个没有内容的单元格。

LSL1618 avatar May 16 '24 07:05 LSL1618