代码使用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的就可以这么处理了)
浙公网安备 33010602011771号