Java Web項目中使用Freemarker生成Word文檔遇到的問題


這段時間項目中使用了freemarker生成word文檔。在項目中遇到了幾個問題,在這里記錄一下。首先就是關於遍歷遇到的坑。整行整行的遍歷是很簡單的,只需要在整行的<w:tr></w:tr>的標簽錢加上遍歷的<#list  list as list> </#list>就行了。我在這里要說的是前面還有合並單元格的時候的情況。如下圖,水泥路面和瀝青路面這幾行屬於申請占用面積的子行。在這里遍歷的時候就需要注意。按照html的格式的話,肯定會將這整個剛做一個tr。然后再里面做colspan=‘n’來區分的。

      在生成的flt的文件中可以看到,word生成出來的xml是將申請占用面積和水泥路面這個當作一個tr,算作一整行的,而其他三個每個是一個tr。當作一行。只是在前面了加上了<w:vmerge/>這個標簽,表示跟前面的申請占用面積是合並的。最開始的時候,我將水泥路面和下面的人行道這幾個看作是遍歷體,直接將這四塊遍歷,生成出來的word總是會出來樣式錯亂的情況,在仔細分析生成的ftl文檔后,才發現第一行和其他幾行是又區別的。然后在后台代碼里把第一個list單獨取出來,其他的幾個當作list遍歷,就解決了問題。

      另一個是關於圖片的問題。最開始的時候,我是將圖片的數據放到對象中當作一個屬性的,然后通過${xxx.picData},將圖片的base64放到圖片標簽中,這樣無論如何就是不能將圖片加載出來,還會導致文件加載不出來。但是直接將base64直接在標簽里寫死又是可以加載的。在試過好幾種方法后,將圖片的picData當作一個單值放到結果中就成功了,即${picData}.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM