POI-XSSF:单元格types是FORMULA,但无法获得cachedResultType

在我的代码中,我正在检查单元格types,如果单元格types是公式,那么我正在尝试获取caching的值,如下所示:

else if(cell.getCellType() == XSSFCell.CELL_TYPE_FORMULA){ System.out.println("formula result type:" +cell.getCachedFormulaResultType()); switch(cell.getCachedFormulaResultType()){ case XSSFCell.CELL_TYPE_NUMERIC: .... .... break; 

它对一些细胞工作正常,但在其中一个细胞中,我得到非法状态exception:

 java.lang.IllegalStateException: Only formula cells have cached results 

我无法找出错误的原因。 我不使用cell.getCachedFormulaResult()之外, else if ,甚至这适用于所有前面的单元格(它们具有相同的公式)

如果caching的结果不可用,也许有助于明确触发计算:

 Workbook wb = ... Sheet sheet = wb.getSheetAt(0); FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator(); // suppose your formula is in B3 CellReference cellReference = new CellReference("B3"); Row row = sheet.getRow(cellReference.getRow()); Cell cell = row.getCell(cellReference.getCol()); CellValue cellValue = evaluator.evaluate(cell); 

你可以做这样的事情,例如在一个try/catch(IllegalStateException)