借助freemarker实现word模板复制功能

本文介绍了如何借助Freemarker实现word模板的重复使用,以生成包含所有用户报名信息的word文档。业务场景是导出每个用户的报名单,每页单独展示。通过将word模板转换为XML,然后利用Freemarker的EL表达式和循环功能,动态替换用户信息。在XML中添加循环遍历记录的代码,并在Java控制器中完成核心处理。需要注意的是,生成的文档在移动端可能显示XML内容,需要在电脑上另存为doc或docx格式。

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

业务场景

导出所有报名用户的报名表,每个用户报名单在word文档中单独一页,方便打印。

报名单模板如下:
报名模板

需求:一份word文档,包含所有用户的报名单,每个用户单独一页。

实现思路

  1. 将报名单内容设置成模板,其中需求提到每个用户要单独一页,所以在模板的后面加上换页效果
  2. 一份word文档里面要包含多个用户报名信息,所以模板要重复使用,只是替换用户信息
  3. 将word模板转成xml文件,获取内容信息的模板格式
  4. 将xml转成ftl格式,支持el表达式,支持循环,很好的实现需求

具体实现

  1. 用工具(word/wps)创建好模板的word文档
  2. 将word文档另存为XML文件,命名为apply.xml,打开xml文件,如果是压缩后的XML内容,直接在网上将其格式化,方便阅读和修改
  3. 将XML中需要替换的内容使用EL表达式代替,如:${name}。PS:可以在创建模板时直接使用EL表达式,但是注意在转换成XML的时候可能会存在某些意外,如果不熟悉使用。
  4. 业务需要多个报名单,每份报名单格式都是一样的,所以在XML内容的一开始就加上循环遍历的代码:<#list recordList as record>…..

部分XML内容

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?mso-application progid="Word.Document"?>
<w:wordDocument xmlns:aml="http://schemas.microsoft.com/aml/2001/core"
    xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"
    xmlns:o="urn:schemas-microsoft-com:office:office"
    xmlns:v="urn:schemas-microsoft-com:vml"
    xmlns:w10="urn:schemas-microsoft-com:office:word"
    xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml"
    xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint"
    xmlns:wsp="http://schemas.microsoft.com/office/word/2003/wordml/sp2"
    xmlns:sl="http://schemas.microsoft.com/schemaLibrary/2003/core"
    w:macrosPresent="no" w:embeddedObjPresent="no" w:ocxPresent="no"
    xml:space="preserve">

    <w:body>
      <#list recordList as record>

        ...... 此处省略部分内容

        <w:t>姓名</w:t>

        ...... 此处省略部分内容

        
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瑾析编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值