做項目的過程中,經常需要把數據里里的數據讀出來,經過加工,以word格式輸出。 在網上找了很多解決方案都不太理想,偶爾發現了PageOffice,一個國產的Office插件,開發調用非常簡單!比網上介紹的poi,jacob等解決方按容易上手多了!功能接口雖然沒有poi,jacob那么多,但是滿足了一般的需求的百分之八九十,而且不像poi那樣還需要區分處理07格式和03格式那么麻煩。
下面是百度百科PageOffice的介紹:
https://baike.baidu.com/item/PageOffice/2737741?fr=aladdin
PageOffice的基本功能包括:
在web網頁里打開、編輯、打印預覽、打印Word、Excel、PowerPoint等Office文檔。
文檔並發控制機制。
提供Word修訂痕跡、手寫批注、圈閱划線、鍵盤批注、電子印章等OA公文模塊的必備功能。
根據數據庫動態將數據,包括文本、圖片、表格等填充、導出到Word、Excel模板中指定的位置處,並且可以動態指定內容的各種格式。
提取Word、Excel文檔中指定位置處的內容,包括文本、圖片(Excel暫不支持)、表格等,保存到數據庫。
其他功能就不細說了......
更多的接口說明參考PageOffice官網API:http://www.zhuozhengsoft.com/help/java3/index.html
下載地址:http://www.zhuozhengsoft.com/dowm/
下載PageOffice開發包之后,拷貝 Samples4 文件夾到 Tomcat 的 Webapps 目錄下,訪問:http://localhost:8080/Samples4/index.html 就會看到所有官方示例效果的列表,重點參考以下幾個示例:
一、11、給Word文檔中的數據區域(DataRegion)賦值的簡單示例
一、17、給Word文檔中Table賦值的簡單示例
一、18、使用數據標簽(DataTag)給Word文件填充文本數據
二、6、后台編程插入Word文件到數據區域
二、7、后台編程插入圖片到數據區域
二、8、后台編程插入Excel文件到數據區域
二、9、給Word文檔添加水印
二、10、使用數據標簽(DataTag)給Word文件填充帶格式的數據
二、11、在Word中動態創建數據區域
我們可以寫一個簡單的程序測試一下效果:
PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request); poCtrl1.setServerPage(request.getContextPath()+"/poserver.zz"); WordDocument worddoc = new WordDocument(); //先在要插入word文件的位置手動插入書簽,書簽必須以“PO_”為前綴 //給DataRegion賦值,值的形式為:"純文本內容、[word]word文件路徑[/word]、[image]圖片路徑[/image]" DataRegion data1 = worddoc.openDataRegion("PO_p1"); data1.setValue("測試字符串");//純文本內容 DataRegion data2 = worddoc.openDataRegion("PO_p2"); data2.setValue("[word]doc/2.doc[/word]");//插入word文件 DataRegion data3 = worddoc.openDataRegion("PO_p3"); data3.setValue("[image]doc/1.jpg[/image]");//插入圖片 //打開文件、填充數據 poCtrl1.setWriter(worddoc); poCtrl1.webOpen("doc/template.doc", OpenModeType.docNormalEdit, "用戶名");
代碼很簡單。短短幾句就完成插入文字,圖片,子Word文件的功能!不過做項目的話,可以先定義好一個word模板,這樣有利於排版,減少編寫代碼的工作量,也可以調用PageOffice提供的接口控制模板中數據區域的樣式,但是編碼工作量就增加了。其功能還遠不止這些,根據具體需求具體處理吧。