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

使用Apache POI校验Excel C3单元格是否存在“Numero”字符串报错咨询

错误原因

  • 类型匹配逻辑错误:直接将Cell类型的对象teste和String类型的pedidoExcel用==比较,两者类型完全不同,永远不可能返回预期的相等结果。同时==用于对象比较时比对的是内存地址,不是内容值,就算同是字符串也不能这么用来判断内容相等。
  • 单元格定位逻辑漏洞:new CellReference("C3").getCol()只能获取到C列对应的列索引(0基为2),但row.getCell()仅传入列索引时,获取的是当前传入row对应的行的C列单元格,并不是你期望的第3行C3单元格,如果传入的row不是工作表的第3行(0基索引为2),取到的单元格完全错误。
  • 内容读取逻辑缺失:没有将Cell对象的内容读取为字符串,直接拿对象和字符串比对完全不符合逻辑,是触发运行时错误的核心原因。
  • 版本兼容问题:Cell.CELL_TYPE_BLANK是Apache POI 3.15版本前的旧常量,更高版本的POI中该常量已被废弃,替换为CellType.BLANK枚举,部分版本会触发编译警告或报错。

修复方案

首先确认需求:如果是要校验传入行的C列单元格内容,直接用下方的修复代码即可;如果是固定校验整个工作表的C3单元格,需要先定位到工作表的第3行(0基索引为2)再走后续校验逻辑。

private int validaLinha(Row row) { 
    String pedidoExcel = "Numero";
    // C列的列索引固定为2,也可以保留原有CellReference的写法
    int cColIndex = new CellReference("C3").getCol();
    Cell teste = row.getCell(cColIndex);

    try{
        if (teste == null || teste.getCellType() == CellType.BLANK) {
            return 0;
        }
        // 兼容不同单元格类型读取内容为字符串
        String cellValue;
        if (teste.getCellType() == CellType.STRING) {
            cellValue = teste.getStringCellValue();
        } else if (teste.getCellType() == CellType.NUMERIC) {
            cellValue = String.valueOf(teste.getNumericCellValue());
        } else if (teste.getCellType() == CellType.FORMULA) {
            // 公式类型取计算结果
            cellValue = teste.getRichStringCellValue().getString();
        } else {
            // 其余类型默认不匹配
            return 0;
        }
        // 用equals判断字符串内容相等,trim去除首尾空格干扰
        if (pedidoExcel.equals(cellValue.trim())) {
            return 1;
        }
        return 0;
    }catch (Exception e){
        return -1;
    }
}

如果是固定校验整个工作表的C3单元格,只需要在校验前先获取对应行即可:

// 先获取工作表的第3行,0基索引为2
Row row3 = sheet.getRow(2);
if (row3 == null) {
    return 0;
}
// 后续调用validaLinha(row3)或者直接复用上面的校验逻辑即可

内容的提问来源于stack exchange,提问作者johny campos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:06:02