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

使用Java將HTML內容轉換為Word文檔的實現步驟

 更新時間:2025年12月22日 09:08:48   作者:liuhm~  
這篇文章主要介紹了如何使用Java代碼將HTML內容轉換為Word文檔,這個功能在很多業(yè)務場景中都非常有用,比如自動生成報告、合同、證書等正式文檔,需要的朋友可以參考下

1. 技術背景

在日常開發(fā)中,我們經常需要將網頁內容或者HTML格式的數據導出為Word文檔供用戶下載。傳統的做法可能是使用模板引擎或者專門的報表工具,但對于簡單的場景,我們可以利用Apache POI庫來實現這一功能。

擴展,使用AI大模型生成word報告,可以先將生成的要求輸出成html,再將html轉成word,對于文檔的樣式比markdown好看很多。

2. 實現原理

核心思路是利用POIFSFileSystem類將HTML內容作為Word文檔的內容插入。雖然這不是真正的DOCX格式,但對于基本的文本內容展示已經足夠。

3. 核心代碼分析

pom 引入

    <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>5.2.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>5.2.3</version>
        </dependency>

讓我們來看一下關鍵的實現代碼:

try {
    InputStream is = new ByteArrayInputStream(htmlContent.getBytes("GBK"));
    OutputStream os = new FileOutputStream("html.doc");
    POIFSFileSystem fs = new POIFSFileSystem();
    fs.createDocument(is, "WordDocument");
    fs.writeFilesystem(os);
    os.close();
    is.close();
    System.out.println("Word document created successfully.");
} catch (Exception e) {
    e.printStackTrace();
}

這段代碼的關鍵步驟包括:

  1. 創(chuàng)建輸入流:將HTML字符串轉換為字節(jié)數組,并指定編碼格式(這里是GBK)
  2. 創(chuàng)建輸出流:指定輸出文件路徑
  3. 構建POI文件系統:使用POIFSFileSystem創(chuàng)建Word文檔結構
  4. 寫入文檔內容:將HTML內容作為"WordDocument"寫入文件系統
  5. 完成寫入:關閉流并輸出成功信息

4. HTML內容設計要點

為了讓生成的Word文檔有更好的顯示效果,需要注意以下幾點:

字體設置

body {
    font-family: '仿宋_GB2312', serif;
    font-size: 21.3px;
    line-height: 28px;
}

標題樣式

h1 {
    font-family: '方正小標宋簡體', serif;
    font-size: 29.3px;
    text-align: center;
}

段落縮進

p {
    text-indent: 2em;
}

5. 實際應用場景

這種技術特別適用于以下場景:

  • 自動生成各類報告和統計文檔
  • 將網頁內容保存為可編輯的Word格式
  • 批量生成格式統一的文檔文件
  • 在線文檔導出功能

6. 注意事項

  1. 編碼問題:注意字符編碼的一致性,避免亂碼
  2. 兼容性:這種方法生成的是較老的DOC格式,不是DOCX
  3. 樣式限制:復雜的CSS樣式可能無法完全保留
  4. 字體依賴:目標機器需要安裝相應的中文字體

7. 結合AI模型生成word

7.1. 測試提示詞

