需求
在服务端提前准备好Word模板文件,并在用户请求接口时服务端动态获取图片。数据等信息插入到模板当中,然后返回包含数据信息的Word文件流。
一、准备模板文件
在需要插入图片的地方使用:{ {@参数名}},文本信息使用:{ {参数名}},进行占位,占位格式将会被保留,经过处理后格式不变
将准备好的模板文件放在resources目录下
二、引入Poi-tl、Apache POI依赖
poi-tl(poi template language)是Word模板引擎,基于Apache POI,提供更友好的API,使用起来更加简单
版本对应关系参考Poi-tl官网
<!-- 替换自己使用的版本 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.*</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.*</version>
</dependency>
<!-- Word模板引擎 -->
<dependency>
<groupId>com.deepoove</groupId>
<artifactId>poi-tl</artifactId>
<version>1.7.*</version>
</dependency>
三、创建实体类(用于保存向Word中写入的数据)
参数名必须同Word模板中的参数名称保持一致
import com.deepoove.poi.data.PictureRenderData;
@Data
public class DownloadDate {
//图片使用PictureRenderData类型
private PictureRenderData image;
private String name;
private String a;
private String b;
private String c;
private