依赖的jar包
<dependency>
<groupId>fr.opensagres.xdocreport</groupId>
<artifactId>xdocreport</artifactId>
<version>2.0.2</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.7</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.30</version>
</dependency>
<dependency>
<groupId>oro</groupId>
<artifactId>oro</artifactId>
<version>2.0.8</version>
</dependency>
编辑word模板
1、将光标放到需要添加方法的相应位置,插入文档部件中的域
添加动态图片
在word模板中任意插入一张图片,鼠标选中图片后点击插入书签
为书签添加变量名
开始编写代码
try{
Resource resource = new ClassPathResource("com/test/base/template/template.docx");
InputStream inputStream = resource.getInputStream();
IXDocReport report = XDocReportRegistry.getRegistry().loadReport(inputStream, TemplateEngineKind.Freemarker);
IContext context = report.createContext();
//替换word模板中创建的域的变量
context.put("name", "测试姓名");
context.put("sex", "男");
context.put("age", "28");
//替换word模板中的动态图片
IImageProvider zhaopian = new FileImageProvider(new File("E:\\图片\\IMG_20171005_102717.jpg"),true);
FieldsMetadata metadata = report.createFieldsMetadata();
metadata.addFieldAsImage("picture");
report.setFieldsMetadata(metadata);
context.put("picture", zhaopian);
//导出word
ByteArrayOutputStream bout = new ByteArrayOutputStream();
report.process(context, bout);
//创建文件输出流
FileOutputStream out = new FileOutputStream("d:\\daochudeword.docx");
out.write(bout.toByteArray());
out.close();
bout.close();
} catch (Exception e) {
e.printStackTrace();
}
导出后的效果