Java导出word模板

Java导出word模板


最近项目中有生成word报文需求, 需求中使用到word模板导出功能, 记录下, 以便复用; 之前有相似需求, 当时做法稍显复杂,区分了doc和docx两种后缀形式的word,本文基于docx模板导出。

1. 编写word模板
首先创建一个docx后缀的word文档, 编写好需要的内容,调好格式; 文档中需要变动替换的内容根据替换的语法进行替换, 以下列出常用的几种替换形式,比较简单:

  • 普通文本 -> 双大括号 {{}} 替换; 例如{{object.name}} object为后端java传过来的对象,
    object.name即为获取传过来对象的name属性;

  • 循环 -> 以问号开头, 斜杠结尾; 例如{{?object.personList}}
    年龄:{{age}}{{/object.personList}} 循环personList, 遍历展示person的age属性;

  • 图片 -> 图片替换使用@符号 {{@testRender}}; 注意: 图片替换后端需组装PictureRenderData对象传入;

2. Java导出数据
这里用到的是poi方式,直接上代码:

ConfigureBuilder builder = Configure.newBuilder();
builder.setElMode(Configure.ELMode.SPEL_MODE);
// 需要生成的word
File wordFile = new File("D:/test.docx");
wordFile.getParentFile().mkdirs();
try (
	// 根据写好的docx模板创建模板对象
    XWPFTemplate template = XWPFTemplate.compile("D:/test_template.docx", builder.build());
    FileOutputStream out = new FileOutputStream(wordFile)
) {
	// objectDto为数据对象
    template.render(objectDto);
    template.write(out);
    out.flush();
}

导出完成,这种方式相对简单; 之前需求有转换pdf功能, 尝试了几种方式, 发现对格式的保留程度最好的一种是借助libreoffice(Windows和Linux平台表现都还不错), 这里不细讲。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值