一、序言
在日常開發中,常常有動態word檔案生成的需求,通過編制模版,然后動態修改word內容以組合成新的檔案,報告單、請假單、發票頁等都可以使用動態生成word來解決,
筆者總結歸納出通用技術要點,盡可能降低廣大開發者的使用技術門檻,
二、制作與渲染模版
(一)總體流程
1、準備資料
通過查詢資料庫獲取需要修改的資料,或者是呼叫遠程API介面獲得資料,資料準備完畢后,進入下一步,
2、制作word模版
新建并設計出期望效果的word檔案樣式,包含字體、字號、段落樣式布局等,先做出一個靜態的word檔案,
3、制作freemark模版
在新建word模版的基礎上,使用freemark語法,結合已經準備填充的資料結構,將需要動態變化的內容用變數表示,
用變數替換時常見的情形時物件屬性和回圈,
freemark模版制作完成后,保存為ftl后綴檔案,
4、渲染字串
將資料和freemark模版組合,并且將前期制作的變數占位符替換,形成最終的word檔案
(二)編碼實踐
按照筆者提供的流程和SDK編碼實踐相對比較簡單,
1、引入依賴
如下依賴包含封裝的工具方法,大幅降低使用門檻,
<dependency>
<groupId>xin.altitude.cms</groupId>
<artifactId>ucode-cms-word</artifactId>
<version>1.5.6</version>
</dependency>
2、編碼
/* 模擬準備資料 */
List<HumanDemo> data = https://www.cnblogs.com/javazhishitupu/p/TempUtils.readJsonList("HumanDemo.json", HumanDemo.class);
/* 將資料填充到模版中并生成word檔案 */
DocUtils.fillWord("templates/HumanDemo.ftl", data);
從流程到編碼實踐比較簡單,
到此為止,已經可以快速體驗word生成技術了,
三、內容拓展
上述分析的word生成如果頁面結構較為簡單,實作起來難度不大,假如涉及到如下情形,實作起來就會增加不少難度,
增加的困難主要來源于頁面布局復雜、使用各種組件控制元件多、多媒體資源的引入,解決方法仍然參考上述流程,
(一)復雜模版
1、多媒體資源布局

當模版中需求多媒體(圖片)內容,并且數量動態變化,位置不固定時,實作難度較大,
2、復雜內容布局

當模版中包含文本,選擇框,橫向合并單元格、縱向合并單元格時,實作難度較大,
3、動態渲染表格

涉及到動態渲染合并單元格時,實作難度較大,
上述復雜模版制作,筆者均有實踐,
(二)檔案格式
對于word檔案格式有兩種,一種是.doc后綴檔案,一種是.docx后綴檔案,上述討論屬于前者,后者模版制作與生成比前者要復雜,將在后續的版本中提供API操作介面,
.docx后綴檔案的word在轉PDF方面兼容性比較好,
(三)使用建議
開發前,盡可能將模版布局確認,對于復雜頁面結構修改需要增加較大投入
熟悉FreeMark語法、word檔案結構將會對word模版開發受益
多使用、多練將有助于制作出漂亮的檔案,
喜歡本文就【??推薦??】一下,激勵我持續創作,這個Github同樣精彩,收到您的star我會很激動,本文歸檔在專題博客,視頻講解在B站,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/491384.html
標籤:Java
上一篇:Java----零錢通專案
