1. 程式人生 > >[轉載]java讀寫word文檔,完美解決方案

[轉載]java讀寫word文檔,完美解決方案

重點 app PE 列表 mage too 介紹 代碼 而且

做項目的過程中,經常需要把數據裏裏的數據讀出來,經過加工,以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提供的接口控制模板中數據區域的樣式,但是編碼工作量就增加了。其功能還遠不止這些,根據具體需求具體處理吧。

[轉載]java讀寫word文檔,完美解決方案