Excel IF类查询实现及Java if查询相关使用问题咨询
实现方案
Excel 原生公式实现
两种常用写法,按需选择即可,均支持下拉批量填充到所有行:
- 全版本兼容的IF嵌套写法
目标行E列单元格输入公式:=IF(B2="1","ABC",IF(B2=3,"GHI",""))
注:如果B列的1为数字格式,可将公式里的"1"修改为1匹配单元格格式,未匹配到规则时默认返回空值,可自行修改最后一对引号内的内容设置默认值。 - 高版本Excel简化写法(支持Excel 2021、365及以上版本)
用SWITCH函数避免多层嵌套,公式为:=SWITCH(B2,"1","ABC",3,"GHI","")
Java 处理Excel的映射实现
核心逻辑为遍历行时读取B列值做判断,赋值到E列即可,以下为通用示例:
基础if判断写法(适配POI、EasyExcel等所有Excel处理框架)
// 封装映射规则,后续新增规则只需修改这里即可 String getMappedValue(String bColumnValue) { if ("1".equals(bColumnValue.trim())) { return "ABC"; } else if ("3".equals(bColumnValue.trim())) { return "GHI"; } return ""; } // Apache POI 行处理示例片段 for (int i = 1; i < sheet.getPhysicalNumberOfRows(); i++) { Row currentRow = sheet.getRow(i); // 读取B列(索引为1)的值 String bValue = currentRow.getCell(1).getStringCellValue(); // 赋值到E列(索引为4) currentRow.createCell(4).setCellValue(getMappedValue(bValue)); }
扩展优化写法(规则较多时推荐)
用HashMap存储映射关系,避免多层if嵌套,扩展性更强:
// 全局初始化映射表 private static final Map<String, String> VALUE_MAPPING = new HashMap<>(); static { VALUE_MAPPING.put("1", "ABC"); VALUE_MAPPING.put("3", "GHI"); } // 行处理时直接取值 String eValue = VALUE_MAPPING.getOrDefault(bValue.trim(), "");
内容的提问来源于stack exchange,提问作者Omid4545
相关产品推荐
相关产品推荐

