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

XSSFCell类中getCellTypeEnum()方法未定义,求代码修改方案

解决XSSFCell.getCellTypeEnum()未定义的报错问题

嗨,这个问题我之前也碰到过!原因是你使用的POI版本(4.0及以上)里,getCellTypeEnum()方法已经被废弃并移除了,取而代之的是getCellType()方法,它返回的同样是CellType枚举类型,用法和原来几乎一致,只是方法名做了调整。

另外,我建议你加个单元格空值判断,避免当指定列没有单元格时出现空指针异常,让代码更健壮。下面是调整后的完整代码:

import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import java.util.List;

private void prepareInnerList(List<String> innerList, XSSFRow xssfRow, int j) {
    // 先获取单元格,避免空指针异常
    XSSFCell cell = xssfRow.getCell(j);
    if (cell == null) {
        innerList.add("");
        return;
    }

    switch (cell.getCellType()) { // 替换为getCellType()方法
        case BLANK:
            innerList.add("");
            break;
        case STRING:
            innerList.add(cell.getStringCellValue());
            break;
        case NUMERIC:
            // 区分日期类型和普通数值类型
            if (DateUtil.isCellDateFormatted(cell)) {
                innerList.add(cell.getDateCellValue().toString());
            } else {
                // 可根据需求格式化数值,比如保留指定小数位
                innerList.add(String.valueOf(cell.getNumericCellValue()));
            }
            break;
        case BOOLEAN:
            innerList.add(String.valueOf(cell.getBooleanCellValue()));
            break;
        case FORMULA:
            // 可选择获取公式本身或计算结果
            innerList.add(cell.getCellFormula());
            break;
        default:
            innerList.add("");
            break;
    }
}

关键修改说明:

  • 将报错的getCellTypeEnum()替换为getCellType(),二者返回的CellType枚举完全兼容,只是方法名更新
  • 新增单元格空值判断,避免因单元格不存在导致的空指针异常
  • 补充了布尔值、公式等其他常见单元格类型的处理逻辑,让方法覆盖更多场景

内容的提问来源于stack exchange,提问作者dharmender patel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:49:13