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
相关产品推荐
相关产品推荐

