easyexcel excel 行错误信息只能拿到一个

nzkunb0c  于 4个月前  发布在  其他
关注(0)|答案(1)|浏览(82)

需求,异步导入excel需要做参数校验。
期望能得到所有的错误信息(指的是类型错误,或者时间格式错误。)这一点已经在问题中找到了,listener每一行重写onexception可以得到
该列的错误信息。这里有个问题拿不到这行所有不符合格式的字段,有办法重写什么可以去实现吗?

50pmv0ei

50pmv0ei1#

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.read.metadata.holder.ReadHolder;
import com.alibaba.excel.util.StringUtils;

import java.util.ArrayList;
import java.util.List;

public class CustomExcelListener extends AnalysisEventListener<DemoData> {

    private List<String> errorMessages = new ArrayList<>();

    @Override
    public void invoke(DemoData data, AnalysisContext context) {
        // 进行参数校验
        if (StringUtils.isEmpty(data.getName())) {
            errorMessages.add("姓名不能为空");
        }
        // 其他参数校验...

        // 如果有时间格式错误,可以在这里添加相应的校验逻辑

        // 如果有类型错误,可以在这里添加相应的校验逻辑
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        // 所有数据分析完成后,可以进行额外的处理
    }

    @Override
    public void onException(Exception exception, AnalysisContext context) {
        // 异常处理
        // 在这里可以获取到当前行的错误信息,并保存起来
        // 这里的异常通常是指数据格式错误或类型错误等
        ReadHolder readHolder = context.currentReadHolder();
        List<CellData> cellDataList = readHolder.getCellDataList();
        for (CellData cellData : cellDataList) {
            errorMessages.add(cellData.toString());
        }
    }

    // 获取所有错误信息
    public List<String> getErrorMessages() {
        return errorMessages;
    }
}

相关问题