Python輕松實(shí)現(xiàn)將Excel表格完美轉(zhuǎn)換為Word
數(shù)據(jù)管理與轉(zhuǎn)換在日常工作中扮演著重要角色。許多情況下,我們需要將 Excel 中的數(shù)據(jù)導(dǎo)入到 Word 文檔中,以便生成報(bào)告、制作演示材料或進(jìn)行文檔歸檔。然而,這個(gè)過(guò)程不僅涉及到簡(jiǎn)單的數(shù)據(jù)搬運(yùn),還需要確保格式的完整性,以保持文檔的專(zhuān)業(yè)性和可讀性。本文將教你如何使用 Spire.XLS for Python 和 Spire.Doc for Python 庫(kù),輕松將 Excel 數(shù)據(jù)導(dǎo)出并在 Word 中生成美觀的表格,從而提升你的工作效率。
環(huán)境準(zhǔn)備
首先,確保安裝了所需的庫(kù)。需要使用 Spire.XLS 和 Spire.Doc,Spire.XLS 是一款非常強(qiáng)大的 Excel 文件處理庫(kù),支持讀取、編輯和生成 Excel 文件(.xlsx 和 .xls 格式);Spire.Doc 是一款功能強(qiáng)大的 Word 文檔處理庫(kù),允許用戶(hù)創(chuàng)建、編輯和讀取 Word 文檔(.doc 和 .docx 格式)。
安裝命令:
pip install Spire.XLS pip install Spire.Doc
代碼實(shí)現(xiàn)
以下是將 Excel 數(shù)據(jù)導(dǎo)出為 Word 表格的完整代碼示例:
from spire.xls import *
from spire.doc import *
def MergeCells(sheet, table):
"""根據(jù) Excel 工作表中的合并單元格合并 Word 表格中的對(duì)應(yīng)單元格"""
if sheet.HasMergedCells:
ranges = sheet.MergedCells
for i in range(len(ranges)):
startRow = ranges[i].Row
startColumn = ranges[i].Column
rowCount = ranges[i].RowCount
columnCount = ranges[i].ColumnCount
if rowCount > 1 and columnCount > 1:
for j in range(startRow, startRow + rowCount):
table.ApplyHorizontalMerge(j - 1, startColumn - 1, startColumn - 1 + columnCount - 1)
table.ApplyVerticalMerge(startColumn - 1, startRow - 1, startRow - 1 + rowCount - 1)
if rowCount > 1 and columnCount == 1:
table.ApplyVerticalMerge(startColumn - 1, startRow - 1, startRow - 1 + rowCount - 1)
if columnCount > 1 and rowCount == 1:
table.ApplyHorizontalMerge(startRow - 1, startColumn - 1, startColumn - 1 + columnCount - 1)
def CopyStyle(wTextRange, xCell, wCell):
"""將單元格樣式從 Excel 復(fù)制到 Word"""
# 復(fù)制字體樣式
wTextRange.CharacterFormat.TextColor = Color.FromRgb(xCell.Style.Font.Color.R, xCell.Style.Font.Color.G, xCell.Style.Font.Color.B)
wTextRange.CharacterFormat.FontSize = float(xCell.Style.Font.Size)
wTextRange.CharacterFormat.FontName = xCell.Style.Font.FontName
wTextRange.CharacterFormat.Bold = xCell.Style.Font.IsBold
wTextRange.CharacterFormat.Italic = xCell.Style.Font.IsItalic
# 復(fù)制背景顏色
if xCell.Style.FillPattern is not ExcelPatternType.none:
wCell.CellFormat.BackColor = Color.FromRgb(xCell.Style.Color.R, xCell.Style.Color.G, xCell.Style.Color.B)
# 復(fù)制對(duì)齊方式
wCell.CellFormat.HorizontalAlignment = {
HorizontalAlignType.Left: HorizontalAlignment.Left,
HorizontalAlignType.Center: HorizontalAlignment.Center,
HorizontalAlignType.Right: HorizontalAlignment.Right
}.get(xCell.HorizontalAlignment)
wCell.CellFormat.VerticalAlignment = {
VerticalAlignType.Bottom: VerticalAlignment.Bottom,
VerticalAlignType.Center: VerticalAlignment.Middle,
VerticalAlignType.Top: VerticalAlignment.Top
}.get(xCell.VerticalAlignment)
# 加載 Excel 文件
workbook = Workbook()
workbook.LoadFromFile("Contact list.xlsx")
# 獲取第一個(gè)工作表
sheet = workbook.Worksheets[0]
# 創(chuàng)建 Word 文檔
doc = Document()
section = doc.AddSection()
section.PageSetup.Orientation = PageOrientation.Landscape
# 添加表格
table = section.AddTable(True)
table.ResetCells(sheet.LastRow, sheet.LastColumn)
# 根據(jù) Excel 工作表中的合并單元格合并 Word 表格中的對(duì)應(yīng)單元格
MergeCells(sheet, table)
# 從 Excel 導(dǎo)出數(shù)據(jù)和單元格樣式到 Word 表格
for r in range(1, sheet.LastRow + 1):
table.Rows[r - 1].Height = float(sheet.Rows[r - 1].RowHeight)
for c in range(1, sheet.LastColumn + 1):
xCell = sheet.Range[r, c]
wCell = table.Rows[r - 1].Cells[c - 1]
# 復(fù)制數(shù)據(jù)
textRange = wCell.AddParagraph().AppendText(xCell.NumberText)
# 復(fù)制單元格樣式
CopyStyle(textRange, xCell, wCell)
# 將 Word 文檔保存到文件
doc.SaveToFile("Excel轉(zhuǎn)Word表格.docx", FileFormat.Docx)
代碼解析
合并單元格 (MergeCells 函數(shù)) :為了確保 Excel 中合并的單元格在 Word 中也保持一致,該函數(shù)管理合并單元格的邏輯。
復(fù)制樣式 (CopyStyle 函數(shù)) :設(shè)計(jì)用于將 Excel 單元格的格式(如字體、顏色和對(duì)齊方式)精確復(fù)制到 Word 表格中。
加載和處理數(shù)據(jù) :通過(guò) Spire.XLS 從 Excel 文件中讀取數(shù)據(jù),然后創(chuàng)建 Word 文檔并構(gòu)建其中的表格。
導(dǎo)出數(shù)據(jù) :通過(guò)遍歷 Excel 的每一行和每一列,將數(shù)據(jù)導(dǎo)入 Word 表格,并同時(shí)應(yīng)用樣式。
總結(jié)
使用 Spire.XLS 和 Spire.Doc 庫(kù),Python 開(kāi)發(fā)者可以輕松地將 Excel 數(shù)據(jù)導(dǎo)出到 Word 文檔中,并確保格式的完整性。這種轉(zhuǎn)換不僅提高了工作效率,還提升了文檔的專(zhuān)業(yè)性,適用于各種商業(yè)和學(xué)術(shù)場(chǎng)景。希望本文的代碼示例能為你提供幫助,讓數(shù)據(jù)處理工作變得更加順暢。
到此這篇關(guān)于Python輕松實(shí)現(xiàn)將Excel表格完美轉(zhuǎn)換為Word的文章就介紹到這了,更多相關(guān)Python Excel表格轉(zhuǎn)Word內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python實(shí)現(xiàn)Word表格自動(dòng)化轉(zhuǎn)為Excel
- 使用Python實(shí)現(xiàn)將Excel表格插入到Word文檔中
- Python實(shí)現(xiàn)快速提取Word表格并寫(xiě)入Excel
- 使用python將CSV和Excel表格數(shù)據(jù)導(dǎo)入到Word表格
- 利用Python實(shí)現(xiàn)讀取Word表格計(jì)算匯總并寫(xiě)入Excel
- Python實(shí)現(xiàn)將Word表格嵌入到Excel中
- Python實(shí)現(xiàn)Word表格轉(zhuǎn)成Excel表格的示例代碼
- 使用python批量讀取word文檔并整理關(guān)鍵信息到excel表格的實(shí)例
相關(guān)文章
Python爬取商家聯(lián)系電話以及各種數(shù)據(jù)的方法
今天小編就為大家分享一篇Python爬取商家聯(lián)系電話以及各種數(shù)據(jù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-11-11
使用pytest結(jié)合Playwright實(shí)現(xiàn)頁(yè)面元素在兩個(gè)區(qū)域間拖拽功能
本文介紹了如何使用pytest結(jié)合Playwright實(shí)現(xiàn)頁(yè)面元素在兩個(gè)區(qū)域間的拖拽操作,通過(guò)創(chuàng)建一個(gè)簡(jiǎn)單的HTML頁(yè)面和JavaScript代碼來(lái)實(shí)現(xiàn)拖放功能,并使用Playwright的API來(lái)模擬和驗(yàn)證拖拽操作,需要的朋友可以參考下2026-01-01
Python實(shí)現(xiàn)進(jìn)度條和時(shí)間預(yù)估的示例代碼
這篇文章主要介紹了Python實(shí)現(xiàn)進(jìn)度條和時(shí)間預(yù)估的代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06
pycharm 多行批量縮進(jìn)和反向縮進(jìn)快捷鍵介紹
這篇文章主要介紹了pycharm 多行批量縮進(jìn)和反向縮進(jìn)快捷鍵介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01
python學(xué)生管理系統(tǒng)學(xué)習(xí)筆記
這篇文章主要為大家詳細(xì)介紹了python學(xué)生管理系統(tǒng)的學(xué)習(xí)筆記,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-03-03
使用Python處理KNN分類(lèi)算法的實(shí)現(xiàn)代碼
KNN分類(lèi)算法(K-Nearest-Neighbors?Classification),又叫K近鄰算法,是一個(gè)概念極其簡(jiǎn)單,而分類(lèi)效果又很優(yōu)秀的分類(lèi)算法,這篇文章主要介紹了使用Python處理KNN分類(lèi)算法,需要的朋友可以參考下2022-09-09
Python實(shí)現(xiàn)繪制自定義形狀的詞云示例
這篇文章主要介紹了Python實(shí)現(xiàn)繪制自定義形狀的詞云示例,通過(guò)將一段文本中出現(xiàn)頻率高的單詞按其出現(xiàn)頻率大小以及顏色深淺排列成一個(gè)詞云圖形,從而更好地展示文本中的信息,需要的朋友可以參考下2022-10-10
pandas DataFrame add_prefix的實(shí)現(xiàn)
本文主要介紹了pandas DataFrame add_prefix的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-05-05
淺談Python里面None True False之間的區(qū)別
這篇文章主要介紹了淺談Python里面None True False之間的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07

