12

Excelシートのセルを変更するためにapache POIを使用しています。値を変更した後、変更されたセルに対応する数式を含むセルが更新されません。

Excel で数式を含むセルをクリックし、関数バーをクリックすると、数式が更新されます。

計算オプションを自動的に更新するように設定しています。

簡単な例。

行 :

[A2 + A3] [1] [2]

ここで A1 は 3 に等しい

POIを使用して変更すると:

[A2+A3] [2] [5]

そのセルをクリックするまで、A1 は 3 のままです。

ワークブックまたはシートを更新しても機能しません。これはExcelまたはPOIの問題ですか?誰でも回避策を考えることができますか?

4

3 に答える 3

25

XSSF ワークブックを使用している場合は、次のようにすべての数式セルを再評価できます。

XSSFFormulaEvaluator.evaluateAllFormulaCells(workbook)

HSSF ワークブックを使用している場合は、同様の API が存在します。

HSSFFormulaEvaluator.evaluateAllFormulaCells(workbook)

または、設定方法と具体的に達成しようとしていることによっては、ここで解決策を見つけることができるはずです

于 2013-07-29T16:41:26.417 に答える
11

シートにA3=sum(A1:A2)計算式がA1=5, A2 =4.ある場合、A2 の値を 2 のように変更すると、問題なく動作します。

sh.getRow(0).getCell(0).setCellValue(2); // A1=2 を設定して書き込み操作を実行し、A3 の値を確認します。まだ 9 が表示されています。間違っているように見えますが、実際にはそうではありません。ポイントは、Excel が以前に計算された結果をキャッシュし、再計算をトリガーしてそれらを更新する必要があることです。

wb.getCreationHelper().createFormulaEvaluator().evaluateAll(); または

wb.setForceFormulaRecalculation(true); その後、書き込み操作を実行します。これにより、正しい結果が得られます。詳細はこちら

于 2013-07-29T16:58:33.023 に答える
2

再計算を明示的にトリガーする必要があります。その理由と方法については、こちらの数式の再計算セクションを参照してください。

于 2013-07-29T16:39:38.433 に答える