word上使用merge field
Merge mail是允许一个文档模板从一个数据源中提取关键字段,替换模板中的内容,生成多个文档。特别适用于通知、群发邮件、证书的生成。
一图了然1. 在代码里面,引用jar包和license.xml
<!-- word转pdf依赖,本地jar包依赖 -->
<groupId>com.aspose.word</groupId>
2. 用map对应起来就可以进行替换了
public MapgetMapForDoc(String userName, String userID, String applicationReason, String results){
Map map =new HashMap();
int number =userMapper.selectNumber()+1;
map.put("number", String.valueOf(number));
map.put("userName", userName);
map.put("userID",userID);
map.put("applicationReason",applicationReason);
map.put("results",results);
map.put("today",sdf.format(new Date()));
return map;
}
3. 再把map中数据读出来:
private void merge(Document doc, Map data) {
if (data ==null || data.isEmpty()) {
log.info("data为空!无法继续执行merge!");
return;
}
Set keys = data.keySet();
String[] fieldNames =new String[keys.size()];
Object[] values =new String[keys.size()];
int i =0;
for (String key : keys) {
fieldNames[i] = key;
values[i] = data.get(key);
++i;
}
try {
doc.getMailMerge().execute(fieldNames, values);
}catch (Exception e) {
e.printStackTrace();
}
}
4. 最后merge(doc, data);