1. 程式人生 > >使用模板引擎生成複雜Word文件

使用模板引擎生成複雜Word文件

    當使用java程式碼生成word文件,要進行一些複雜的排版操作時比較困難,這時可以通過模板引擎(如freemarker、velocity等)來生成想要的word文件。

步驟:

1.先準備好word文件模板,進行排版等操作,在需要替換填寫變數字元,然後儲存為xml格式。

例如在word中寫入以下資訊


2.另存為xml格式(個人使用時都是儲存為2003的xml,最好別用wps,生成的xml可能會有些出入)


3.開啟xml,找到需要替換的變數,用模板引擎定義的變數格式替換。我使用的是velocity,所以將var替換為${var}。


4.然後將檔案字尾改為模板引擎能識別檔案,velocity使用的模板字尾為.vm,所以我將檔案儲存為test.vm

5.接下來的操作就是使用模板引擎將變數替換,輸出檔案時將檔案字尾改回.doc就行了。

以上是生成簡單文件的做法-----------------------------------------------------------------------------------

有時新增某些特殊元素,如:表格、圖片、分頁。我們可以根據word生成xml進行改造,利用模板引擎生成想要元素

-圖片:在xml中圖片元素為<w:pict>,找到該元素的位置,根據模板引擎的語法進行改寫


word中圖片使用base64編碼,將圖片的base64編碼填寫入<w:binData>元素的位置就能顯示圖片了;

-表格:先編輯一個表格,再在xml中拷貝表格中的一行,進行輸入資料的行數迴圈輸出就行

-分頁:將生成的word xml資料放入陣列中,在頁與頁之間用word的分頁符間隔即可。(注意:以下變數$pageContent的內容應當是word xml裡<wx:sect>文件體元素中包含的資料,其中還要排除<w:sectPr>尾部資訊元素的資料


Word的xml中相關定義:

<w:br w:type="page"/> 分頁符號

<w:pict>圖片資源

<wx:sect> 文件體

<w:sectPr> 尾部資訊

</w:tbl>表格

<w:tr>表格行

分頁符(這是我自己在xml截取出的,你們可以自己儲存一個多頁的文件,在xml裡找到它的分頁符並使用它)

<w:p wsp:rsidR="001E05E9"wsp:rsidRDefault="001E05E9">

       <w:pPr>

       <w:widowControl/>

       <w:jc w:val="left"/>

       </w:pPr>

       <w:r>

       <w:br w:type="page"/>

       </w:r>

  </w:p>

 換頁符:(有時在表格後新增不起作用)

<w:br w:type="page"/>