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)