在經(jīng)過各種嘗試后,確定對(duì)于比較復(fù)雜的情況,使用Freemarker導(dǎo)出的效果與成功率相對(duì)時(shí)較高的。當(dāng)然,過程中也遇到了很多坑,所以記錄一下。
注意:目前測(cè)試了doc文件的導(dǎo)出,docx文件的導(dǎo)出方案網(wǎng)上是由相關(guān)資料的,但是沒有親測(cè)成功
其實(shí)這種方案在java代碼中的處理相對(duì)簡(jiǎn)單,只要傳遞對(duì)象就可以了,其難度在于模板的設(shè)計(jì),根據(jù)不同模板的需求,總結(jié)來說需要利用freemarker的相關(guān)語法解決模板的下面幾個(gè)問題:
1、word中添加列表
2、word中添加圖片
3、word中循環(huán)的使用(通俗講就是相似內(nèi)容的重復(fù))
4、word中map的使用(通俗講就是不同情況下不同內(nèi)容的顯示)
說明:前兩條屬于常見使用方法,后兩條解釋一下:
- 問題3場(chǎng)景舉例:
需要導(dǎo)出10個(gè)工廠的數(shù)據(jù)信息,每個(gè)廠都套用固定表格。
這種情況其實(shí)的模板就是需要把這個(gè)固定表格去循環(huán),所以只需做一個(gè)廠的模板,剩下的通過循環(huán)實(shí)現(xiàn) 。 - 問題4場(chǎng)景舉例:
還是上面的問題,如果每個(gè)廠通用的表格不是固定的,或者不僅僅是表格,那么在傳遞參數(shù)時(shí),就不是數(shù)組可以搞定的了,需要直接傳遞對(duì)象,那么就要在模板中處理map。
1 模板制作
1.1 模板文件生成
由于freemarker需要處理的為.ftl文件,但其內(nèi)容就是增加了一些代碼語句的xml,所以制作ftl的流程就是:
[1]. 將word的doc文件另存為xml格式
[2]. 在xml中進(jìn)行變量替換詳細(xì)見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項(xiàng)目下的使用方式
待更新