0

実行時にデータベースから取得したテキストに置き換えたいブックマークを使用して、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を使用しています。

4

2 に答える 2

0

ブックマークを削除して再作成しただけで、すべてが正常に機能しているようです。

于 2012-08-31T15:38:16.013 に答える
0

ドキュメントを Microsoft Word に保存することが目的の場合は、アプローチを調整する必要があるかもしれません。私の理解では、OpenOffice は元のドキュメントに関連付けられたすべてのメタ データを保持するわけではありません。つまり、私の経験では、MS Word ドキュメントのデータ フィールドはテキストのみをコピーし、元のデータ ソース/データ フィールドへのリンクは失われます。私の推測では、ブックマークについても同じことが起こる可能性があり、2 つの製品がブックマークをサポートしているという理由だけで、OO を使用して Word を操作すると、基になるリンクが失われる可能性があります。これを手動で試すことでこれを証明できます。つまり、修正したドキュメントを保存したときに必要な結果が得られるかどうかを確認するために、OO を使用して .docx を修正します。

于 2012-07-17T22:37:22.933 に答える