【技术】SpringBoot Word 模板替换

10 篇文章 0 订阅
6 篇文章 0 订阅

什么是 Word 模板替换

模板一般是具有固定格式的内容,其中一部分需要替换。Word 模板通俗的讲是以 Word 的形式制作模板,固定格式和内容,然后将其中的一部分数据替换掉。例如:在颁发证书时,证书大体内容一致,只需要更换姓名以及奖项名称。

如何实现 Word 模板替换

Word 模板替换的方式有多种,对比之后最后选择 HuTool 的工具类。HuTool 还有很多其他的工具类,可以访问官网查看。

准备模板
需要注意:模板内容要求使用双花括号{{}}定义替换内容。双花括号中的标记内容可以随意,这里我使用了数字作为标记。
在这里插入图片描述

导入依赖

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.16</version>
</dependency>

Java 核心代码

public static void main(String[] args) throws IOException {
    // 模板文件路径
    String registerTemplatePath = "C:\\Users\\Riu\\Desktop\\奖状.docx";
    // 输出结果文件路径
    String putFileName = "C:\\Users\\Riu\\Desktop\\Tom-奖状.docx";

    // 替换内容集合
    Map<String, String> textMap = new LinkedHashMap<>();
    textMap.put("0", "Tom");
    textMap.put("1", "《活动名称》");
    textMap.put("2", "特等奖");
    textMap.put("3", "2023");
    textMap.put("4", "08");
    textMap.put("5", "08");

    // 调用工具类,registerTemplatePath 模板路径,textMap 文字内容
    XWPFTemplate render = XWPFTemplate.compile(registerTemplatePath).render(textMap);

    // 输出文件到磁盘
    render.writeToFile(putFileName);
}

转换结果
在这里插入图片描述

在这里插入图片描述
根据个人测试,带表格和带图片的均可以正常转换,且格式正常。如有问题可以指正。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Apache POI库来实现在Spring Boot中根据模板填充Word文档。下面是一个简单的示例: 1. 添加POI依赖 在pom.xml中添加以下依赖: ```xml <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.2</version> </dependency> ``` 2. 准备Word模板 准备一个Word模板,可以在其中使用占位符来表示需要填充的内容,如下所示: ``` Hello ${name}! This is a ${message}. ``` 3. 创建Spring Boot控制器 创建一个Spring Boot控制器,在其中使用POI来读取模板并填充数据,如下所示: ```java @RestController public class WordController { @GetMapping("/generate-word") public void generateWord(HttpServletResponse response) throws Exception { // 读取Word模板 InputStream inputStream = getClass().getResourceAsStream("/templates/template.docx"); XWPFDocument document = new XWPFDocument(OPCPackage.open(inputStream)); // 填充占位符 Map<String, String> data = new HashMap<>(); data.put("name", "John"); data.put("message", "test message"); for (XWPFParagraph p : document.getParagraphs()) { List<XWPFRun> runs = p.getRuns(); if (runs != null) { for (XWPFRun r : runs) { String text = r.getText(0); if (text != null) { for (Map.Entry<String, String> entry : data.entrySet()) { if (text.contains(entry.getKey())) { text = text.replace(entry.getKey(), entry.getValue()); r.setText(text, 0); } } } } } } // 输出Word文档 response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document"); response.setHeader("Content-Disposition", "attachment; filename=output.docx"); document.write(response.getOutputStream()); response.getOutputStream().close(); } } ``` 在以上示例中,我们首先从类路径中读取Word模板文件,然后使用一个Map来存储需要填充的数据。接着,我们遍历文档中的所有段落和文本,查找占位符并将其替换为实际数据。最后,我们将修改后的文档输出到HTTP响应中,以便用户可以下载。 4. 运行应用程序 运行Spring Boot应用程序并访问/generate-word端点,会自动下载填充后的Word文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值