[alibaba/easyexcel]关于自定义监听器的invoke 方法无法使用return 结束的问题

2024-05-11 954 views
4

//Excel 监听器 public class MyExcelListener extends AnalysisEventListener {

private static final int BATCH_COUNT = 1000;

private List result = new ArrayList<>(BATCH_COUNT);

@Override
public void invoke(ExcelBean excelBean, AnalysisContext context) {
    System.out.println(excelBean);
    if ("终止".equals(excelBean.getName())){
         return;
    }
    result.add(excelBean);
}

}


希望: 自定义的监听器的invoke方法,无法进行return 强制终止。比如读取数据的时候,一旦判断Excel中有一行数据是 终止, 我就直接结束。不在往下执行代码。

问题: invoke方法进入if 判断条件执行了return 后,只会终止当前方法,但是依旧会继续在进入invoke方法走下面流程。

比方说excel 表格有100条数据,其中第50条的 name列是"终止",使用return 结束, 第50条之后的数据都是非必要数据。不需要装载到list 里, 那么此时的List 装载的数据只有50条,但是使用teturn 后,会结束当前invoke 方法,然后进入下轮invoke 方法调用。 所以list 装载的数据是99条。。所以return 只是相当于continue... 请问此时如何解决?

回答

5

throw new ExcelAnalysisStopException()

1

@dreamprogram 您好,请问这个问题您那边解决了吗?我看throw new ExcelAnalysisException并不能保留终止前的数据

3

@konghao1 我直接抛弃esayExcel这个工具。设计缺陷太多。官方回复让我感觉太敷衍了。