実行時にデータベースから取得したテキストに置き換えたいブックマークを使用して、MSWordドキュメントを作成しました。
もともとこのアプリケーションは、この種のことを行うためにOLEオートメーション(Word)を使用していましたが、その後、いくつかの代替手段を見つけることにしました。
Open Office SDK(最後のリリース)をダウンロードして使用し、簡単なプロジェクトを実装しました。
// Opens a MS Word document
XComponent document = OpenDocument("Test.docx", "_blank", true);
XNameAccess xna = ((XBookmarksSupplier) document).getBookmarks();
string[] documentBookMarkKeys = xna.getElementNames();
if (documentBookMarkKeys.Length > 0) {
uno.Any currentBookmark = xna.getByName("bookmark1");
XTextContent bookmarkContent = currentBookmark.Value as XTextContent;
if (bookmarkContent != null) {
XTextRange xFound = bookmarkContent.getAnchor();
xFound.setString("Some text here!");
}
}
インターネットで見つかったコードを取得するために私がまとめたこの単純なルーチンは正常に機能しているように見えますが、それらのブックマークのフォーマットは保持されません。同じ結果を達成するための他の選択肢があるかどうかはわかりません。私は何か間違ったことをしていますか?
UNO経由でOpenOffice3.4を使用しています。