首页 > 编程语言 >word模板填充 java

word模板填充 java

时间:2024-11-12 21:31:25浏览次数:1  
标签:Word String 填充 java 文档 import word 模板

From: https://blog.51cto.com/u_16213356/12447686

在现代开发中,Word 文档的自动生成和模板填充是一项非常常见的需求。尤其是在生成报表、合同、信函等场景时,通过代码自动化填充模板可以极大提高工作效率。本文将详细介绍如何使用 Java 实现 Word 模板填充。我们将通过以下步骤来完成这个任务。

流程步骤
在实现 Word 模板填充之前,我们可以将整个流程梳理成如下表格:

步骤 描述
1 准备 Word 模板
2 引入必要的 Maven 依赖
3 创建 Word 文档操作的 Java 类
4 读取模板文件
5 填充模板数据
6 保存生成的文档
7 测试与调试
现在我们将详细讲解每一步的具体操作和相应代码。

步骤详细说明
1. 准备 Word 模板
首先,我们需要提前准备一个 Word 文档模板(如 template.docx),在文档中使用占位符来表示需要填充的数据,例如 ${name}、${date} 等。

2. 引入必要的 Maven 依赖
在项目的 pom.xml 文件中添加 Apache POI 依赖,这是我们操作 Word 文档的主要库。相关代码如下:

<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.0.0</version> <!-- 确保使用最新版本 -->
</dependency>
1.
2.
3.
4.
5.
3. 创建 Word 文档操作的 Java 类
接下来,我们需要创建一个 Java 类,用于操作 Word 文档。这里我们命名为 WordTemplateFiller.java:

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Map;

public class WordTemplateFiller {
private String templatePath; // 模板路径
private String outputPath; // 输出路径

public WordTemplateFiller(String templatePath, String outputPath) {
this.templatePath = templatePath;
this.outputPath = outputPath;
}
}
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
4. 读取模板文件
接下来,我们需要实现读取模板文件的功能。添加 loadTemplate 方法:

private XWPFDocument loadTemplate() throws IOException {
try (FileInputStream fis = new FileInputStream(templatePath)) {
return new XWPFDocument(fis); // 返回读取的文档
}
}
1.
2.
3.
4.
5.
5. 填充模板数据
我们接下来需要实现模板数据填充的逻辑。添加 fillTemplate 方法,该方法接收一个 Map<String, String> 类型的参数。

public void fillTemplate(Map<String, String> data) throws IOException {
XWPFDocument document = loadTemplate();

for (XWPFParagraph paragraph : document.getParagraphs()) {
for (String key : data.keySet()) {
String value = data.get(key);
// 使用正则表达式替换占位符
String text = paragraph.getText();
if (text.contains("${" + key + "}")) {
// 替换占位符
text = text.replace("${" + key + "}", value);
// 清除段落内容
paragraph.getRuns().clear();
// 添加新的文本
XWPFRun run = paragraph.createRun();
run.setText(text);
}
}
}
}
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
6. 保存生成的文档
最后,我们需要实现一个方法将填充后的文档保存到指定路径。添加 saveDocument 方法:

private void saveDocument(XWPFDocument document) throws IOException {
try (FileOutputStream fos = new FileOutputStream(outputPath)) {
document.write(fos); // 保存文档
}
}
1.
2.
3.
4.
5.
7. 测试与调试
我们可以添加一个 main 方法来测试填充功能:

public static void main(String[] args) {
try {
WordTemplateFiller filler = new WordTemplateFiller("template.docx", "output.docx");
Map<String, String> data = Map.of("name", "John Doe", "date", "2023-10-15");
filler.fillTemplate(data);
System.out.println("文档生成成功!");
} catch (IOException e) {
e.printStackTrace();
}
}
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
序列图与关系图
在此部分,我们使用 Mermaid 语法描绘序列图和ER图来展示系统的交互流程与数据关系。

序列图
XWPFDocument
WordTemplateFiller
User
XWPFDocument
WordTemplateFiller
User
填充模板请求
加载模板
返回文档
填充数据
返回填充结果
关系图
WordTemplateFiller
string
templatePath
string
outputPath
XWPFDocument
string
documentContent
User
string
name
date
date
fills
operates
结论
通过本文的讲解,我们介绍了如何使用 Java 和 Apache POI 实现 Word 模板的填充。我们从准备模板开始,逐步讲解了代码实现的每一个细节。这些知识不仅对新手有帮助,还有助于有经验的开发者进行快速开发和部署。希望大家都能在实践中熟练掌握这一技能,并能够在实际的工作中为自己的项目加分!

 

