[原創]java調用PageOffice生成word


一、在開發OA辦公或與文檔相關的Web系統中,難免會遇到動態生成word文檔的需求,為了解決工作中遇到導出word文檔的需求,前一段時間上網找了一些資料,在word導出這方面有很多工具可以使用,jacob、poi、java2word、itext。jacob要求服務器必須是windows操作系統,服務器上還必須安裝office軟件,果斷放棄!poi需要針對doc和docx兩種格式寫不同的代碼,增加了程序的復雜度。java2doc 是對 jacob 的封裝,同樣放棄!最后選定了用itext來導出word,網上一些資料說itext導出word功能太簡單,通過試用之后,封裝工具類,使用起來確實挺方便,但是導出的word文檔在細節方面很難達到要求,比如:字體、行距、字體間距、首行縮進等。

二、由於itext導出的word有各種各樣的小問題,只能另找其他的解決方案,經過一個朋友推薦,可用PageOffice組件來導出word,其效果能與用戶需求的word文檔達到完美的一致,而且編程接口簡單,調用很方便。總的來說就是制作模板(用PO_開頭的書簽作為數據占位符),然后編程調用PageOffice接口用真實數據替換模板中的占位符,最后生成word。下面看例子:

1. 制作模板

  打開word模板插入書簽:PO_Dept、PO_Name、PO_Cause、PO_Num、PO_Date,如下圖所示

  

2. 編寫代碼

  調用PageOffice接口,給word模板填充數據生成word文檔:

  

 1     // 聲明變量存儲從數據庫中讀取的數據
 2     String  docName = "", docDept = "", docCause = "", docNum = "", docDate = "";
 3     // 數據庫數據讀取操作(不同的數據庫用不同的代碼)
 4     ResultSet rs = stmt.executeQuery("select * from leaveRecord where ID = " + id);
 5     if (rs.next()) {
 6         docName = rs.getString("Name");
 7         docDept = rs.getString("Dept");
 8         docCause = rs.getString("Cause");
 9         docNum = rs.getString("Num");
10         docDate = rs.getString("SubmitTime");
11     }
12     rs.close();
13     //創建PageOffice的WordDocument對象,操作Word文件
14     WordDocument doc = new WordDocument();
15     doc.openDataRegion("PO_name").setValue(docName);
16     doc.openDataRegion("PO_dept").setValue(docDept);
17     doc.openDataRegion("PO_cause").setValue(docCause);
18     doc.openDataRegion("PO_num").setValue(docNum);
19     doc.openDataRegion("PO_date").setValue(docDate);
20     //創建PageOfficeCtrl對象打開文件
21     PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request);
22     poCtrl1.setServerPage(request.getContextPath()+"/poserver.zz"); //此行必須
23     //獲取數據對象
24     poCtrl1.setWriter(doc);
25     // 打開文檔
26     poCtrl1.webOpen("doc/template.doc", OpenModeType.docReadOnly, "Tom");

3. 生成效果圖

  

  

三、 源碼下載

  https://download.csdn.net/download/zi_wu_xian/10399345


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM