Java读取Excel文件报错求助:createFormulaEvaluator未定义等问题
Excel读取错误排查方案
错误1:createFormulaEvaluator()方法在Object类型中未定义
- 核心原因是变量类型声明错误或者类名冲突:
- 如果你把Workbook对象声明成了
Object类型(比如Object workbook = new XSSFWorkbook(inputStream);),直接改成POI官方的Workbook类型,记得导入org.apache.poi.ss.usermodel.Workbook - 你自定义了
FormulaEvaluator类,这和POI官方的org.apache.poi.ss.usermodel.FormulaEvaluator重名了。要么给自定义类改个名(比如MyFormulaEvaluator),要么调用POI方法时写全类名:org.apache.poi.ss.usermodel.FormulaEvaluator evaluator = workbook.createFormulaEvaluator();
- 如果你把Workbook对象声明成了
错误2:只能遍历数组或java.lang.Iterable的实例
- 这个是因为你用for-each循环的对象不是可遍历类型:
- 遍历Sheet里的行时,要把Sheet声明成POI的
org.apache.poi.ss.usermodel.Sheet,不能用Object。正确写法:Sheet sheet = workbook.getSheetAt(0); for (Row row : sheet) { // 处理行 } - 遍历Row里的单元格同理,Row要声明成POI的
org.apache.poi.ss.usermodel.Row - 如果是遍历你自己写的Cell类集合,要么把集合改成
List<MyCell>这类Iterable的容器,要么给自定义的Cell容器类实现Iterable接口,或者换普通for循环通过索引取值。
- 遍历Sheet里的行时,要把Sheet声明成POI的
新手避坑提醒
- 别随便用POI类的名字做自定义类名(比如Cell、FormulaEvaluator),很容易搞混编译器,导致莫名其妙的错误
- 确认Eclipse里已经正确导入POI的依赖包(至少要
poi和poi-ooxml两个包,版本统一)
内容的提问来源于stack exchange,提问作者Krusharth Shah
相关产品推荐
相关产品推荐

