1. 程式人生 > >FreeMarker一些常見錯誤的總結

FreeMarker一些常見錯誤的總結

最近在做一個人物管理系統,需要做一個匯出word的功能。經過一番查詢,最終決定使用FreeMarker來做這個東西,做了兩天,終於成型了。部分效果如下(表內資料純屬虛構).

具體步驟就不一一贅述了,一搜一大堆。

在具體使用的過程中,出現過一下問題。

1.FreeMarker 多行資料的換行問題,在FreeMarker 中會把“\n”處理廠空格,所以需要換行的時候需要把“\n”替換掉。

string = string.replaceAll("\n", "<w:br />");
2.FreeMarker 在剛開始使用時,經常莫名其妙地報標籤匹配錯。如下
Was expecting one of:
    <STRING_LITERAL> ...
    <RAW_STRING> ...
    "false" ...
    "true" ...
    <INTEGER> ...
    <DECIMAL> ...
    "." ...
    "+" ...
    "-" ...
    "!" ...
    "[" ...
    "(" ...
    "{" ...
    <ID> ...
這種錯誤一般都是因為自定義標籤的問題,而且當標籤多的時候,查詢起來就很困難了。所以在寫的的時候,一定要仔細,不要漏掉一些括號之類的符號。

但有的時候,已經確保標籤已經沒有任何問題,但還是報上面的錯誤。鬱悶了很長時間,最後找到了問題所在,在編輯word的時候使用了WPS,解決方案:就是隻用Office Word編輯,不要使用WPS.

3.圖片插入問題,在word插入一張頭像後,只顯示其中的一行,這也很令人鬱悶,雖然只是一個word的問題,也有研究了半個小時。最後是因為行高問題,調節行高,即可顯示整張圖片。

4.在插入圖片的時候,一定要注意>${image}<這尖括號中間不能加任何其他的諸如空格,

tab,換行等符號!在這上面這兩天可吃了不少苦。

    5.對於flt中所有定義的標籤,必須在map中放入其鍵值對。不然又會報錯。

    最後做完後發現,匯出的doc,使用word可以正常開啟,但是在wps中的換行的顯示效果卻差強人意,目前還沒有比較好的解決辦法。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

補充:2014 02 12

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

解決一FreeMarker中圖片無法顯示的錯誤:

起因:如果你需要在word中新增圖片,那你就在第一步製作模板時,加入一張圖片佔位,然後開啟xml文件,可以看到如下的一片base64編碼後的程式碼: 
<w:binData w:name="wordml://03000001.png" xml:space="preserve">iVBORw0…(base64碼)…CC</w:binData> 
只要將base64的程式碼替換成例如:${image},測試OK,沒有問題。但是,在編輯其他標籤後,負責圖片的<w:binData/>標籤不負責任的消失了,樓主是在word2003下進行編輯的。

解決方案:使用FreeMarker生產word時,當其他標籤部分都做好時,再做圖片部分。