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

Python自動化將Excel表格插入Word文檔的三種實用方案

 更新時間:2026年06月14日 08:31:46   作者:E-iceblue  
本文將分享如何使用 Spire.Doc for Python 和 Spire.XLS for Python 組件,通過代碼高效地將 Excel 表格集成到 Word 文檔中,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下

在處理企業(yè)日常辦公、財務(wù)審計或數(shù)據(jù)報表時,國內(nèi)開發(fā)者經(jīng)常遇到需要將 Excel 中的數(shù)據(jù)或排版好的表格同步到 Word 報告中的情況。如果單純依靠人工復(fù)制粘貼,不僅效率低下,還極易出錯。

本文將分享如何使用 Spire.Doc for PythonSpire.XLS for Python 組件,通過代碼高效地將 Excel 表格集成到 Word 文檔中。我們將介紹數(shù)據(jù)流構(gòu)建、帶格式復(fù)制以及 OLE 對象嵌入三種不同的實現(xiàn)方案,并對比它們的具體應(yīng)用場景,幫助大家快速解決實際業(yè)務(wù)中的文檔合并問題。

三種實現(xiàn)方案的對比

了解不同方案差異是處理文檔自動化的第一步。下面我們通過一組對比,來看看三種方案的主要特點。

插入方式底層實現(xiàn)原理方案優(yōu)勢性能與局限常見應(yīng)用場景
數(shù)據(jù)流動態(tài)構(gòu)建解析 Excel 單元格數(shù)據(jù),在 Word 中動態(tài)重建表格。格式完全可控,生成的 Word 文件體積最小。無法保留 Excel 原生的公式、圖表和底色。自動化周報生成、后臺數(shù)據(jù)純文本導(dǎo)出。
帶格式復(fù)制提取 Excel 的字體、邊框、背景色等樣式并渲染至 Word。視覺還原度高,能保留 Excel 原本的排版色彩。樣式解析較重,大批量處理時會占用較大內(nèi)存。財務(wù)資產(chǎn)負債表、需要嚴格保留顏色的技術(shù)看板。
作為 OLE 對象內(nèi)嵌將整個 Excel 文件作為二進制流直接內(nèi)嵌到 Word 中。保持文件原樣,雙擊可喚起 Excel 進行二次編輯。文件體積會明顯增大,非 Windows 環(huán)境支持有限。技術(shù)文檔附件內(nèi)嵌、需要交付給業(yè)務(wù)微調(diào)的文檔。

環(huán)境準(zhǔn)備與組件安裝

在正式進入代碼實戰(zhàn)之前,我們需要在 Python 環(huán)境中部署相關(guān)的庫。本文核心依賴 Spire.Doc for Python 和 Spire.XLS for Python 兩個組件,它們分別負責(zé) Word 文檔的結(jié)構(gòu)解析與 Excel 數(shù)據(jù)的讀取。

這兩個組件具備完全的獨立性,純 Python 環(huán)境即可流暢運行,無需額外安裝 Microsoft Office。

我們可以通過標(biāo)準(zhǔn)的 pip 工具進行安裝,在終端或命令行中執(zhí)行以下命令即可:

# 安裝 Excel 處理組件
pip install Spire.XLS
# 安裝 Word 處理組件
pip install Spire.Doc

安裝完成后,無需任何額外的環(huán)境變量配置,即可在腳本中直接通過 import 引入對應(yīng)的命名空間。

如果需要處理其它格式的文件,還可以直接使用 Spire.Office,除以上以上兩個組件外,它還包含 Spire.PDF、Spire.Presentation 和 Spire.Barcode 等。

提取 Excel 數(shù)據(jù)并在 Word 中重建表格

在不需要保留 Excel 復(fù)雜的底色或邊框,只需要將數(shù)據(jù)抽離出來并轉(zhuǎn)化為 Word 標(biāo)準(zhǔn)表格時,基于數(shù)據(jù)流的動態(tài)構(gòu)建是最實用的方法。用這種方法導(dǎo)入 Excel 表格數(shù)據(jù)到 Word 文檔,可以最大化減小對 Word 文檔體積大小的影響。