标签:Word,String,填充,java,文档,import,word,模板
From: https://www.cnblogs.com/joeblackzqq/p/18542693

相关文章

  • 基于java+ssm的高校奖助学金系统
    前言基于Java+SSM的高校奖助学金系统能高效、公平地管理奖助学金相关事务。系统存储了丰富的学生信息,包括基本资料、学业成绩、综合素质评价、家庭经济情况等。这些数据为奖助学金评定提供依据。在奖助学金项目管理方面,详细记录每个奖项和助学金的名称、设立条件、金......
  • 基于java+ssm的辅助计算机教学的多媒体素材库系统
    前言基于Java+SSM(Spring+SpringMVC+MyBatis)的辅助计算机教学的多媒体素材库系统为计算机教学带来极大便利。系统可实现多媒体素材的分类存储,涵盖文本、图片、音频、视频、动画等多种类型。教师能根据课程主题、知识点将素材进行精准分类,比如编程课程的代码示例文......
  • 基于java+springcloud的微服务小型气象站后端管理系统
    前言基于Java+SpringCloud的微服务小型气象站后端管理系统为气象数据的采集、分析与应用提供了有力支持。系统可连接多个小型气象站设备,接收包括温度、湿度、气压、风速、风向、降水量等气象数据。这些数据在传入系统后会经过严格的校验和清洗,确保数据的准确性和完......
  • 基于java+springcloud的微服务的手机商城管理系统
    前言基于Java+SpringCloud的微服务手机商城管理系统具有高度的灵活性和可扩展性。系统在商品管理方面表现卓越,详细记录每一款手机的信息,包括品牌、型号、配置、颜色、价格、库存等。商家可以轻松添加新手机款式、修改商品信息或调整价格,还能实时监控库存水平,当库存......
  • 使用Java填充Word模板的方法详解
    From: https://www.jb51.net/program/324679hhw.htmJava填充Word模板是一种将动态数据插入到Word文档模板中生成最终文档的过程,通常用于批量创建包含个人信息、报告结果或其他动态内容的文档,本文给大家介绍了使用Java填充Word模板的方法,需要的朋友可以参考下 +目录概......
  • 基于java+springboot的Vehicle management系统网站
    课题说明基于Java+SpringBoot的Vehiclemanagement系统网站是一款专门用于车辆管理的综合性网络平台。该网站可实现车辆基本信息管理,详细记录车辆型号、车架号、发动机号、购置日期、颜色等内容,方便随时查询和更新。车辆状态跟踪功能可标记车辆是处于闲置、使用中、......
  • 基于java+springboot的社区帮帮团系统网站
    前言基于java+springboot的社区帮帮团系统网站是一个促进社区互助的综合性平台。它为社区居民提供便捷的注册与登录入口。居民可发布求助信息,详细描述问题,如家电维修、管道疏通、家教需求等,并可设置悬赏金额。同时,有能力提供帮助的居民能浏览这些求助,根据自身技能和......
  • 基于java+springboot的免费体育馆场地预约系统
    前言基于Java+SpringBoot的免费体育馆场地预约系统为民众健身提供了便利。系统存储体育馆各个场地的详细信息,包括场地类型(如篮球场、羽毛球场、乒乓球场等)、场地规格、可容纳人数、配套设施(如灯光、计分牌等)。用户可以方便地查看这些信息,根据自身需求选择合适的场地......
  • 基于java+springboot的美妆类免税商品选购系统
    前言基于Java+SpringBoot的美妆类免税商品选购系统为美妆爱好者购买免税商品提供了便捷途径。系统中存有丰富的美妆免税商品信息,涵盖各类品牌的口红、眼影、粉底、腮红等。每种商品都详细记录了品牌、型号、色号、功效、规格、免税价格等内容。同时,展示商品的高清图......
  • 基于java+springboot的美食推荐系统
    前言基于Java+SpringBoot的美食推荐系统能为用户带来个性化的美食体验。系统收集了海量的美食信息,包括各种菜系、餐厅菜品、街头小吃等。每道美食都有详细介绍,如口味特点、食材构成、烹饪方式、价格范围等。同时,还整合了餐厅的相关信息,如地址、环境、营业时间、服务......