通过使用EvaluationWorkbook.getMissingFunctionInformation()方法获取计算工作簿中缺失的函数信息来获得更详细的错误消息。
下面是一个示例代码:
try { // 进行公式计算 Cell cell = row.getCell(0); FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator(); CellValue cellValue = evaluator.evaluate(cell); System.out.println(cellValue.getNumberValue()); } catch (FormulaParseException e) { // 获取详细的错误消息 EvaluationWorkbook wb = new HSSFWorkbook(); Ptg[] tokens = FormulaParser.parse(e.getFormula(), (HSSFWorkbook) workbook, FormulaType.CELL, -1); MissingFunctionPtg mf = null; for (Ptg token : tokens) { if (token instanceof MissingFunctionPtg) { mf = (MissingFunctionPtg) token; break; } } if (mf != null) { // 获取函数的名称和具体位置 MissingArgEvaluationMode me = EvaluationWorkbook.getMismatchedFunctionIndex(mf); EvaluationName evalName = wb.getName(me.getFunctionIndex()); System.out.println("Function name: " + evalName.getNameName()); System.out.println("Function index: " + me.getFunctionIndex()); System.out.println("Argument index: " + me.getArgIndex()); } e.printStackTrace(); }
上一篇:ApachePOI中的TransformerFactory无法识别属性。
下一篇:ApachePOI中关于SUMPRODUCT函数的一个问题:InvalidargtypeforSUMPRODUCT:(org.apache.poi.ss.formula.eval.ErrorEval)