我們首先通過 Excel 組件讀取表格數(shù)據(jù),接著在 Word 中創(chuàng)建一個同等行列規(guī)模的空白表格,最后通過循環(huán)完成數(shù)據(jù)的對齊與填充。

具體實現(xiàn)代碼如下:

from spire.doc import Document, AutoFitBehaviorType, FileFormat, DefaultTableStyle
from spire.xls import Workbook

# 指定輸入與輸出的文件路徑
excel_file = "/示例文檔.xlsx"
word_file = "/ExcelDataToWord.docx"

# 創(chuàng)建 Workbook 實例并加載 Excel 文件
workbook = Workbook()
workbook.LoadFromFile(excel_file)

# 獲取第一個工作表以及已使用的單元格范圍
sheet = workbook.Worksheets.get_Item(0)
allocatedRange = sheet.AllocatedRange

# 創(chuàng)建 Document 實例用于生成 Word 文檔
doc = Document()
section = doc.AddSection()
table = section.AddTable()

# 根據(jù) Excel 的實際行數(shù)與列數(shù),重置 Word 表格的行列結(jié)構(gòu)
table.ResetCells(allocatedRange.RowCount, allocatedRange.ColumnCount)

# 遍歷已使用范圍的每一行和每一列進行數(shù)據(jù)填充
for rowIndex in range(allocatedRange.RowCount):
    for colIndex in range(allocatedRange.ColumnCount):
        # 定位 Word 目標(biāo)單元格并添加段落
        cell = table.Rows.get_Item(rowIndex).Cells.get_Item(colIndex)
        paragraph = cell.AddParagraph()
        
        # 提取 Excel 單元格的格式化文本并追加至 Word
        textRange = paragraph.AppendText(allocatedRange.get_Item(rowIndex + 1, colIndex + 1).NumberText)
        textRange.CharacterFormat.FontName = "HarmonyOS Sans SC"

# 自動調(diào)整表格寬度以適應(yīng)窗口,并應(yīng)用內(nèi)置表格樣式
table.AutoFit(AutoFitBehaviorType.AutoFitToWindow)
table.ApplyStyle(DefaultTableStyle.GridTable1LightAccent6)

# 保存修改后的結(jié)果文檔并釋放資源
doc.SaveToFile(word_file, FileFormat.Docx2019)
doc.Dispose()
workbook.Dispose()

核心代碼解析

  • 通過 sheet.AllocatedRange 屬性自動識別 Excel 中所有包含數(shù)據(jù)的有效單元格范圍。
  • 使用 table.ResetCells() 方法重置 Word 表格的行數(shù)列數(shù),使其與 Excel 數(shù)據(jù)一致。
  • 調(diào)用 .NumberText 屬性確保讀取到的是經(jīng)過 Excel 格式化渲染后的最終文本(如千分位、百分比符號等)。
  • 使用 table.AutoFit(AutoFitBehaviorType.AutoFitToWindow) 自動調(diào)整列寬,確保表格在 Word 頁面內(nèi)能夠自適應(yīng)鋪滿,防止因列數(shù)過多影響展示效果。

將 Excel 表格帶格式復(fù)制到 Word 文檔中

如果是財務(wù)報表、審計報告或者帶有復(fù)雜合并單元格的工作表,單純將單元格的值填寫到 Word 表格中缺點明顯。這類場景通常要求我們還要將單元格的背景色、字號、加粗狀態(tài)以及對齊方式悉數(shù)同步到 Word 中,以保證視覺的一致性。

為了防止 Word 出現(xiàn)因行列不對齊導(dǎo)致的表格錯位,我們需要編寫輔助函數(shù)分別處理 Excel 復(fù)雜的合并單元格關(guān)系,并逐個復(fù)制字體與底色樣式。

代碼實現(xiàn)如下:

from spire.xls import Workbook, HorizontalAlignType, ExcelPatternType, VerticalAlignType
from spire.doc import Document, Color, HorizontalAlignment, VerticalAlignment, PageOrientation, FileFormat

