天天看點

Web應用Word生成

    前段時間接到一個Web應用自動生成Word的需求,現整理了下一些關鍵步驟拿來分享一下。

思路:(注:這裡隻針對WORD2003版本,其它版本大同小異。)

因為WORD檔案内部的資料及格式等是通過XML檔案的形式存儲的,是以WORD檔案可以很友善的實作由DOC到XML格式的互相轉換,而操作XML檔案就友善的多了,這樣就實作了與平台無關的各種操作,通過節點的查詢、替換、删除、新增等生成Word檔案。是以,根據模闆生成WORD檔案實質就是由使用者資料替換XML檔案中特殊标簽,然後另存為一個DOC檔案的過程。

下面列舉涉及到的一些關鍵步驟(以介紹信為例)

第一步:根據需求制作WORD模闆

建立一個DOC格式的WORD檔案,根據需要填寫好模闆内容,設定好模闆的格式,包括字型,樣式,空行等等,需要填充的資料使用特殊标簽(如:【※機關名稱※】)預先占位,然後将建立的WORD檔案另存為XML格式檔案。這樣, WORD模闆就制作完成了,代碼如下:

Web應用Word生成

第二步:在配置檔案中配置好模闆資訊

新增名為template-rule.xml的配置檔案,每個template節點對應一個模闆類型。每個template中有一個taglist節點,該節點包含的所有子節點包含了模闆所有将要替換、删除節點資訊,節點資訊包括:節點值,節點屬性英文名稱,中文描述,字段類型,可否删除等資訊。在設定這個配置檔案時候,需要注意desc屬性的值必須與模闆XML中的占位符一緻。比如:模闆XML中設定的年份這個錄入項【※年※】需與template-rule.xml中的desc="年"名稱對應,代碼如下:

第三步:編寫java代碼

 第四步:大功告成

幾點總結及注意事項:

1.  定義的元素name必須與template_rule.xml中對應相同的name的值一緻,否則需要設定轉換規則。

2.  模闆xml中定義的占位符【※※】中的文字必須與template_rule.xml中對應的desc相同,否則需要設定轉換規則.

3.  在配置好模闆XML後,需要檢查<w:body>标簽下的子節點是否是<wx:sect>标簽(與WORD版本有關),如果沒有,則必須加上該标簽。

4.  如果要動态删除<w:p>标簽節點,則這個節點的内容需要在模闆中的同一行,如果不是,則可以手動調整模闆XML。

5.  如果需要實作WORD自動換行功能(關于模闆中換行的方案暫沒有想到更好的),則需要首先計算出對應模闆該行的字數,然後采用空格填充來實作。

繼續閱讀