使用velocity生成模板化的word文件

需求

用戶填寫表單內(nèi)容后需要下載word文檔,打印、敲章。選擇word的好處是打印前可以修改(pdf無法修改,不同場景不同選擇),而且排版比excel靈活。

實(shí)現(xiàn)思路

word可以另存為xml,使用模板引擎技術(shù)可以非常方便的完成替換,由于本項(xiàng)目中已經(jīng)使用velocity,因此沒有選擇freemarker。

遇到的坑

我用的是word2007,制作完模板另存為xml,結(jié)果生成的文件中部分中文顯示了亂碼。各種嘗試無果。最終另存為選擇 word2003xml文檔解決問題。有興趣的同學(xué)請繼續(xù)研究。

模板制作技巧

聽上去另存為xml是不錯(cuò)的思路,但實(shí)際上生成的xml結(jié)構(gòu)是比較復(fù)雜的,通常大家都不熟悉。

  1. 在word中編寫velocity的變量。但保存后要用文本編輯器檢查一遍變量是否被word劈成多段
  2. 使用xml格式化工具美化格式
  3. 循環(huán)結(jié)構(gòu)的foreach需要使用文本編輯器編寫,為了快速定位可以查找 w:tr
  4. 編輯完的模板保存到 \WEB-INF\templates 下

java調(diào)用

String path = WordHelper.createWord("bond.doc.vm","bond.doc",bondVO);

模板名,word文件名,數(shù)據(jù)pojo
返回下載用的相對路徑,由于下載功能在網(wǎng)頁關(guān)閉后就沒有用了,因此存在了temp目錄下,方便定時(shí)刪除。

發(fā)布注意事項(xiàng)

download 目錄需要做軟連接

改進(jìn)思路

在實(shí)踐過程中這個(gè)xml太難維護(hù)了,第一遍忍了,當(dāng)要求修改默認(rèn)內(nèi)容時(shí)就傻了。因此新的思路是寫個(gè)html 的 模板,依然用 velocity替換變量,然后使用POI生成word。這樣對現(xiàn)有的技術(shù)調(diào)整較小,并且后續(xù)模板的維護(hù)也變得簡單了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、項(xiàng)目需求描述: 根據(jù)獲取的計(jì)算模型計(jì)算的結(jié)果生成一個(gè)word模型固定的word報(bào)告。 計(jì)算結(jié)果結(jié)構(gòu)如下: 原始...
    焱魔王閱讀 5,441評論 9 2
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,840評論 18 399
  • date: 2017-04-15 21:34:56 Java利用freemaker包來操作生成word模板。 一個(gè)...
    樸有天虹閱讀 6,196評論 0 8
  • 好久沒畫畫,用這個(gè)練練筆。 不怎么會水粉,不會用馬克筆,只會素描,以后想自學(xué) 初三了還要花時(shí)間堅(jiān)持興趣畫畫嗎(不會...
    墨書竹閱讀 663評論 6 4
  • 很多人戒煙為什么戒不掉,單純的用吸煙的圖片、上醫(yī)院檢查、甚至拒絕買煙也仍然難以戒除,事實(shí)上戒煙需要一整套的方法,單...
    我叫黃小賤閱讀 416評論 1 0

友情鏈接更多精彩內(nèi)容