def MergeCells(worksheet, wordTable):
    # 檢查 Excel 中是否存在合并單元格
    if not worksheet.HasMergedCells:
        return
    for cell_range in worksheet.MergedCells:
        start_row, start_col = cell_range.Row, cell_range.Column
        row_count, col_count = cell_range.RowCount, cell_range.ColumnCount
        
        # 處理水平合并
        if col_count > 1:
            for row in range(start_row, start_row + row_count):
                wordTable.ApplyHorizontalMerge(row - 1, start_col - 1, start_col - 1 + col_count - 1)
        # 處理垂直合并
        if row_count > 1:
            wordTable.ApplyVerticalMerge(start_col - 1, start_row - 1, start_row - 1 + row_count - 1)

def CopyFormatting(tableTextRange, excelCell, wordCell):
    # 復(fù)制字體樣式及顏色
    font = excelCell.Style.Font
    tableTextRange.CharacterFormat.TextColor = Color.FromRgb(font.Color.R, font.Color.G, font.Color.B)
    tableTextRange.CharacterFormat.FontSize = float(font.Size)
    tableTextRange.CharacterFormat.FontName = font.FontName
    tableTextRange.CharacterFormat.Bold = font.IsBold
    tableTextRange.CharacterFormat.Italic = font.IsItalic
    
    # 復(fù)制背景顏色
    if excelCell.Style.FillPattern != ExcelPatternType.none:
        wordCell.CellFormat.BackColor = Color.FromRgb(excelCell.Style.Color.R, excelCell.Style.Color.G, excelCell.Style.Color.B)
    
    # 映射并復(fù)制水平對齊方式
    hAlignMap = {
        HorizontalAlignType.Left: HorizontalAlignment.Left,
        HorizontalAlignType.Center: HorizontalAlignment.Center,
        HorizontalAlignType.Right: HorizontalAlignment.Right
    }
    if excelCell.HorizontalAlignment in hAlignMap:
        tableTextRange.OwnerParagraph.Format.HorizontalAlignment = hAlignMap[excelCell.HorizontalAlignment]
        
    # 映射并復(fù)制垂直對齊方式
    vAlignMap = {
        VerticalAlignType.Top: VerticalAlignment.Top,
        VerticalAlignType.Center: VerticalAlignment.Middle,
        VerticalAlignType.Bottom: VerticalAlignment.Bottom
    }
    if excelCell.VerticalAlignment in vAlignMap:
        wordCell.CellFormat.VerticalAlignment = vAlignMap[excelCell.VerticalAlignment]

# 指定輸入與輸出文件名
excelFileName = "/示例文檔.xlsx"
wordFileName = "/ExcelDataFormatToWord.docx"

workbook = Workbook()
workbook.LoadFromFile(excelFileName)
sheet = workbook.Worksheets.get_Item(0)

doc = Document()
section = doc.AddSection()
section.PageSetup.Orientation = PageOrientation.Landscape  # 寬表格推薦使用橫向排版

table = section.AddTable()
table.ResetCells(sheet.LastRow, sheet.LastColumn)

# 在填充數(shù)據(jù)前,先執(zhí)行單元格合并處理
MergeCells(sheet, table)

# 循環(huán)填充數(shù)據(jù)并復(fù)制格式
for r in range(1, sheet.LastRow + 1):
    tableRow = table.Rows.get_Item(r - 1)
    tableRow.Height = float(sheet.Rows.get_Item(r - 1).RowHeight)  # 同步原表格行高
    for c in range(1, sheet.LastColumn + 1):
        eCell = sheet.Range.get_Item(r, c)
        wCell = table.Rows.get_Item(r - 1).Cells.get_Item(c - 1)
        
        textRange = wCell.AddParagraph().AppendText(eCell.NumberText)
        CopyFormatting(textRange, eCell, wCell)

doc.SaveToFile(wordFileName, FileFormat.Docx2019)
doc.Dispose()
workbook.Dispose()

