Java通过freemarker生成Word文档导出

1. 制作ftl模板

在Word中制作模板,制作完后以XML格式导出

 新建WORD文件,将所需参数用特殊符号 ${} 配置,如下图:

  • 注意:freemarker中的占位符是${},例如:这里使用的是【${name}】的形式,那么传递的数据中就需要有一个叫做【name】的字段。

 导出时选择.xml格式导出

 用编译器(notepad++)打开看一下动态参数是否正确,并修改后缀名为ftl

导出XML文件之后,打开这个文件,此时你会看到里面都是XML标签,首先格式化一下,这样看起来会舒服些,可以检查一下你的占位符内容是否满足freemarker语法。因为有些时候,我们导出的XML文件中,可能会将【${xxx}】分隔成两行,从而导致占位符失效,所以有时候需要手动修改一下占位符。导出的Word XML文件内容大致如下所示:

2.  pom文件引入freemarke依赖,安装依赖

        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.30</version>
        </dependency>

3. java代码实现 

3.1 将ftl模板移入项目中

3.2  创建Freemarker工具类

引入freemarker依赖之后,就可以使用Freemarker编写一个工具类,专门用于处理文件的导出和数据渲染。

import freemarker.template.Configuration;
import freemarker.template.Template;

import javax.servlet.http.HttpServletResponse;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.nio.charset.StandardCharsets;
import java.util.Map;

/**
 * @version 1.0.0
 * @Date: 2025/2/14 15:05
 * @Author SYG
 * @Description: Freemarker 工具类
 */
public class FreemarkerUtil {

    /**
     * 使用 Freemarker 生成 Word 文件并导出
     * @param templateName 模板文件路径名称
     * @param fileName 生成的文件路径以及名称
     * @param dataModel 填充的数据对象
     * @param response HttpServletResponse 对象
     */
    public static void exportWord(String templateName, String fileName, Map<String, Object> dataModel, Object obj, HttpServletResponse response) {
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值