java - 在 java 中使用 Apache Poi 进行公式计算

标签 java apache-poi

我在 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;
}

另请参阅 https://poi.apache.org/spreadsheet/eval.html 处的文档了解更多描述和提示。

关于java - 在 java 中使用 Apache Poi 进行公式计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43582434/

相关文章:

java - 使用 Apache POI 将整行加粗

java - spring mvc中intercept-url未授权时重定向

java - 在Android上使用JDom2编写XML文件

java - 单链表 : Trying to remove element before a passed type Object paramater

java - 如何使用 Java 对 .docx 文件进行数字签名

java - apache poi写入临时文件而不是真实文件

java - 没有数据的 RxJava2 主题

java - 如何获取 ArrayList 中对象的属性和值?

java - 使用 Apache POI 将文件嵌入到 Excel 中

java - 尝试使用 Apache poi 制作简单的 PDF 文档