核心代碼解析

  • 自定義函數(shù) MergeCells 通過提取 Excel 的 MergedCells 集合,分別調(diào)用 Word 表格的 ApplyHorizontalMergeApplyVerticalMerge 接口,以避免復(fù)雜網(wǎng)格在跨組件轉(zhuǎn)換時發(fā)生結(jié)構(gòu)崩潰。
  • 使用 Color.FromRgb() 提取底層顏色值并重新組裝,實現(xiàn)背景色與字體的跨文件同步。
  • 在復(fù)制背景色前增加 ExcelPatternType.none 條件攔截,防止沒有設(shè)置底色的標(biāo)準(zhǔn)單元格在轉(zhuǎn)換后被系統(tǒng)誤填涂為純黑色。
  • 自定義函數(shù) CopyFormatting是關(guān)鍵步驟。它通過逐一讀取 Excel 單元格的 Font 和 Style 屬性,并賦值給 Word 的字符格式與單元格格式,使表格在視覺上與 Excel 工作表保持一致。

將 Excel 表格作為 OLE 對象內(nèi)嵌到 Word 中

在一些特殊的工作中,用戶不僅希望在 Word 中看到 Excel 報表的外觀,還希望在有需要時可以直接通過點擊表格,在 Word 內(nèi)部喚起完整的 Excel 來修改公式或查看底層的圖表。這種文檔融合的需求,可以通過 OLE 技術(shù)來實現(xiàn)。

由于 OLE 對象在靜態(tài)未激活狀態(tài)下需要一張快照來做外觀占位,我們會先利用 Excel 模塊將表格渲染為一張圖片,隨后將該圖片作為封面,連同 Excel 的二進制文件一起嵌入到 Word 中。

具體實現(xiàn)代碼如下:

from spire.doc import Document, DocPicture, FileFormat, OleObjectType
from spire.xls import Workbook

# 指定路徑與文件名
excelFileName = "示例文檔.xlsx"
wordFileName = "/ExcelOleToWord.docx"
tempImageName = "SheetImage.png"

# 創(chuàng)建 Workbook 實例并在后臺將工作表轉(zhuǎn)換為圖片
workbook = Workbook()
workbook.LoadFromFile(excelFileName)
sheet = workbook.Worksheets.get_Item(0)
sheet.ToImage(1, 1, sheet.LastRow, sheet.LastColumn).Save(tempImageName)

# 創(chuàng)建 Document 實例并構(gòu)建 Word 主體框架
doc = Document()
section = doc.AddSection()
paragraph = section.AddParagraph()

# 加載生成的圖片作為 OLE 對象的顯示封面
pic = DocPicture(doc)
pic.LoadImage(tempImageName)

# 調(diào)整圖片寬度使其自適應(yīng) Word 頁面的正文區(qū)域?qū)挾?
pic.Width = section.PageSetup.PageSize.Width - section.PageSetup.Margins.Left - section.PageSetup.Margins.Right

# 將 Excel 文件作為 OLE 對象插入到 Word 段落中,并綁定封面圖
ole = paragraph.AppendOleObject(excelFileName, pic, OleObjectType.ExcelWorksheet)
ole.DisplayAsIcon = False  # 設(shè)置為不以冰冷的圖標(biāo)顯示,而是直接展示表格圖像

# 保存修改后的結(jié)果文檔并釋放資源
doc.SaveToFile(wordFileName, FileFormat.Docx2019)
workbook.Dispose()
doc.Dispose()

核心代碼解析

  • 調(diào)用 sheet.ToImage() 方法將指定的表格區(qū)域轉(zhuǎn)換為快照圖片。
  • 采用了 PageSize.Width - Margins.Left - Margins.Right 自適應(yīng)縮放,使插入的 Excel 快照能夠橫向鋪滿正文。
  • 通過 paragraph.AppendOleObject() 將 Excel 文件以 OLE 對象的形式插入到 Word 的段落對象中。
  • ole.DisplayAsIcon 設(shè)置為 False,以保證 OLE 對象在編輯后動態(tài)更新。

總結(jié)

