EasyExcel系列:读取空数据行的问题

定义Excel模板时,会生产空行问问题,可以自定义监听器过滤空行。以PageReadListener为例。

java 复制代码
/**
 * 自定义读取监听器,解决无法空行问题
 *
 */
@Slf4j
public class MyPageReadListener<T> extends PageReadListener<T> {
 
 
    @Override
    public void invoke(T data, AnalysisContext context) {
        // 如果一行Excel数据均为空值,则不装载该行数据
        if (isLineNullValue(data)) {
            return;
        }
        ...
    }
 
    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        ...
    }
 
    /**
     * 判断整行单元格数据是否均为空
     */
    private boolean isLineNullValue(T data) {
        if (data instanceof String) {
            return Objects.isNull(data);
        }
        try {
            List<Field> fields = Arrays.stream(data.getClass().getDeclaredFields())
                    .filter(f -> f.isAnnotationPresent(ExcelProperty.class))
                    .collect(Collectors.toList());
            List<Boolean> lineNullList = new ArrayList<>(fields.size());
            for (Field field : fields) {
                field.setAccessible(true);
                Object value = field.get(data);
                if (Objects.isNull(value)) {
                    lineNullList.add(Boolean.TRUE);
                } else {
                    lineNullList.add(Boolean.FALSE);
                }
            }
            return lineNullList.stream().allMatch(Boolean.TRUE::equals);
        } catch (Exception e) {
            log.error("读取数据行[{}]解析失败: {}", data, e.getMessage());
        }
        return true;
    }
 
}
相关推荐
爱丽_几秒前
AQS 原理主线:state、CLH 队列、独占/共享与实战排查
java·开发语言·jvm
小江的记录本7 分钟前
【Redis】Redis常用命令速查表(完整版)
java·前端·数据库·redis·后端·spring·缓存
卓怡学长7 分钟前
m281基于SSM框架的电脑测评系统
java·数据库·spring·tomcat·maven·intellij-idea
umeelove3511 分钟前
SQL中的DISTINCT、SQL DISTINCT详解、DISTINCT的用法、DISTINCT注意事项
java·数据库·sql
AMoon丶11 分钟前
Golang--垃圾回收
java·linux·开发语言·jvm·后端·算法·golang
填满你的记忆12 分钟前
RAG 架构在实际项目中的应用(从原理到落地)
java·ai·架构
Densen201415 分钟前
企业H5站点升级PWA (二)
java·后端·spring
Aaa1111144316 分钟前
限流算法 限流算法
java·开发语言
李子琪。22 分钟前
基于“产业-空间-社会”三重网络的传统工业城市现代化转型路径研究——以广西柳州市典型
java·人工智能·经验分享
zjneymar24 分钟前
Mybatis的动态sql
java·sql·mybatis