word导出时freeMarker转义字符的处理

根据ftl模板导出word时,如果填充的字符含有特殊字符< 、>、&,那么导出的word是无法打开的。因为这些字符在导出word时被认为是ftl的标签,正常导出后再打开是会报错。如果以xml的方式打开,会发现所有内容都是完整的,唯独上面三个特殊字符出问题。

为了解决这个问题,首先我新建一个word,在里面填上上面三个特殊字符,然后保存为xml。在该xml中找到对应的字符,发现已经转义了  &lt; 对应<      &gt;对应>    &amp;对应&

        可以看出,如果填充的是转义后的字符是可以正常打开的。所以要在填充字符之前检测私服是否含有上述特殊字符,如果有就需要转义。代码如下:


	/**
		 * 处理转义字符
		 * @param str
		 * @return
		 */
		private String transform(String str){
				
			if(str.contains("<")||str.contains(">")||str.contains("&")){
				  str=str.replaceAll("&", "&amp;");
				  str=str.replaceAll("<", "&lt;");
				  str=str.replaceAll(">", "&gt;");
			}
		
			return str;
		}


展开阅读全文

没有更多推荐了,返回首页