首页 文章

Excel公式未更新单元格

提问于
浏览
9

我正在使用apache POI更改Excel工作表中的单元格 . 更改值后,具有与已更改的单元格对应的公式的单元格不会更新 .

当我进入Excel并单击带有公式的单元格,然后单击功能栏时,公式将更新 .

我有计算选项设置为自动更新 .

快速举例 .

行:

[A2 A3] [1] [2]

A1在这里等于3

当我使用POI更改它时:

[A2 A3] [2] [5]

A1仍然等于3,直到我点击该单元格 .

刷新工作簿或工作表也不起作用 . 这是excel还是POI的问题?谁能想到一个解决方法?

3 回答

  • 2

    如果您正在使用XSSF工作簿,则可以按如下方式重新评估所有公式单元格:

    XSSFFormulaEvaluator.evaluateAllFormulaCells(workbook)
    

    如果您使用HSSF工作簿,则存在类似的API:

    HSSFFormulaEvaluator.evaluateAllFormulaCells(workbook)
    

    或者,根据你究竟是如何努力完成的,你应该能够找到你的解决方案here

  • 20

    如果您的工作表有一些公式,说 A3=sum(A1:A2) 被计算,并且它与 A1=5, A2 =4. 正常工作现在如果用2更改A2的值

    sh.getRow(0).getCell(0).setCellValue(2); //设置A1 = 2并执行写操作,检查A3的值是否仍然显示9.看似错误但实际上没有 . 重点是Excel缓存以前计算的结果,您需要触发重新计算以更新它们 .

    wb.getCreationHelper().createFormulaEvaluator().evaluateAll();

    wb.setForceFormulaRecalculation(true); 然后执行写操作 . 这将为您提供正确的结果 . 详情check here

  • 9

    您必须明确触发重新计算 . 请参阅“重新计算公式”部分here了解为何以及如何执行此操作 .

相关问题