這段時間項目中使用了freemarker生成word文檔。在項目中遇到了幾個問題,在這裏記錄一下。首先就是關於遍歷遇到的坑。整行整行的遍歷是很簡單的,只須要在整行的<w:tr></w:tr>的標籤錢加上遍歷的<#list list as list> </#list>就好了。我在這裏要說的是前面還有合併單元格的時候的狀況。以下圖,水泥路面和瀝青路面這幾行屬於申請佔用面積的子行。在這裏遍歷的時候就須要注意。按照html的格式的話,確定會將這整個剛作一個tr。而後再裏面作colspan=‘n’來區分的。html
在生成的flt的文件中能夠看到,word生成出來的xml是將申請佔用面積和水泥路面這個看成一個tr,算做一整行的,而其餘三個每一個是一個tr。看成一行。只是在前面了加上了<w:vmerge/>這個標籤,表示跟前面的申請佔用面積是合併的。最開始的時候,我將水泥路面和下面的人行道這幾個看做是遍歷體,直接將這四塊遍歷,生成出來的word老是會出來樣式錯亂的狀況,在仔細分析生成的ftl文檔後,才發現第一行和其餘幾行是又區別的。而後在後臺代碼裏把第一個list單獨取出來,其餘的幾個看成list遍歷,就解決了問題。spa
另外一個是關於圖片的問題。最開始的時候,我是將圖片的數據放到對象中看成一個屬性的,而後經過${xxx.picData},將圖片的base64放到圖片標籤中,這樣不管如何就是不能將圖片加載出來,還會致使文件加載不出來。可是直接將base64直接在標籤裏寫死又是能夠加載的。在試過好幾種方法後,將圖片的picData看成一個單值放到結果中就成功了,即${picData}.xml