继续潜水

导航

 

代码使用freemarker.template模版进行doc导出

场景,只是一条数据回导出失败,生成doc后提示.其他都是正常的

 

Map<String, Object> replaceMap = ....

// 生成doc
Template template = configuration.getTemplate(templateFileName);
....
// 空值处理
for (String key : replaceMap.keySet()) {
Object value = replaceMap.get(key);
if (value == null) {
replaceMap.put(key, "");
}
}
String fileName = UUID.randomUUID().toString(); 
FileWriter fw = new FileWriter(filePath + fileName + ".doc");
template.process(replaceMap, fw);
replaceMap 是需要替换的参数,格式key和value,最后比对了一个异常的数据发现是其中一个value中包含了“<”,“>”,
可想而之这不就是像在往xml标签中添加了代码么?
最后解决是   在错误的地方添加了<![CDATA[${name}]]>
后来想想应该也可以在 if (value == null) { 的else时, replaceMap.put(key, "<![CDATA["+value+"]]> ");(因为我这里是个Object对象,因为有一个集合对象,如果都是string的就可以这么处理了)







posted on 2025-07-01 09:48  继续潜水  阅读(13)  评论(0)    收藏  举报