word匯出時freeMarker轉義字元的處理
阿新 • • 發佈:2019-02-01
根據ftl模板匯出word時,如果填充的字元含有特殊字元< 、>、&,那麼匯出的word是無法開啟的。因為這些字元在匯出word時被認為是ftl的標籤,正常匯出後再開啟是會報錯。如果以xml的方式開啟,會發現所有內容都是完整的,唯獨上面三個特殊字元出問題。
為了解決這個問題,首先我新建一個word,在裡面填上上面三個特殊字元,然後儲存為xml。在該xml中找到對應的字元,發現已經轉義了 < 對應< >對應> &對應&
可以看出,如果填充的是轉義後的字元是可以正常開啟的。所以要在填充字元之前檢測私服是否含有上述特殊字元,如果有就需要轉義。程式碼如下:
/** * 處理轉義字元 * @param str * @return */ private String transform(String str){ if(str.contains("<")||str.contains(">")||str.contains("&")){ str=str.replaceAll("&", "&"); str=str.replaceAll("<", "<"); str=str.replaceAll(">", ">"); } return str; }