Java实现读取Word模板文档并替换内容生成新文档,
分享于 点击 43105 次 点评:155
Java实现读取Word模板文档并替换内容生成新文档,
目录
- 1. 引入依赖
- 2. 创建 Word 模板
- 3. Java 代码实现
- 4. 代码解释
在实际开发中,经常会遇到需要根据 Word 模板生成特定文档的需求,比如合同、报告等。咱们可以使用 Apache POI 库来读取 Word 模板文档,然后替换其中的指定内容,最后生成新的文档。下面我就详细给大家讲讲具体怎么做。
1. 引入依赖
如果你使用的是 Maven 项目,在 pom.xml 中添加以下依赖:
<dependencies> <!-- Apache POI 处理 Word 文档 --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.2.3</version> </dependency> </dependencies>
2. 创建 Word 模板
首先,创建一个 Word 模板文件 template.docx,在模板中使用特定的占位符来表示需要替换的内容,例如 {name}、{date} 等。假设模板内容如下:
这是一份测试文档。
姓名:{name}
日期:{date}
3. Java 代码实现
import org.apache.poi.xwpf.usermodel.*; import java.io.*; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Map; public class WordTemplateProcessor { public static void main(String[] args) { try { // 读取 Word 模板文件 FileInputStream fis = new FileInputStream("template.docx"); XWPFDocument document = new XWPFDocument(fis); // 准备要替换的数据 Map<String, String> data = new HashMap<>(); data.put("{name}", "张三"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); data.put("{date}", sdf.format(new Date())); // 替换文档中的占位符 replacePlaceholders(document, data); // 保存为新的 Word 文档 FileOutputStream fos = new FileOutputStream("output.docx"); document.write(fos); fos.close(); fis.close(); System.out.println("新的 Word 文档生成成功!"); } catch (IOException e) { e.printStackTrace(); System.out.println("生成新的 Word 文档失败:" + e.getMessage()); } } private static void replacePlaceholders(XWPFDocument document, Map<String, String> data) { // 遍历文档中的每个段落 for (XWPFParagraph paragraph : document.getParagraphs()) { // 遍历段落中的每个文本运行对象 for (XWPFRun run : paragraph.getRuns()) { String text = run.getText(0); if (text != null) { // 遍历数据映射,替换占位符 for (Map.Entry<String, String> entry : data.entrySet()) { String placeholder = entry.getKey(); String replacement = entry.getValue(); if (text.contains(placeholder)) { text = text.replace(placeholder, replacement); run.setText(text, 0); } } } } } } }
4. 代码解释
读取 Word 模板文件
FileInputStream fis = new FileInputStream("template.docx"); XWPFDocument document = new XWPFDocument(fis);
通过 FileInputStream 读取 template.docx 文件,然后使用 XWPFDocument 类将其加载到内存中。
准备要替换的数据
Map<String, String> data = new HashMap<>(); data.put("{name}", "张三"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); data.put("{date}", sdf.format(new Date()));
创建一个 Map 对象,将占位符和要替换的内容进行映射。
替换文档中的占位符
private static void replacePlaceholders(XWPFDocument document, Map<String, String> data) { for (XWPFParagraph paragraph : document.getParagraphs()) { for (XWPFRun run : paragraph.getRuns()) { String text = run.getText(0); if (text != null) { for (Map.Entry<String, String> entry : data.entrySet()) { String placeholder = entry.getKey(); String replacement = entry.getValue(); if (text.contains(placeholder)) { text = text.replace(placeholder, replacement); run.setText(text, 0); } } } } } }
遍历文档中的每个段落和文本运行对象,检查文本中是否包含占位符,如果包含则进行替换。
保存为新的 Word 文档
FileOutputStream fos = new FileOutputStream("output.docx"); document.write(fos); fos.close(); fis.close();
使用 FileOutputStream 将替换后的文档保存为 output.docx 文件。
按照上面的步骤,你就可以使用 Java 读取 Word 模板文档并替换指定内容,生成新的文档啦。赶紧动手试试吧!
到此这篇关于Java实现读取Word模板文档并替换内容生成新文档的文章就介绍到这了,更多相关Java读取Word模板并替换内容内容请搜索3672js教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持3672js教程!
您可能感兴趣的文章:- 基于Java实现模板填充Word
- java如何根据模板导出数据到word文档中(表格、自定义标签等)
- 使用Java填充Word模板的方法详解
- java按照模板导出pdf或word文件详细代码
- java如何根据提供word模板导出word文档详解
用户点评