今天的指南主要介紹了將 Excel 表格嵌入到 Word 文檔的三種方法,使用簡潔的表格對三種方法進行對比,還給出了三種方案的 Python 代碼實現(xiàn)示例。你可以根據(jù)不同的需求選擇適合的方法,輕松讓表格為 Word 文本提供數(shù)據(jù)支撐!

到此這篇關(guān)于Python自動化將Excel表格插入Word文檔的三種實用方案的文章就介紹到這了,更多相關(guān)Python Excel表格插入Word內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python備份文件以及mysql數(shù)據(jù)庫的腳本代碼

    python備份文件以及mysql數(shù)據(jù)庫的腳本代碼

    最近正在學(xué)習(xí)python,看了幾天了,,所以寫個小腳本練習(xí)練習(xí),沒什么含金量,只當(dāng)練手
    2013-06-06
  • python第三方庫easydict的使用實例詳解

    python第三方庫easydict的使用實例詳解

    在?Python?中當(dāng)我們需要訪問字典中的元素的時候,我們需要使用類似?a['example']?的形式來進行使用,這個時候就可以使用 easydict 這個模塊了,今天通過本文給大家講解python第三方庫easydict的使用,感興趣的朋友跟隨小編一起看看吧
    2022-11-11
  • Python pip安裝依賴redis被自動降級的問題及解決

    Python pip安裝依賴redis被自動降級的問題及解決

    安裝Redis 7.1.0時因版本過舊與Python3.10不兼容,通過pip安裝依賴時遵循“版本約束”,導(dǎo)致Redis降級到<3.0,Booktype 項目依賴Redis <3.0,與Python3.10不兼容,解決方法是刪除Booktype依賴,以避免版本沖突
    2025-12-12
  • python如何將圖片生成視頻MP4

    python如何將圖片生成視頻MP4

    這篇文章主要介紹了python如何將圖片生成視頻MP4問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Python獲取某一天是星期幾的方法示例

    Python獲取某一天是星期幾的方法示例

    這篇文章主要介紹了Python獲取某一天是星期幾的方法,結(jié)合完整實例形式分析了Python針對日期與時間的相關(guān)計算技巧,需要的朋友可以參考下
    2017-01-01
  • python利用paramiko連接遠程服務(wù)器執(zhí)行命令的方法

    python利用paramiko連接遠程服務(wù)器執(zhí)行命令的方法

    下面小編就為大家?guī)硪黄猵ython利用paramiko連接遠程服務(wù)器執(zhí)行命令的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • 讓Python加速運行的八種實用技巧分享

    讓Python加速運行的八種實用技巧分享

    Python作為一門解釋型語言,雖然開發(fā)效率高,但運行速度常常成為瓶頸,本文將介紹8種實用的Python加速技巧,幫助你顯著提升代碼執(zhí)行效率,需要的朋友可以參考下
    2025-04-04
  • Blender Python編程創(chuàng)建發(fā)光材質(zhì)示例詳解

    Blender Python編程創(chuàng)建發(fā)光材質(zhì)示例詳解

    這篇文章主要為大家介紹了Blender Python編程創(chuàng)建發(fā)光材質(zhì)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • Python中生成Epoch的方法

    Python中生成Epoch的方法

    下面小編就為大家?guī)硪黄狿ython中生成Epoch的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • Python線程下使用鎖的技巧分享

    Python線程下使用鎖的技巧分享

    本篇文章給大家分享了Python線程下使用鎖需要注意的地方,有興趣的朋友們可以學(xué)習(xí)參考下。
    2018-09-09

最新評論

延吉市| 句容市| 永嘉县| 北川| 资源县| 克拉玛依市| 阿巴嘎旗| 红桥区| 电白县| 钟祥市| 乐亭县| 贡山| 鹤山市| 于都县| 甘南县| 扬中市| 淮滨县| 沙湾县| 三明市| 崇州市| 巧家县| 阳原县| 望江县| 济宁市| 四会市| 瑞昌市| 通山县| 怀化市| 日照市| 西昌市| 乌兰察布市| 东城区| 安西县| 定日县| 景洪市| 织金县| 建宁县| 峨边| 许昌市| 邯郸市| 大冶市|