You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何筛选execute=yes的Excel行数据传递给DataProvider

Excel指定execute标识行筛选传递给DataProvider实现方案

核心实现思路

不需要对原始读取结果做全量HashMap转换,你之前转换失败本质是没有区分两层Map结构——外层key是Excel行号,内层Map才是存name/execute等业务字段的容器,直接分层遍历筛选即可。

具体实现步骤

  • 遍历原始Excel读取结果的外层数组,拿到每个以行号为key的行映射对象
  • 跳过外层行号key,直接取每个行映射对应的内层字段Map,做非空校验
  • 判断内层Map中execute字段值是否为yes(建议忽略大小写、做字符串trim处理,避免Excel单元格格式导致判断失效)
  • 收集所有符合条件的内层字段Map,最终转换为DataProvider要求的二维数组格式直接传递

参考代码实现(Java+TestNG DataProvider场景)

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

public class ExcelDataProviderUtil {
    public Object[][] getFilteredExcelData(List<Map<Integer, Map<String, String>>> rawExcelData) {
        List<Map<String, String>> targetRows = new ArrayList<>();
        // 遍历原始Excel读取结果
        for (Map<Integer, Map<String, String>> rowWrap : rawExcelData) {
            // 取内层实际存储字段的Map,跳过外层行号key
            for (Map<String, String> fieldMap : rowWrap.values()) {
                // 空值校验 + execute标识判断,兼容大小写、前后空格
                if (fieldMap != null 
                    && "yes".equalsIgnoreCase(String.valueOf(fieldMap.getOrDefault("execute", "")).trim())) {
                    targetRows.add(fieldMap);
                }
            }
        }
        // 转换为DataProvider要求的二维数组格式返回
        return targetRows.toArray(new Object[0][]);
    }
}

之前HashMap转换失效的常见原因

  1. 把两层嵌套Map直接拍平成单层HashMap,导致行号和业务字段同级,无法正确读取execute字段值
  2. 没有做值的兼容处理:比如Excel单元格值为YES、Yes或者带前后空格,直接做字符串等值判断会匹配失败
  3. 未做非空校验,遇到空行、空单元格时直接抛出空指针,中断筛选流程

内容的提问来源于stack exchange,提问作者sougata das

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 15:21:26