角色設定
你是一位資深警情數據分析專家,具備豐富的數據分析經驗,能夠從今日警情數據{{#xxx.xh_jt#}}和回看警情數據{{xxx.xh_hk#}}中準確提取關鍵信息,并按照公安系統標準格式生產《支隊涉逃逸涉酒警情處置核查情況》報告。

任務要求
文檔標題為《支隊涉逃逸涉酒警情處置核查情況》,標題與正文之間空一行。
“一、涉逃逸涉酒警情及查處情況”部分僅使用今日警情{{#xxx.xhjq_jt#}}中統計標記為“統計”的警情。
“二、昨日未落地警情回頭看情況”部分僅使用回看警情{{#xxx.jhjg_hk#}}中統計標記為“統計”且辦結標志不為“已辦結”的警情。


輸出格式必須嚴格遵循示例,并確保字段完整、數據準確。

輸出格式要求(嚴格按照以下格式輸出,不得更改)
支隊涉逃逸涉酒警情處置核查情況

經偵查大隊對xxx年xx月xx日6時至xxx年xx月xx日6時期間122警情系統中接警反映機動車“涉逃逸涉酒”事故警情進行核查,情況如下:

一、涉逃逸涉酒警情及查處情況
共發(fā)生機動車“涉逃逸涉酒”警情X宗,其中已辦結X宗,未辦結X宗。
(一)已辦結警情
1.xxx 大隊 XX中隊(警情編號:xxxx),警情時間:XXX年XXX月XX時XX分XX秒,警情地點:XXX,警情內容:xxxx。查處情況:逃逸人員XX已抓獲,吹氣數值:XXmg/100ml,從警情發(fā)生事件至抓獲逃逸人員用時XX小時。
2.xxx 大隊 XX中隊(警情編號:xxxx),警情時間:XXX年XXX月XX時XX分XX秒,警情地點:XXX,警情內容:xxxx。查處情況:逃逸人員XX已抓獲,吹氣數值:XXmg/100ml,從警情發(fā)生事件至抓獲逃逸人員用時XX小時。

(二)未辦結警情
1.xxx 大隊 XX中隊(警情編號:xxxx),警情時間:XXX年XXX月XX時XX分XX秒,警情地點:XXX,警情內容:xxxx。查處情況:逃逸人員XX未抓獲。
2.xxx 大隊 XX中隊(警情編號:xxxx),警情時間:XXX年XXX月XX時XX分XX秒,警情地點:XXX,警情內容:xxxx。查處情況:逃逸人員XX未抓獲。

落款在右下角顯示內容:
偵查大隊一中隊
XXX年XX月XX日(當前年月日時間)


約束條件(必須嚴格遵守)

文檔格式xxx
字體顏色統一為黑色。
一級級標題使用字體為“方正小標宋簡體”,字號二號(29.3px),居中對齊
二級標題字體為“楷體_GB2312”,字號三號(21.3px),居左對齊,首行縮進2個字符
正文段落使用字體“仿宋_GB2312”,字號三號(21.3px),居左對齊,首行縮進2個字符;“警情編號、警情時間、警情地點、警情內容、查處情況”這幾個字符需要進行加粗,“查處情況”另起一行。
文檔行距設置為固定值28磅
段落首行縮進2字符,文本前后、段前段后均設置為0字符
落款前需換兩行,顯示在右下角,居右對齊,離右邊有4個字符距離,字體為仿宋_GB2312,字號三號(21.3px)

輸出:內容用html(A4)格式輸出,確保標題、列表、加粗等標簽完整且不輸出額外的解釋。

7.2. AI大模型返回的html樣式

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>支隊涉逃逸涉酒警情處置核查情況</title>
    <style>
        @page {
            size: A4;
            margin: 2cm;
        }
        body {
            width: 21cm;
            min-height: 29.7cm;
            margin: 0 auto;
            padding: 2cm;
            font-family: "仿宋_GB2312", "FangSong", serif;
            font-size: 21.3px;
            line-height: 28pt;
            color: #000000;
        }
        .main-title {
            font-family: "方正小標宋簡體", "SimHei", sans-serif;
            font-size: 29.3px;
            text-align: center;
            line-height: 28pt;
            margin-bottom: 28pt;
        }
        .section-title {
            font-family: "楷體_GB2312", "KaiTi", serif;
            font-size: 21.3px;
            text-align: left;
            line-height: 28pt;
            margin: 14pt 0 7pt 0;
            text-indent: 2em;
        }
        .content {
            font-family: "仿宋_GB2312", "FangSong", serif;
            font-size: 21.3px;
            text-align: left;
            line-height: 28pt;
            margin: 0;
            text-indent: 2em;
        }
        .case-item {
            margin: 7pt 0;
            text-indent: 0;
        }
        .bold-text {
            font-weight: bold;
        }
        .signature {
            font-family: "仿宋_GB2312", "FangSong", serif;
            font-size: 21.3px;
            text-align: right;
            line-height: 28pt;
            margin-top: 56pt;
            padding-right: 4em;
        }
        .line-break {
            height: 28pt;
        }
    </style>
</head>
<body>
    <div class="main-title">支隊涉逃逸涉酒警情處置核查情況</div>
    
    <div class="line-break"></div>
    
    <div class="content">經偵查大隊對2025年11月18日6時至2025年11月19日6時期間122警情系統中接警反映機動車"涉逃逸涉酒"事故警情進行核查,情況如下:</div>
    
    <div class="line-break"></div>
    
    <div class="section-title">一、涉逃逸涉酒警情及查處情況</div>
    
    <div class="content">共發(fā)生機動車"涉逃逸涉酒"警情3宗,其中已辦結2宗,未辦結1宗。</div>
    
    <div class="section-title">(一)已辦結警情</div>
    
    <div class="case-item">
        <div class="content">1.交警支隊 一大隊三中隊(<span class="bold-text">警情編號:</span>JQ20251118001),<span class="bold-text">警情時間:</span>2025年11月18日08時30分25秒,<span class="bold-text">警情地點:</span>人民路與解放路交叉口,<span class="bold-text">警情內容:</span>黑色轎車追尾后逃逸,目擊者稱司機疑似酒駕。</div>
        <div class="content"><span class="bold-text">查處情況:</span>逃逸人員張三已抓獲,吹氣數值:85mg/100ml,從警情發(fā)生事件至抓獲逃逸人員用時2小時。</div>
    </div>
    
    <div class="case-item">
        <div class="content">2.交警支隊 二大隊一中隊(<span class="bold-text">警情編號:</span>JQ20251118002),<span class="bold-text">警情時間:</span>2025年11月18日14時20分10秒,<span class="bold-text">警情地點:</span>中山北路128號門前,<span class="bold-text">警情內容:</span>白色SUV撞傷行人后逃逸,現場有濃烈酒味。</div>
        <div class="content"><span class="bold-text">查處情況:</span>逃逸人員李四已抓獲,吹氣數值:92mg/100ml,從警情發(fā)生事件至抓獲逃逸人員用時3小時。</div>
    </div>
    
    <div class="section-title">(二)未辦結警情</div>
    
    <div class="case-item">
        <div class="content">1.交警支隊 三大隊二中隊(<span class="bold-text">警情編號:</span>JQ20251118003),<span class="bold-text">警情時間:</span>2025年11月18日21時15分40秒,<span class="bold-text">警情地點:</span>建設南路與友誼路交叉口,<span class="bold-text">警情內容:</span>灰色面包車撞壞護欄后逃逸,有目擊者看到司機走路搖晃。</div>
        <div class="content"><span class="bold-text">查處情況:</span>逃逸人員王五未抓獲。</div>
    </div>
    
    <div class="signature">
        <div>偵查大隊一中隊</div>
        <div>2022年11月19日</div>
    </div>
</body>
</html>

7.3. 轉換成word

通過java代碼將上訴返回的html轉換成word再進行下載即可。

8. 總結

通過上述方法,我們可以快速實現HTML到Word的轉換功能。雖然方案相對簡單,但在許多實際項目中都能發(fā)揮重要作用。對于更復雜的需求,可以考慮集成專業(yè)的文檔處理庫如Flying Saucer或Docx4j。

以上就是使用Java將HTML內容轉換為Word文檔的實現步驟的詳細內容,更多關于Java HTML內容轉為Word文檔的資料請關注腳本之家其它相關文章!

相關文章

  • 使用Spring?Boot的原因解析

    使用Spring?Boot的原因解析

    Spring Boot是Spring家族的成員,它是一個全新的框架,它的設計目的是盡可能簡單和快速的開發(fā)、運行Spring應用程序,簡化配置,這篇文章主要介紹了為什么使用Spring?Boot,需要的朋友可以參考下
    2022-07-07
  • java中同類對象之間的compareTo()和compare()方法對比分析

    java中同類對象之間的compareTo()和compare()方法對比分析

    這篇文章主要介紹了java中同類對象之間的compareTo()和compare()方法對比分析,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • SpringCloud實現權限管理(網關+jwt版)

    SpringCloud實現權限管理(網關+jwt版)

    本文主要介紹了SpringCloud實現權限管理(網關+jwt版),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-10-10
  • Java數據結構之順序表的實現

    Java數據結構之順序表的實現

    線性表(linear?list)是n個具有相同特性的數據元素的有限序列。順序表是常見的線性表之一,本文將詳細講講順序表的原理與實現,需要的可以參考一下
    2022-08-08
  • springboot整合redis之消息隊列

    springboot整合redis之消息隊列

    本文主要介紹了springboot整合redis之消息隊列,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • Java文件操作和IO示例詳解

    Java文件操作和IO示例詳解

    這篇文章主要介紹了Java中通過java.io.File類對文件和目錄進行抽象描述,包括創(chuàng)建、刪除、重命名等操作,同時介紹了文件內容的讀寫,需要的朋友可以參考下
    2024-12-12
  • SpringAOP中的Advisor詳解

    SpringAOP中的Advisor詳解

    這篇文章主要介紹了SpringAOP中的Advisor詳解,平時我們項目中涉及到?AOP,基本上就是聲明式配置一下就行了,無論是基于?XML?的配置還是基于?Java?代碼的配置,都是簡單配置即可使用,今天就來看一下聲明式配置的使用,需要的朋友可以參考下
    2023-08-08
  • java后臺調用HttpURLConnection類模擬瀏覽器請求實例(可用于接口調用)

    java后臺調用HttpURLConnection類模擬瀏覽器請求實例(可用于接口調用)

    這篇文章主要介紹了java后臺調用HttpURLConnection類模擬瀏覽器請求實例,該實例可用于接口調用,具有一定的實用價值,需要的朋友可以參考下
    2014-10-10
  • Debian 7 和 Debian 8 用戶安裝 Java 8的方法

    Debian 7 和 Debian 8 用戶安裝 Java 8的方法

    Oracle Java 8 穩(wěn)定版本近期已發(fā)布,有很多新的特征變化。其中,有功能的程序支持通過“Lambda項目 ”,收到了一些安全更新和界面改進上的bug修復,使得開發(fā)人員的工作更容易。
    2014-03-03
  • Java報錯java.awt.AWTException: AWT的解決方法

    Java報錯java.awt.AWTException: AWT的解決方法

    在Java圖形用戶界面(GUI)編程中,java.awt.AWTException是一個常見的異常,它通常與AWT(Abstract Window Toolkit)組件相關,這個異??赡茉趪L試進行與窗口、圖形環(huán)境或系統剪貼板等操作時拋出,本文將詳細探討AWTException的成因,并提供多種解決方案
    2024-12-12

最新評論

茂名市| 全南县| 图们市| 新晃| 嘉荫县| 铜梁县| 通渭县| 建德市| 巴东县| 华池县| 夹江县| 定襄县| 普洱| 彩票| 德钦县| 昔阳县| 南通市| 涿州市| 石棉县| 泽库县| 铜梁县| 麻城市| 铁岭县| 鹤庆县| 兰溪市| 龙陵县| 昌都县| 德安县| 邢台县| 陆川县| 永嘉县| 安平县| 伊吾县| 齐齐哈尔市| 三穗县| 西林县| 称多县| 砀山县| 绵竹市| 和硕县| 无极县|