在java中使用ApachPOI进行公式计算

在java中使用ApachPOI进行公式计算,java,apache-poi,Java,Apache Poi,我在excel工作表中使用了公式,并使用这段代码评估工作簿: FormulaEvaluator evaluato=wb.getCreationHelper().createFormulaEvaluator(); evaluator.clearAllCachedResultValues(); evaluator.evaluateAll(); 但是每次我想从Excel文件中读取数据时,我都必须使用它,这会增加时间,因为更新值需要10秒 那么,我是否可以在事件的预处理中使用这些代码,然后

我在excel工作表中使用了公式,并使用这段代码评估工作簿:

  FormulaEvaluator evaluato=wb.getCreationHelper().createFormulaEvaluator();
  evaluator.clearAllCachedResultValues();
  evaluator.evaluateAll();
但是每次我想从Excel文件中读取数据时,我都必须使用它,这会增加时间,因为更新值需要10秒


那么,我是否可以在事件的预处理中使用这些代码,然后使用评估结果更新工作表。因此,我不必每次从Excel获取值时都使用此代码

您也可以计算单个单元格,因此,如果您只对电子表格的某些部分的值感兴趣,只计算这些单元格可能就足够了,从而通过“evaluateAll”节省所有其他单元格所需的时间,例如

有关更多说明和提示,请参阅中的文档

switch (evaluator.evaluateFormulaCell(cell)) {
    case Cell.CELL_TYPE_BOOLEAN:
        System.out.println(cell.getBooleanCellValue());
        break;
    case Cell.CELL_TYPE_NUMERIC:
        System.out.println(cell.getNumericCellValue());
        break;
    case Cell.CELL_TYPE_STRING:
        System.out.println(cell.getStringCellValue());
        break;
    case Cell.CELL_TYPE_BLANK:
        break;
    case Cell.CELL_TYPE_ERROR:
        System.out.println(cell.getErrorCellValue());
        break;

    // CELL_TYPE_FORMULA will never occur
    case Cell.CELL_TYPE_FORMULA: 
        break;
}