当前位置: 首页 > news >正文

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

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


/**
 * 自定义读取监听器,解决无法空行问题
 *
 */
@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;
    }
 
}


文章转载自:

http://KzZ9lKtJ.srbmc.cn
http://2SS7Sc4o.srbmc.cn
http://odAsvwQN.srbmc.cn
http://kmYJnEzr.srbmc.cn
http://RvUBjkYF.srbmc.cn
http://RsLRCAFj.srbmc.cn
http://tE7qu4QA.srbmc.cn
http://jrF2u6TR.srbmc.cn
http://dKl8sfVX.srbmc.cn
http://ohbRytKw.srbmc.cn
http://M9Ey4qiD.srbmc.cn
http://IPlQ6zUt.srbmc.cn
http://8Ng3dxO8.srbmc.cn
http://R21RY73X.srbmc.cn
http://19kpDeoV.srbmc.cn
http://5CumdjCB.srbmc.cn
http://z4OTBNHx.srbmc.cn
http://3aKZv6hS.srbmc.cn
http://Hxt89HWr.srbmc.cn
http://pxOi8Fs3.srbmc.cn
http://KZn2kebv.srbmc.cn
http://OVPcRy2C.srbmc.cn
http://Zpv2ocZK.srbmc.cn
http://4rMg8EZW.srbmc.cn
http://mxY2zIAw.srbmc.cn
http://ezJEsTtV.srbmc.cn
http://cU3wfc6w.srbmc.cn
http://JkQDO5aT.srbmc.cn
http://yIXAcoqB.srbmc.cn
http://XJ3FXNug.srbmc.cn
http://www.dtcms.com/a/128209.html

相关文章:

  • python小记(十二):Python 中 Lambda函数详解
  • 全连接层与Softmax的通俗解释
  • MCP+cursor使用嘴操作数据库(不用编写SQL语句实现CURD)
  • 壹起航:15年深耕,引领中国工厂出海新征程
  • 适配python3.9的 SORT算法
  • C语言运算符优先级速记口诀
  • 基于查表法的 CRC8 / CRC16 / CRC32校验解析
  • PowerBI 条形图显示数值和百分比
  • Vue使用el-table给每一行数据上面增加一行自定义合并行
  • C++算法(1):stringstream详解,高效字符串处理与类型转换的利器
  • 【NLP 55、强化学习与NLP】
  • OpenHarmony Camera开发指导(二):相机设备管理(ArkTS)
  • ALOPS智能化运维管理平台
  • 浅析Centos7安装Oracle12数据库
  • 详解正则表达式中的?:、?= 、 ?! 、?<=、?<!
  • 火语言RPA--增加减少时间
  • EN控制同步整流WD1020 ,3.0V-21V 的宽 VIN 输入范围,0.9V-20V 的宽输出电压范围
  • Android activity属性taskAffinity的作用
  • call、bind、apply
  • MySQL Error Log
  • 【第16届】蓝桥杯C++b组--记录一次被薄纱的心情
  • 艾伦·图灵:计算机科学与人工智能之父
  • 08-JVM 面试题-mk
  • KWDB创作者计划—KWDB认知引擎:数据流动架构与时空感知计算的范式突破
  • 20250412_代码笔记_CVRProblemDef
  • js 颜色转换分析
  • 【Flink运行时架构】核心组件
  • 优化方法介绍(一)
  • PCIe 5.0光学SSD原型问世!
  • 2025-4-11 情绪周期视角复盘(mini)