JAvaエクスポート生成word
9795 ワード
最近やったプロジェクトでは、wordにいくつかの情報をエクスポートする必要があります.ネット上で多くの解決策を探して、今この数日の総括を分かち合います.現在、javaエクスポートwordには約6つのソリューションがあります. 1:JacobはJava-COM Bridgeの略で、JavaとマイクロソフトのCOMコンポーネントの間に橋を架けています.Jacobが持参したDLLダイナミックリンクライブラリを用いて,Javaプラットフォーム上でCOMプログラムの呼び出しをJNI方式で実現した.DLLダイナミックリンクライブラリの生成にはwindowsプラットフォームのサポートが必要です.このスキームはwindowsプラットフォームでしか実現できず、その限界である.
2:Apache POIは、MicroSoftベースで動作可能な一連のAPIを含む OLE 2 Compound Document Formatの各種フォーマットファイルは、これらのAPIでJavaでExcel、Wordなどのファイルを読み書きすることができます.彼のexcel処理は非常に強く、wordに対しては読み取りに限られており、現在は簡単なファイルの操作しか実現できず、スタイルを設定することはできません.
3:Java 2 wordはjavaプログラムで呼び出されます MS Office Word ドキュメントのコンポーネント(クラスライブラリ).このコンポーネントはjavaプログラムが彼のサービス操作Wordを呼び出すための簡単なインタフェースのセットを提供しています. ダイアログを開きます. 次のようなサービスがあります. ドキュメントを開き、ドキュメントを新規作成し、テキストを検索し、テキストを置換し、テキストを挿入し、ピクチャを挿入し、テーブルを挿入し、ブックマークにテキストを挿入し、ピクチャを挿入し、テーブルを挿入します.表にデータを入力して表データを読み込む ,リリース1.1の機能強化: テキストスタイルを指定し、表スタイルを指定します.これにより、wordドキュメントを動的にレイアウトできます.良い解決策です.
4:iTextは有名なオープンソースのサイトsourceforgeのプロジェクトで、PDFドキュメントを生成するためのjavaクラスライブラリです.iTextによってPDFまたはrtfのドキュメントを生成するだけでなく、XML、HtmlファイルをPDFファイルに変換することもできます.強力な機能.
5:JSP出力スタイル.このスキームは簡単ですが、処理スタイルに欠陥があり、簡単なエクスポートで使用できます.
6:XMLで作ると簡単です.Wordは2003年からXML形式をサポートしており、office 2003または2007でwordのスタイルを編集してからxmlとして保存し、xmlをFreeMarkerテンプレートに翻訳し、javaでFreeMarkerテンプレートを解析してDocを出力するのが大まかな考え方です.このようにして生成されたwordドキュメントはofficeの基準に完全に合致し、スタイル、コンテンツ制御が非常に便利で、印刷も変形せず、生成されたドキュメントはofficeで編集されたドキュメントと全く同じである.
以上の資料の参考と、ネット上のいくつかの意見を総合して、最後に私は選択して、6種類目はxmlで導出案をします.以下は、単純なwordエクスポートを実現するための基本的な例である: エクスポートするwordテンプレートの内容は、ピンイン部分をコード種に置き換える部分として起動します.
:
次にwordを.xmlファイルとして保存し、ファイルを開き、titleを見つけて${title}に変更し、後で置換する内容を順番に置き換えます.次に.xmlファイル接尾辞を.ftlに変更し、.ftlテンプレートファイルを指定したディレクトリにインポートします.jarパッケージfreemarker.jarをロードします.コードの書き込みを開始:主なコード:
.ftlファイルを変更し、リストの場所を見つけて、追加するリストをファイルに追加します.リストの前に<#list list as l>(ヘッダに<#listあなたの集合名as xxxx>)を追加し、最後にを追加します.リストの内容を変更し、出力する名前の前にl.を付けます.xuehaoのように、l.xuehaoに変更します.これはEL式のようなものです.
2:Apache POIは、MicroSoftベースで動作可能な一連のAPIを含む OLE 2 Compound Document Formatの各種フォーマットファイルは、これらのAPIでJavaでExcel、Wordなどのファイルを読み書きすることができます.彼のexcel処理は非常に強く、wordに対しては読み取りに限られており、現在は簡単なファイルの操作しか実現できず、スタイルを設定することはできません.
3:Java 2 wordはjavaプログラムで呼び出されます MS Office Word ドキュメントのコンポーネント(クラスライブラリ).このコンポーネントはjavaプログラムが彼のサービス操作Wordを呼び出すための簡単なインタフェースのセットを提供しています. ダイアログを開きます. 次のようなサービスがあります. ドキュメントを開き、ドキュメントを新規作成し、テキストを検索し、テキストを置換し、テキストを挿入し、ピクチャを挿入し、テーブルを挿入し、ブックマークにテキストを挿入し、ピクチャを挿入し、テーブルを挿入します.表にデータを入力して表データを読み込む ,リリース1.1の機能強化: テキストスタイルを指定し、表スタイルを指定します.これにより、wordドキュメントを動的にレイアウトできます.良い解決策です.
4:iTextは有名なオープンソースのサイトsourceforgeのプロジェクトで、PDFドキュメントを生成するためのjavaクラスライブラリです.iTextによってPDFまたはrtfのドキュメントを生成するだけでなく、XML、HtmlファイルをPDFファイルに変換することもできます.強力な機能.
5:JSP出力スタイル.このスキームは簡単ですが、処理スタイルに欠陥があり、簡単なエクスポートで使用できます.
6:XMLで作ると簡単です.Wordは2003年からXML形式をサポートしており、office 2003または2007でwordのスタイルを編集してからxmlとして保存し、xmlをFreeMarkerテンプレートに翻訳し、javaでFreeMarkerテンプレートを解析してDocを出力するのが大まかな考え方です.このようにして生成されたwordドキュメントはofficeの基準に完全に合致し、スタイル、コンテンツ制御が非常に便利で、印刷も変形せず、生成されたドキュメントはofficeで編集されたドキュメントと全く同じである.
以上の資料の参考と、ネット上のいくつかの意見を総合して、最後に私は選択して、6種類目はxmlで導出案をします.
:
次にwordを.xmlファイルとして保存し、ファイルを開き、titleを見つけて${title}に変更し、後で置換する内容を順番に置き換えます.次に.xmlファイル接尾辞を.ftlに変更し、.ftlテンプレートファイルを指定したディレクトリにインポートします.jarパッケージfreemarker.jarをロードします.コードの書き込みを開始:
1 public class WordTest {
2
3 private Configuration configuration = null;
4
5 public WordTest(){
6 configuration = new Configuration();
7 configuration.setDefaultEncoding("UTF-8");
8 }
9
10 public static void main(String[] args) {
11 WordTest test = new WordTest();
12 test.createWord();
13 }
14
15 public void createWord(){
16 Map<String,Object> dataMap=new HashMap<String,Object>();
17 getData(dataMap);
18 configuration.setClassForTemplateLoading(this.getClass(), "");//
19 Template t=null;
20 try {
21 t = configuration.getTemplate(" .ftl"); //
22 } catch (IOException e) {
23 e.printStackTrace();
24 }
25 File outFile = new File("D:/outFile"+Math.random()*10000+".doc"); //
26 Writer out = null;
27 try {
28 out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile)));
29 } catch (FileNotFoundException e1) {
30 e1.printStackTrace();
31 }
32
33 try {
34 t.process(dataMap, out); //
35 } catch (TemplateException e) {
36 e.printStackTrace();
37 } catch (IOException e) {
38 e.printStackTrace();
39 }
40 }
41
42 private void getData(Map<String, Object> dataMap) {
43 dataMap.put("title", " ");
44 dataMap.put("nian", "2016");
45 dataMap.put("yue", "3");
46 dataMap.put("ri", "6");
47 dataMap.put("shenheren", "lc");
48
49 List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
50 for (int i = 0; i < 10; i++) {
51 Map<String,Object> map = new HashMap<String,Object>();
52 map.put("xuehao", i);
53 map.put("neirong", " "+i);
54 list.add(map);
55 }
56
57
58 dataMap.put("list", list);
59 }
60 }
.ftlファイルを変更し、リストの場所を見つけて、追加するリストをファイルに追加します.リストの前に<#list list as l>(ヘッダに<#listあなたの集合名as xxxx>)を追加し、最後にを追加します.リストの内容を変更し、出力する名前の前にl.を付けます.xuehaoのように、l.xuehaoに変更します.これはEL式のようなものです.