在經(jīng)過各種嘗試后码俩,確定對于比較復(fù)雜的情況,使用Freemarker導(dǎo)出的效果與成功率相對時較高的歼捏。當(dāng)然稿存,過程中也遇到了很多坑,所以記錄一下瞳秽。
注意:目前測試了doc文件的導(dǎo)出瓣履,docx文件的導(dǎo)出方案網(wǎng)上是由相關(guān)資料的,但是沒有親測成功
其實這種方案在java代碼中的處理相對簡單练俐,只要傳遞對象就可以了袖迎,其難度在于模板的設(shè)計,根據(jù)不同模板的需求腺晾,總結(jié)來說需要利用freemarker的相關(guān)語法解決模板的下面幾個問題:
1瓢棒、word中添加列表
2、word中添加圖片
3丘喻、word中循環(huán)的使用(通俗講就是相似內(nèi)容的重復(fù))
4脯宿、word中map的使用(通俗講就是不同情況下不同內(nèi)容的顯示)
說明:前兩條屬于常見使用方法,后兩條解釋一下:
- 問題3場景舉例:
需要導(dǎo)出10個工廠的數(shù)據(jù)信息泉粉,每個廠都套用固定表格连霉。
這種情況其實的模板就是需要把這個固定表格去循環(huán)榴芳,所以只需做一個廠的模板,剩下的通過循環(huán)實現(xiàn) 跺撼。 - 問題4場景舉例:
還是上面的問題窟感,如果每個廠通用的表格不是固定的,或者不僅僅是表格歉井,那么在傳遞參數(shù)時柿祈,就不是數(shù)組可以搞定的了,需要直接傳遞對象哩至,那么就要在模板中處理map躏嚎。
1 模板制作
1.1 模板文件生成
由于freemarker需要處理的為.ftl文件,但其內(nèi)容就是增加了一些代碼語句的xml菩貌,所以制作ftl的流程就是:
[1]. 將word的doc文件另存為xml格式
[2]. 在xml中進行變量替換詳細見1.2
1.2 模板中的變量
待更新
1.3 如何添加圖片
待更新
1.4 如何添加表格
待更新
1.5 關(guān)于循環(huán)
待更新
1.6 關(guān)于Map
待更新
2 Java的調(diào)用
待更新
2.1 Maven依賴
待更新
2.2 Word導(dǎo)出工具類參考
待更新
2.3 Web項目下的使用方式
待更新