在Java中使用Apach Poi进行公式评估

时间:2017-04-24 07:43:46

标签: java apache-poi

我在Excel工作表中使用了Formulas并使用这段代码来评估工作簿:

  FormulaEvaluator evaluato=wb.getCreationHelper().createFormulaEvaluator();
  evaluator.clearAllCachedResultValues();
  evaluator.evaluateAll();

但是每次我想从Excel文件中读取数据时,我都必须使用它,这会增加时间,因为更新值需要10秒。

因此,有任何方法可以在事件的预处理中使用此代码,然后使用评估结果更新工作表。因此,每次我想从Excel中获取值时,我都不必使用此代码。

1 个答案:

答案 0 :(得分:1)

您也可以评估单个单元格,因此如果您只对电子表格某些部分的值感兴趣,那么仅评估这些单元格就足够了,因此可以通过“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;
}

另请参阅https://poi.apache.org/spreadsheet/eval.html上的文档以获取更多说明和提示。