由于freemarker导出word时,> < &符号被当做是ftl的标签,打开自然报错,因此在执行这些具有特殊符号的数据的时候,我们需要进行转义。

value=value.replaceAll("&","&amp;")
.replaceAll("<","&lt;")
.replaceAll(">","&gt;");

如果需要执行换行操作我们还需要对"\n";进行转义<w:br/>;有时候可以在项目中使用小技巧,直接给业务数据添加上标签

list.add("我是刘备<w:br/>");
list.add("我是张飞<w:br/>");
list.add("我是关羽<w:br/>");
resultMap.put("dataList",list);

如果确实有\n;可以也使用字符串替换的方式替换;
 

value01.replaceAll("&","&amp;")
.replaceAll("<","&lt;")
.replaceAll(">","&gt;")
.replaceAll("\n","<w:br/>");

这种替换方式必现提前把< 和> 替换掉了,顺序上在后面替换,可以解决遍历换行的问题。

更多推荐