一、模板
模板样式:
第一步:在需要传入参数的地方写入参数
然后将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