最近のプロジェクトの場合、いくつかの情報をWordにエクスポートする必要があります。私はオンラインで多くのソリューションを見つけました、そして今、私は最近の要約を共有します。
現在、Javaから単語をエクスポートするための約6つのソリューションがあります。
1.ジェイコブは、Java-Com Bridgeの略語であり、JavaとMicrosoftのCOMコンポーネントの間に橋を架けています。 Jacobに付属するDLLダイナミックリンクライブラリを使用し、JavaプラットフォームでCOMプログラムへの呼び出しがJNIを通じて実現されます。 DLLダイナミックリンクライブラリの生成には、Windowsプラットフォームからのサポートが必要です。このソリューションは、Windowsプラットフォームにのみ実装できます。これが制限です。
2。ApachePOIには、Microsoft OLE 2化合物ドキュメント形式に基づいてさまざまなフォーマットファイルを操作できる一連のAPIが含まれています。これらのAPIを介して、JavaでExcel、Word、その他のファイルを読み書きできます。そのExcel処理は非常に強力であり、その言葉は読書に限定されています。現在、いくつかの簡単なファイル操作のみを実装でき、スタイルを設定することはできません。
3。Java2Wordは、JavaプログラムでMS Office Wordドキュメントを呼び出すコンポーネント(クラスライブラリ)です。このコンポーネントは、Javaプログラムがサービスを呼び出して単語ドキュメントを操作するためのシンプルなインターフェイスのセットを提供します。これらのサービスには、ドキュメントの開設、新しいドキュメントの作成、テキストの検索、テキストの交換、テキストの挿入、テーブルの挿入、ブックマークへのテキストの挿入、写真の挿入、テーブルの挿入などが含まれます。テーブルデータを読むためにテーブルにデータを入力します。バージョン1.1強化された機能:テキストスタイルを指定し、テーブルスタイルを指定します。このようにして、単語ドキュメントを動的に入力できます。それは良い解決策です。
4。ITEXTは、PDFドキュメントを生成するために使用されるJavaクラスライブラリである有名なオープンソースサイトSourceForgeプロジェクトです。 ITEXTを介して、PDFまたはRTFドキュメントを生成するだけでなく、XMLおよびHTMLファイルをPDFファイルに変換することもできます。強力。
5。JSP出力スタイル。このソリューションは簡単に実装できますが、ハンドリングスタイルには少し欠陥があり、簡単なエクスポートを使用できます。
6. XMLで行うのは非常に簡単です。 Wordは2003年以来XML形式をサポートしています。一般的なアイデアは、最初にOffice2003または2007を使用して単語スタイルを編集し、XMLとして保存し、XMLをフリーマーカーテンプレートに変換し、最後にJavaを使用してFreemarkerテンプレートと出力ドキュメントを解析することです。この方法で生成された単語文書は、オフィスの基準に完全に準拠しているため、スタイルとコンテンツの制御は非常に便利であり、印刷は変形しません。生成されたドキュメントは、オフィスで編集されたドキュメントとまったく同じです。
上記の情報の参照といくつかのオンライン意見に基づいて、私は最終的にXMLを使用して第6回エクスポートソリューションを選択しました。
簡単な単語エクスポートを実装するための基本的な例を次に示します。
単語テンプレートのコンテンツをエクスポートするために、ピニイン部分はコードタイプで置き換える部品です。 :
次に、wordを.xmlファイルとして保存し、ファイルを開き、タイトルを見つけて$ {タイトル}に変更し、交換するコンテンツを交換します。次に、.xmlファイルの接尾辞を.ftlに変更し、.ftlテンプレートファイルを指定されたディレクトリにインポートします。 JARパッケージFreeMarker.jarをロードします。コードの作成を開始します:
メインコード:
パブリッククラスWordTest {プライベート構成設定= null; public wordtest(){configuration = new Configuration(); configuration.setDefaultEncoding( "utf-8"); } public static void main(string [] args){wordtest test = new wordtest(); test.createword(); } public void createword(){map <string、object> datamap = new hashmap <string、object>(); getData(datamap); configuration.setclassfortemplateloading(this.getClass()、 ""); //テンプレートファイルが配置されているパスT = null; try {t = configuration.getTemplate( "test.ftl"); //テンプレートファイルを取得} catch(ioexception e){e.printstacktrace(); } file outfile = new file( "d:/outfile"+math.random()*10000+"。doc"); //ファイルwriterをエクスポートOut = null; try {out = new BufferedWriter(new outputStreamWriter(new FileOutputStream(OutFile))); } catch(filenotfoundexception e1){e1.printstacktrace(); } try {t.process(datamap、out); //塗りつぶしデータをテンプレートファイルに入力し、ターゲットファイルに出力します} catch(templateException e){e.printstacktrace(); } catch(ioexception e){e.printstacktrace(); }} private void getData(map <string、object> datamap){datamap.put( "title"、 "title"); datamap.put( "nian"、 "2016"); datamap.put( "yue"、 "3"); datamap.put( "ri"、 "6"); datamap.put( "shenheren"、 "lc"); List <Map <String、Object >> list = new ArrayList <Map <String、object >>(); for(int i = 0; i <10; i ++){map <string、object> map = new hashmap <string、object>(); map.put( "xuehao"、i); map.put( "neirong"、 "content"+i); list.add(マップ); } datamap.put( "list"、list); }}.ftlファイルを変更し、リストの場所を見つけ、ファイルにリストを追加します。 <#Listリストをl>>>>そのヘッダーに追加し(コレクション名をxxxx>としてコレクション名を追加)、</#list>を最後に追加します。リストコンテンツを変更し、lを追加します。出力される名前に。たとえば、Xuehaoは、それをl.xuehaoに変更します。これは、EL表現の使用に少し似ています。
上記はこの記事に関するものです。すべての人の学習に役立つことを願っています。