单元格值更改时,公式不起作用

我正在使用POI Excel,我有这种情况:

通过这一行代码,我改变了A3值,这是一个下拉列表:

sheet.getRow(2).getCell(0).setCellValue(uf); 

这部分工作正常,我已经validation了单元格值已被更改。

不好的部分是这样的:

E7有这样的公式:= CONCATENATE($ A $ 3; D7)

所以,当我改变A3的价值使用:

 sheet.getRow(2).getCell(0).setCellValue(uf); 

E7的值应该通过公式来改变,但这是行不通的。

我不知道如何使用java中的公式dynamic改变单元格的值。

我认为这应该是自己的工作。 就好像我手动更改了A3值。

在Apache POI中,当值更改时,Excel公式不会自动重新计算。

当您完成更改公式中引用的任何单元格的值时,请创build一个FormulaEvaluator并告诉它使用evaluateAll方法评估所有公式。

 sheet.getWorkbook().getCreationHelper().createFormulaEvaluator().evaluateAll(); 

或者,您可以强制Excel打开时重新计算公式, setForceFormulaRecalculation是在Workbook上使用setForceFormulaRecalculation设置相应的标志。

 sheet.getWorkbook().setForceFormulaRecalculation(true);