java 导出word模板

这篇博客介绍了如何在Java中使用FreeMarker模板引擎从Word XML文件生成模板,并通过Spring Boot和MyBatis Plus实现后台导出。前端部分使用Vue.js调用接口下载生成的Word文档。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、模板
模板样式:
这个是我自己用word手画的模板
第一步:在需要传入参数的地方写入参数
在这里插入图片描述
然后将word另存为xml文件。
第二步:用Notepad++打开(其他编辑器也可以,用着notepad因为方便编辑),然后将里面的参数修改成 “${参数}”这个样式,如下图
在这里插入图片描述
根据自己的所写入的参数,依次对比修改
第三步:保存,然后将XML文件的后缀,修改成ftl,这样模板就生成好了。
注意:不要在word中修改参数的形式,要在xml中修改,因为在word中修改,另存为xml的时候,参数会被分离或者丢失(我踩过的坑),一旦丢失或者分离,你就要重头再来一遍。

二、代码实现
第一步:后端代码实现
用的是freemarker导出的word,所以这个jar包可以之前去maven的仓库中去下载,也可以在pom.xml中写好依赖,然后直接更新
在这里插入图片描述
用的框架式spring boot + mybatis plus。
controller层的实现:
/**
* 下载word文档
*/
@GetMapping("/downLoadWord")
@ApiOperation(“下载word文档”)
@ApiImplicitParams({
@ApiImplicitParam(paramType = “query”, name = “marketId”, value = “商贸城id”, dataType = “String”),
@ApiImplicitParam(paramType = “query”, name = “shopCode”, value = “商铺编号”, dataType = “String”),
@ApiImplicitParam(paramType = “query”, name = “copyMeterDate”, value = “抄表时间”, dataType = “String”),
@ApiImplicitParam(paramType = “query”, name = “electricChargeState”, value = “mark”, dataType = “String”),
@ApiImplicitParam(paramType = “query”, name = “startDate”, value = “开始时间”, dataType = “String”),
@ApiImplicitParam(paramType = “query”, name = “endDate”, value = “结束时间”, dataType = “String”),
@ApiImplicitParam(paramType = “query”, name = “ids”, value = “ids”, dataType = “String”)
})
public R downLoadWord(
@RequestParam(name = “marketId”, required = false) String marketId,
@RequestParam(name = “shopCode”, required = false) String shopCode,
@RequestParam(name = “copyMeterDate”, required = false) String copyMeterDate,
@RequestParam(name = “electricChargeState”, required = false) String electricChargeState,
@RequestParam(name = “startDate”, required = false) String startDate,
@RequestParam(name = “endDate”, required = false) String endDate,
@RequestParam(name = “ids”, required = false) String ids,
HttpServletResponse resp
) throws Exception{
SimpleDateFormat sdt = new SimpleDateFormat(“yyyy-MM-dd”);
j = j+1;
int num = 0;
List list1 = new ArrayList();
if(ids == null || ids.equals("")) {
List list = new ArrayList();
if(startDate!=null&&!startDate.equals("")&&endDate!=null&&!endDate.equals("")) {
list = electricChargeService.list(
new QueryWrapper()
.eq(StringUtils.isNotBlank(marketId), “market_id”, marketId)
.eq(StringUtils.isNotBlank(co

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值