我们知道EasyExcel获取文档头部信息主要是通过重写invokeHeadMap方法来实现。也就是下面的这个方法.
@Override
public void invokeHeadMap(Map<Integer,String> map,AnalysisContext context) {
System.out.println("=========="+map.toString()+"================");
}
今天在实际使用时遇到了一个这样的问题。我要导入的文档有文件头的同时还存在一个文件描述消息
而问题在于invokeHeadMap将这两行都当做文档头来进行了读取,错误的执行了两次方法。
我最初的想法是通过自定义异常的方式在头部信息校验时校验有问题的对象则抛出异常结束这个方法。
List<String> headList = new ArrayList<>();
for (Integer i : map.keySet()) {
headList.add(map.get(i));
}
if(!headList.get(0).equals("YM")){
throw new Exception();
}
但是因为他执行了两次,导致第二行的文本描述也添加了进来并且作为了头部信息来进行了比较,导致正常状态下无法导入,代码更改后,通过定义变量记录方法的执行次数来约束判断的条件。
@SneakyThrows
@Override
public void invokeHeadMap(Map<Int

这篇博客讲述了在使用EasyExcel处理Excel文件时遇到的问题,即invokeHeadMap方法错误地将文件描述作为头部信息读取。作者通过增加计数器限制头部信息的校验次数,确保只校验两行头部信息,并对头部字段进行逐一匹配,避免了错误的导入。此外,还展示了具体的代码实现来解决这个问题。
最低0.47元/天 解锁文章
2877





