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


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
处理word空格的转义字符,可以使用正则表达式来过滤掉不需要转义的空格。根据引用中提供的代码,可以看到在处理文本内容,使用了replaceAll方法来进行替换。在这个方法中,可以使用正则表达式来匹配需要替换的空格字符。根据引用中的代码,可以看到有两种空格需要转义:“ ”和Tab键产生的空格。这些空格可以通过相应的ASCII编码进行替换。在替换,可以使用replaceAll方法,并提供对应的正则表达式和替换的字符串。例如,对于普通空格,可以使用正则表达式" ",并将其替换为"&#160;"。而对于Tab键产生的空格,可以使用正则表达式"\t",并将其替换为"&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;"。这样就可以将word中的空格转义为相应的字符了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [freemarkerword成文换行、空格、字符转义处理](https://blog.csdn.net/weixin_45767321/article/details/105504918)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [在java中基于空格分割一个字符串,用双引号和单引号转义那些空格以及前面带有\的空格](https://blog.csdn.net/weixin_39824191/article/details/118827489)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值