Python轻松实现将Excel表格完美转换为Word

 更新时间:2026年02月09日 14:34:54   作者:LSTM97  
数据管理与转换在日常工作中扮演着重要角色,本文将教你如何使用 Spire.XLS for Python 和 Spire.Doc for Python 库,轻松将 Excel 数据导出并在 Word 中生成美观的表格,感兴趣的小伙伴可以了解下

数据管理与转换在日常工作中扮演着重要角色。许多情况下,我们需要将 Excel 中的数据导入到 Word 文档中,以便生成报告、制作演示材料或进行文档归档。然而,这个过程不仅涉及到简单的数据搬运,还需要确保格式的完整性,以保持文档的专业性和可读性。本文将教你如何使用 Spire.XLS for Python 和 Spire.Doc for Python 库,轻松将 Excel 数据导出并在 Word 中生成美观的表格,从而提升你的工作效率。

环境准备

首先,确保安装了所需的库。需要使用 Spire.XLS 和 Spire.Doc,Spire.XLS 是一款非常强大的 Excel 文件处理库,支持读取、编辑和生成 Excel 文件(.xlsx 和 .xls 格式);Spire.Doc 是一款功能强大的 Word 文档处理库,允许用户创建、编辑和读取 Word 文档(.doc 和 .docx 格式)。

安装命令:

pip install Spire.XLS
pip install Spire.Doc

代码实现

以下是将 Excel 数据导出为 Word 表格的完整代码示例:

from spire.xls import *
from spire.doc import *

def MergeCells(sheet, table):
    """根据 Excel 工作表中的合并单元格合并 Word 表格中的对应单元格"""
    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 复制到 Word"""
    # 复制字体样式
    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

    # 复制背景颜色
    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)

    # 复制对齐方式
    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")

# 获取第一个工作表
sheet = workbook.Worksheets[0]

# 创建 Word 文档
doc = Document()
section = doc.AddSection()
section.PageSetup.Orientation = PageOrientation.Landscape

# 添加表格
table = section.AddTable(True)
table.ResetCells(sheet.LastRow, sheet.LastColumn)

# 根据 Excel 工作表中的合并单元格合并 Word 表格中的对应单元格
MergeCells(sheet, table)

# 从 Excel 导出数据和单元格样式到 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]

        # 复制数据
        textRange = wCell.AddParagraph().AppendText(xCell.NumberText)

        # 复制单元格样式
        CopyStyle(textRange, xCell, wCell)

# 将 Word 文档保存到文件
doc.SaveToFile("Excel转Word表格.docx", FileFormat.Docx)

代码解析

合并单元格 (MergeCells 函数) :为了确保 Excel 中合并的单元格在 Word 中也保持一致,该函数管理合并单元格的逻辑。

复制样式 (CopyStyle 函数) :设计用于将 Excel 单元格的格式(如字体、颜色和对齐方式)精确复制到 Word 表格中。

加载和处理数据 :通过 Spire.XLS 从 Excel 文件中读取数据,然后创建 Word 文档并构建其中的表格。

导出数据 :通过遍历 Excel 的每一行和每一列,将数据导入 Word 表格,并同时应用样式。

总结

使用 Spire.XLS 和 Spire.Doc 库,Python 开发者可以轻松地将 Excel 数据导出到 Word 文档中,并确保格式的完整性。这种转换不仅提高了工作效率,还提升了文档的专业性,适用于各种商业和学术场景。希望本文的代码示例能为你提供帮助,让数据处理工作变得更加顺畅。

到此这篇关于Python轻松实现将Excel表格完美转换为Word的文章就介绍到这了,更多相关Python Excel表格转Word内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python如何实现 HTTP echo 服务器

    Python如何实现 HTTP echo 服务器

    本文介绍了如何使用Python实现一个简单的HTTPecho服务器,该服务器支持GET和POST请求,并返回JSON格式的响应,GET请求返回请求路径、方法、头和查询字符串,POST请求还返回请求体内容,服务器的使用方法和测试示例也一并提供,感兴趣的朋友跟随小编一起看看吧
    2025-01-01
  • python 将有序数组转换为二叉树的方法

    python 将有序数组转换为二叉树的方法

    这篇文章主要介绍了python 将有序数组转换为二叉树的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • python 绘制拟合曲线并加指定点标识的实现

    python 绘制拟合曲线并加指定点标识的实现

    这篇文章主要介绍了python 绘制拟合曲线并加指定点标识的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • python类函数的有效调用方式

    python类函数的有效调用方式

    文章介绍了Python中类的几种不同方法,并展示了如何有效调用这些方法,实验涵盖了属性方法、静态方法、类方法、普通方法、保护方法和私有方法,并详细说明了每种方法的调用方式,文章还讨论了如何处理调用错误和返回值,并提供了一些实用建议
    2024-11-11
  • 使用Python制作新型冠状病毒实时疫情图

    使用Python制作新型冠状病毒实时疫情图

    最近被新型冠状病毒搞的人心惶惶,很多城市被病毒感染,今天小编给大家分享使用Python制作新型冠状病毒实时疫情图,感兴趣的朋友跟随小编一起看看吧
    2020-01-01
  • pandas将numpy数组写入到csv的实例

    pandas将numpy数组写入到csv的实例

    今天小编就为大家分享一篇pandas将numpy数组写入到csv的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • Pyhton中单行和多行注释的使用方法及规范

    Pyhton中单行和多行注释的使用方法及规范

    大家都知道python中的注释有多种,有单行注释,多行注释,批量注释,中文注释也是常用的。python注释也有自己的规范,这篇文章文章中会给大家详细介绍Pyhton中单行和多行注释的使用方法及规范,有需要朋友们可以参考借鉴。
    2016-10-10
  • Python matplotlib 画图窗口显示到gui或者控制台的实例

    Python matplotlib 画图窗口显示到gui或者控制台的实例

    今天小编就为大家分享一篇Python matplotlib 画图窗口显示到gui或者控制台的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • Python实现检测照片中的人脸数

    Python实现检测照片中的人脸数

    这篇文章主要为大家详细介绍了如何利用Python语言实现检测照片中共有多少张人脸,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-08-08
  • Python PyQt5中窗口数据传递的示例详解

    Python PyQt5中窗口数据传递的示例详解

    开发应用程序时,若只有一个窗口则只需关心这个窗口里面的各控件之间如何传递数据。如果程序有多个窗口,就要关心不同的窗口之间是如何传递数据。本文介绍了PyQt5中三种窗口数据传递,需要的可以了解一下
    2022-12-12

最新评论