Apache POIでワークシート出力時に数式を再計算させる方法

※要検証※

Apache POIでワークシート内に数式を使ったセルが含まれている場合、出力されたファイルを開いても数式が計算されていない場合がある。

数式を反映させる方法について調査すると、多くのブログなどで

sheet.setForceFormulaRecalculation(true);

または

workbook.setForceFormulaRecalculation(true);

のようにsetForceFormulaRecalculationメソッドを呼び出すと良いという記載があるが、これでは思った通りに動かなかった。

この場合、クライアント側で出力されたワークシートを開いた後、保護ビューモードを解除して編集可能とした瞬間に数式が再計算されるだけであり、保護ビューモード中は数式が計算されていない。

ワークシート出力時に数式を再計算するためには、

workbook.getCreationHelper().createFormulaEvaluator().evaluateAll();

とすれば良い。