使用POI计算EXCEL中recursion公式的值

我有一个EXCEL电子表格,有许多计算一些包括recursion公式(在Excel中完美罚款计算这些没有问题)。

我正在使用Apache Poi API 3.8版来打开现有的电子表格,为计算添加更新的值,保存电子表格,然后将结果读入我的程序。

所有这些工作除了在内存poi版本的电子表格不执行recursion计算。

我正在调用POI代码来计算整个工作簿,每个工作表,然后每个公式单元格,但单元格公式从不计算。

如果我打开已保存的电子表格并进行计算,则公式会精确计算该值。 如果可能的话,我需要避免用户手动打开保存的电子表格。

任何有关这个问题的见解将不胜感激。

这是我试过的代码。 它都运行没有错误,但不计算公式。

该公式已经在电子表格中工作正常,所以我试图强制公式重新计算。

我已经尝试了所有这些变化。 代码运行并执行,但不计算公式

wb.getCreationHelper().createFormulaEvaluator().evaluateAll(); /* //wb.getCreationHelper().createFormulaEvaluator().evaluateAll(); System.out.println(wb.getSheet("Rate Report").getRow(16).getCell(0).getStringCellValue()); System.out.println(wb.getSheet("Rate Report").getRow(16).getCell(1).getNumericCellValue()); FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator(); //String wbsheets[] = {"Original","Main_DB","Parameters","Translator","Workers Comp.","Rate Report","Notes Fields"}; String wbsheets[] = {"Notes Fields","Translator","Parameters","Rate Report"}; for(String sheetName : wbsheets) { Sheet sheet = wb.getSheet(sheetName); System.out.println("processing sheet: " + sheet.getSheetName()); for(Row r : sheet) { for(Cell c : r) { if(c.getCellType() == Cell.CELL_TYPE_FORMULA) { System.out.println("Recalcing: "+r.getRowNum()+c.getColumnIndex() + "in "+ sheet.getSheetName()); evaluator.evaluateFormulaCell(c); } } } } XSSFFormulaEvaluator.evaluateAllFormulaCells((XSSFWorkbook) wb);