標籤:microsoft 變數 插入 sina 思路 總結 通過 開源軟體 enter
http://blog.sina.com.cn/s/blog_a5e968370101crtl.html
1、 Jacob是Java-COM Bridge的縮寫,它在Java與微軟的COM組件之間構建一座橋樑。使用Jacob內建的DLL動態連結程式庫,並通過JNI的方式實現了在Java平台上對COM程式的調用。DLL動態連結程式庫的產生需要windows平台的支援。
2、 Apache POI包括一系列的API,它們可以操作基於MicroSoft OLE 2 Compound Document Format的各種格式檔案,可以通過這些API在Java中讀寫Excel、Word等檔案。他的excel處理很強大,對於word還局限於讀取,目前只能實現一些簡單檔案的操作,不能設定樣式。
3、 Java2word是一個在java程式中調用 MS Office Word 文檔的組件(類庫)。該組件提供了一組簡單的介面,以便java程式調用他的服務作業Word 文檔。
這些服務包括: 開啟文檔、建立文檔、尋找文字、替換文字,插入文字、插入圖片、插入表格,在書籤處插入文字、插入圖片、插入表格等。填充資料到表格中讀取表格式資料 ,1.1版增強功能: 指定文本樣式,指定表格樣式。如此,則可動態排版word文檔。
4、 iText操作Excel還行。對於複雜的大量的word也是噩夢。用法很簡單, 但是功能很少, 不能設定方向等問題。
5、 JSP輸出樣式基本不達標,而且要列印出來就更是慘不忍睹。
6、 用XML做就很簡單了。Word從2003開始支援XML格式,大致的思路是先用office2003或者2007編輯好word的樣式,然後另存新檔xml,將xml翻譯為FreeMarker模板,最後用java來解析FreeMarker模板並輸出Doc。經測試這樣方式產生的word文檔完全符合office標準,樣式、內容控制非常便利,列印也不會變形,產生的文檔和office中編輯文檔完全一樣。
java產生pdf方案總結
1. Jasper Report產生pdf:設計思路是先產生模板,然後得到資料,最後將兩者整合得到結果。但是Jasper Report的問題在於,其產生模板的方式過於複雜,即使有IDE的協助,我們還是需要對其中的眾多規則有所瞭解才行,否則就會給調試帶來極大的麻煩。
2. openoffice產生pdf:openoffice是開源軟體且能在windows和linux平台下運行。
3. itext + flying saucer產生pdf:itext和flying saucer都是免費開源的,且與平台無關,結合css和velocity技術,可以很好的實現。
一般使用第三種方案比較多,它實現的步驟是非常簡單的。
JAVA產生word優缺點對比
所用技術 |
優點 |
缺點 |
Jacob |
功能強大 |
代碼量大,設定樣式繁瑣;需要windows平台支援,無法跨平台 |
Apache POI |
讀寫excel功能強大、操作簡單 |
一般只用它讀取word,能夠建立簡單的word,不能設定樣式,功能太少 |
Java2word |
功能強大,操作簡單 |
能滿足一般要求,不支援07格式,國人開發的,參考資料較多,需要windows平台支援 |
iText |
功能全,能滿足一般要求 |
不能直接產生或操作doc文檔,只能產生rtf格式的文檔,rtf也可以用word開啟 |
JSP |
操作簡單,代碼量少 |
能把當前頁面匯出簡單的word,不能設定樣式,美觀性差,無法操作word |
XML(最佳) |
代碼量少,樣式、內容容易控制,列印不變形,完全符合office標準 |
需要提前設計好word模板,把需要替換的地方用特殊標記標出來 |
JAVA產生pdf優缺點對比
所用技術 |
優點 |
缺點 |
openoffice |
本身就是office軟體,很容易設計一些文件範本,支援java調用實現word轉換成pdf |
需要先安裝,設計好pdf模板樣式,然後用程式來填充那些預留好的變數 |
itext |
能滿足要求,本身提供了一些api |
無法識別很多html的tag和attribute,無法識別css,需要用其api函數來設定樣式 |
Jasper Report |
能滿足要求,市面上使用的比較多,相關文檔多 |
複雜,很難完全掌握,需要先設計範本,強依賴於IDE進行可視化編輯 |
flying sauser(最佳) |
能解析html和css輸出成image、pdf等格式,操作簡單,api強大 |
需要編寫freemarker或velocity模板,打造html,勾畫pdf的樣式 |
java產生word的幾種方案