0

Javaを使用してWord文書のカスタムプロパティの値を更新できません。

値が「stack」のカスタムプロパティを含む単語ドキュメントがあります。javaを使用して、その値を「オーバーフロー」に変更したいと思います。私は2つのアプローチを使用しました。

1)ApachePOIを使用する

org.apache.poi.hpsf.CustomPropertiesをorg.apache.poi.hpsf.DocumentSummaryInformationに設定し、POIFSFileSystemに書き込みました。

これは、wordのcustompropertiesテーブルの値を更新します。ただし、ドキュメント内のそれぞれのプロパティの値は更新されません。ドキュメントを開いた後、その値を更新するためにドキュメントを手動で更新する必要があります。

2)ドキュメントの文字を文字ごとに解析し、フィールドコードDC3、DC4、およびNAKを使用して、カスタムプロパティの場所を特定します。既存の値を新しい値に置き換えます。

これで、生成されたドキュメントに新しい値が含まれます。ただし、ここでの問題は、古い値と新しい値の長さが異なる場合、ドキュメントが破損することです。ロジックが十分に優れていることを確認しました。

どんな助けでもいただければ幸いです。

4

1 に答える 1

1

問題を解決するために私が取ったアプローチを更新するには:

Office 2007(docx)ドキュメントをテンプレートとして使用するのが簡単になりました。それはzipドキュメントに他なりません。zipアプリケーション(winzip / 7zip)を使用して開くことができ、その中に多くのxmlファイルがあります。document.xmlにはコンテンツが含まれ、styles.xmlにはフォーマット情報などが含まれます。

実行時に、ドキュメントを解凍してdocument.xmlを解析し、domを使用して動的コンテンツで更新しました。カスタムプロパティは、別のxmlファイルで利用できます。

2003ユーザーの場合、Wordアプリケーションを使用してテンプレートを準備し、ドキュメントをXMLとして保存してから、入力として提供する必要があります。

現在、apache-poiは使用されていません。

于 2010-02-11T14:18:20.650 に答える