9

テンプレートを使用して Word 文書を作成し、いくつかの変数 (フィールド) を置き換えて、新しい Word 文書として保存したいと考えています。

私はApache POIを使用することを考えていました.http://poi.apache.org/はこの目的に最適ですか? 印象を共有できますか?

4

8 に答える 8

9

私は以前にPOIを使用しましたが、確かにWord文書を生成することができます。しかし、悪魔は細部に宿っています。

Wordには何千もの機能があります。それ自体が箇条書きの一部である別のテーブルに含まれるテーブルの2つの結合されたセルに、負のインデントが付いた#13から始まる番号付きリストを配置できます。POIのドキュメントに、進行中の作業であると記載されている場合、これは、Wordの(ドキュメント化されていない)仕様に追いつくことを試みる永遠の状態を反映しています。

適度に「通常の」使用機能のセットを備えたドキュメントは、POIによって十分にサポートされています。POIのインターフェイスとメソッドは合理的で一貫性がありますが、多少の作業が必要になる場合があります。しかし、Pascalが言うように、それほど法外な機能のセットを備えたドキュメントもRTFでサポートされています。私はRTFを「実行」した経験はほとんどありませんが、POIを使用するよりもおそらく少し簡単です。

.DOC環境で作業している場合、または作成したドキュメントをではなくと主張する顧客の.RTF場合、Officeオートメーションを少し使用してRTFをDOCに変換する手順を導入できない限り、POIがほとんど唯一の選択肢です。 。

更新:その間に、さらにいくつかのアイデアがありました。

POIの使用またはRTFドキュメントの作成は、事実上すべてのプラットフォームで実行できることです。私の仕事では、たとえば、このような処理を行うすべてのサーバーがたまたまLinuxを実行しています。

ただし、プログラムがWindowsで実行される可能性が高い場合は、別の方法があります。Jacobhttp : //www.land-of-kain.de/docs/jacob/

JacobはCOMJavaのインターフェースです。基本的に、WordやExcelなどのWindowsプログラムを「リモートコントロール」することができます。上記でリンクしたドキュメントは、Jacob自身のサイトではなく、Jacobを使用するための「CookieCutter」レシピを含む単一のページにリンクしています。プロジェクト自体はSourceForgeにあります:http ://sourceforge.net/projects/jacob-project/しかし、人々は、当然のことながら、ドキュメントが少し不足していると主張しています。

Jacobには、「実際の」Wordを扱っている他のすべてのソリューションよりも優れているため、Wordのすべての機能を利用できます。これは、POIまたはRTF形式では処理できないドキュメントの詳細な側面がある場合の代替手段になります。

于 2010-01-02T10:47:18.240 に答える
4

これは明らかに遅すぎますが、2013 年以降、Word 文書を作成するためのより優れた、より柔軟なソリューションが登場しました。

http://www.docx4java.org/trac/docx4j

POI よりも docx4j の方がはるかに幸運でした。

于 2014-09-18T19:42:08.873 に答える
3

テンプレートを使用していて、単語ドキュメントを最初から作成したくない場合、私が知っていることとして、POIはかなり良い解決策です。テンプレートを開き、置き換えるゾーンを選択します。

POIはまだ開発中であると言われていますが、私はそれを本番環境で使用しており、現時点ではかなりうまく機能しています。

于 2010-01-02T10:23:44.220 に答える
2

この質問は少し古いことは知っていますが、多くの人がまだ検索エンジンでこれを見つけていると思うので、ここであなたが望むことを行う別の可能性を投稿します:

Word テンプレートを作成し、その中の値を置き換えることが唯一の目的である場合は、Word テンプレートを単一の xml (docx ではなく) として保存し、フレームワークを使用せずに単純な Java で処理することを検討してください。もっとやりたい場合 (リストやテーブルの作成など) は、POI のようなフレームワークをロードする前に、xml 形式を理解し、独自のヘルパーを作成することも検討してください。

これを行う方法の例を次に示します: http://dev-notes.com/code.php?q=10

これは高速バージョンです。適切なバージョンが必要な場合は、XML プロセッサを使用してみてください。

PS: ユーザーは、ファイル拡張子が doc ではなく xml であることに気付くかもしれません。彼らはあなたを責めるかもしれませんが、それは問題ありません...名前を doc に変更するだけで、Word は形式を認識し、誰もが再び満足します ;)

于 2011-10-12T10:43:19.137 に答える
2

POI での Word 文書のサポートの正確なステータスはわかりませんが、POI の Web サイトによると、作業はまだ進行中です (これが何を意味するのか正確にはわかりません)。したがって、現時点では POI を使用せず、RTF ドキュメントを生成しようとします。このために、次のことができます。

  • RTFモデルとデータのマージの結果としてRTFドキュメントを生成できるRTF to RTFエンジンであるRTFTemplateを使用します。
  • 主に PDF ジェネレーターですが、 RTFも生成できるiTextを使用します。
  • 独自のカスタム ソリューションを構築します (ただし、私はそうしません)。

私はiTextに行きます。

于 2010-01-02T09:38:22.777 に答える
1

私はこれを作成して使用します: http://code.google.com/p/java2word

于 2010-07-26T07:07:18.177 に答える
1

Aspose.Words コンポーネントを調べる必要があります。最近、コンポーネントの Java バージョンの提供を開始しました。

次のリンクを参照してください: Aspose.Word for Java

これにより、マシン上に Microsoft Word のインスタンスを必要とせずに、Word の自動化、作成、メールのマージなどの高度な機能がサポートされます。本当の利点は、実際の Word 文書のコンテキスト内で作業でき、RTF などを作成して妥協する必要がないことです。

Java バージョンは現在、.Net バージョンほど完全な機能を備えていませんが、主要なコア機能はそこにあり、機能と同等のバージョンをすぐに作成することを非常に強く求めています。

また、Java バージョンを購入すると、新しいリリースが作成されたときに、1 年間無料でアップグレード / サポートを受けることができます。

于 2010-01-02T11:28:20.180 に答える
1

docx ドキュメントを扱っている場合、docx4j はオプションです。POI と同様に、オープン ソースです。

于 2010-01-02T20:43:41.353 に答える