根据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;
}