セル値がブックマークであり、ブックマークがプログラムで (Java の UNO 呼び出しを介して) 更新される場合に、openoffice Writer (3.3) セル計算のプログラムによる更新を強制する方法を見つけようとして、私は本当に立ち往生しています。
例
| start | stop | duration |
| 9:30 | 11:30 | = <A2>-<B2> | <= cell formula
これは、ユーザーがテーブルを手動で編集しているときに正常に機能し、次のセルに移動すると値が更新されます。ただし、セルのブックマークにテキストを挿入してプログラムで値を更新すると、計算されたセルは更新されません。表をクリックすると更新されますが、これを自動にしたいと思います。
ブックマークはこのようにテーブルに表示されます。
| start | stop | duration |
| <start0> | <stop0> | = <A2>-<B2> |
ブックマークを更新するコード例:
XBookmarksSupplier xBookmarksSupplier = (XBookmarksSupplier) UnoRuntime.queryInterface(XBookmarksSupplier.class, document);
XNameAccess xNamedBookmarks = xBookmarksSupplier.getBookmarks();
Object bookmark = xNamedBookmarks.getByName("stop0");
XTextContent xBookmarkContent = (XTextContent) UnoRuntime.queryInterface(XTextContent.class, bookmark);
xBookmarkContent.getAnchor().setString("11:30");
// code needed to force calculation of duration cell