最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實現(xiàn)讀取Word模板文檔并替換內容生成新文檔

 更新時間:2025年02月09日 12:50:08   作者:五行星辰  
在實際開發(fā)中,經(jīng)常會遇到需要根據(jù) Word 模板生成特定文檔的需求,下面小編就來為大家介紹一下如何使用 Apache POI 庫來讀取 Word 模板文檔,然后替換其中的指定內容最后生成新的文檔吧

在實際開發(fā)中,經(jīng)常會遇到需要根據(jù) 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. 創(chuàng)建 Word 模板

首先,創(chuàng)建一個 Word 模板文件 template.docx,在模板中使用特定的占位符來表示需要替換的內容,例如 {name}、{date} 等。假設模板內容如下:

這是一份測試文檔。
姓名:{name}
日期:{date}

3. Java 代碼實現(xiàn)

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);
 
            // 準備要替換的數(shù)據(jù)
            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) {
                    // 遍歷數(shù)據(jù)映射,替換占位符
                    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 類將其加載到內存中。

準備要替換的數(shù)據(jù)

Map<String, String> data = new HashMap<>();
data.put("{name}", "張三");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
data.put("{date}", sdf.format(new Date()));

創(chuàng)建一個 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實現(xiàn)讀取Word模板文檔并替換內容生成新文檔的文章就介紹到這了,更多相關Java讀取Word模板并替換內容內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java圖片處理的簡易指南

    Java圖片處理的簡易指南

    圖像處理是各類應用程序的重要組成部分,Java作為一種多功能且強大的編程語言,提供了豐富的庫和框架來高效地處理圖像處理任務,本文將帶您了解Java圖像處理的基本概念、工具以及實踐示例,幫助您掌握Java圖像處理技術,需要的朋友可以參考下
    2024-09-09
  • JPA延遲加載no Session報錯解決分析

    JPA延遲加載no Session報錯解決分析

    這篇文章主要為大家介紹了JPA延遲加載no Session報錯解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • Java 中的控制反轉(IOC)詳解

    Java 中的控制反轉(IOC)詳解

    這篇文章主要介紹了理解Java 中的IOC控制反轉,具有一定參考價值,需要的朋友可以了解下,希望能夠給你帶來幫助
    2021-10-10
  • Java 數(shù)據(jù)結構之堆的概念與應用

    Java 數(shù)據(jù)結構之堆的概念與應用

    堆是一顆完全二叉樹,在這棵樹中,所有父節(jié)點都滿足大于等于其子節(jié)點的堆叫大根堆,所有父節(jié)點都滿足小于等于其子節(jié)點的堆叫小根堆,堆雖然是一顆樹,但是通常存放在一個數(shù)組中,父節(jié)點和孩子節(jié)點的父子關系通過數(shù)組下標來確定
    2021-10-10
  • Java日常練習題,每天進步一點點(55)

    Java日常練習題,每天進步一點點(55)

    下面小編就為大家?guī)硪黄狫ava基礎的幾道練習題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-08-08
  • Maven?依賴沖突調解與版本控制問題記錄

    Maven?依賴沖突調解與版本控制問題記錄

    這篇文章主要介紹了Maven?依賴沖突調解與版本控制問題記錄,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2025-04-04
  • 使用springboot整合websocket實現(xiàn)群聊教程

    使用springboot整合websocket實現(xiàn)群聊教程

    websocket怎么說呢,就是服務器可以主動向客戶端發(fā)起對話,下面就是springboot整合websocket實現(xiàn)群聊的操作代碼,一起來看一下get新技能吧
    2021-08-08
  • springboot使用Scheduling實現(xiàn)動態(tài)增刪啟停定時任務教程

    springboot使用Scheduling實現(xiàn)動態(tài)增刪啟停定時任務教程

    這篇文章主要介紹了springboot使用Scheduling實現(xiàn)動態(tài)增刪啟停定時任務教程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • MyBatis-Plus插件機制及通用Service新功能

    MyBatis-Plus插件機制及通用Service新功能

    這篇文章主要介紹了MyBatis-Plus插件機制以及通用Service、新功能,本文通過實例圖文相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • Java使用EasyExcel實現(xiàn)Excel的導入導出

    Java使用EasyExcel實現(xiàn)Excel的導入導出

    這篇文章主要給大家介紹了關于Java使用EasyExcel實現(xiàn)Excel的導入導出,在各種系統(tǒng)中,導入導出的數(shù)據(jù)一般都是通過Excel來完成的,需要的朋友可以參考下
    2023-07-07

最新評論

新沂市| 丰镇市| 德令哈市| 宜丰县| 龙里县| 眉山市| 兰州市| 锡林郭勒盟| 库车县| 左权县| 都兰县| 吉首市| 泉州市| 佛学| 喀喇沁旗| 弥渡县| 大同县| 岐山县| 上犹县| 策勒县| 高密市| 玛纳斯县| 新河县| 广河县| 华坪县| 马关县| 神池县| 谷城县| 嘉黎县| 乌拉特中旗| 阿尔山市| 罗山县| 旬邑县| 新宾| 南通市| 肇庆市| 盐津县| 香港| 垦利县| 浏阳市| 苍溪县|