Python创建Excel表格并合并行列

 更新时间:2026年02月12日 09:47:45   作者:豆本-豆豆奶  
Python的openpyxl库可以帮助我们自动化创建和格式化Excel文件,包括行与列的合并操作,下面我们就来看看如何使用openpyxl实现这些功能吧

Python的openpyxl库可以帮助我们自动化创建和格式化Excel文件,包括行与列的合并操作。

本文将详细介绍如何使用openpyxl实现这些功能,并提供详细的代码示例和说明。

一、准备工作

在开始之前,确保安装了openpyxl库。

pip install openpyxl

二、创建示例数据

我们先准备一些简单的数据,用于演示如何在Excel中进行行与列的合并。

这里创建一个包含分类、子分类、项目名称以及两个值的表格。

from openpyxl import Workbook

# 创建一个工作簿
workbook = Workbook()
worksheet = workbook.active

# 添加示例数据
data = [
    ['Category', 'Subcategory', 'Item', 'Value1', 'Value2'],
    ['A', 'X', 'Item1', 10, 100],
    ['A', 'Y', 'Item2', 20, 200],
    ['B', 'X', 'Item3', 30, 300],
    ['B', 'Y', 'Item4', 40, 400],
    ['C', 'X', 'Item5', 50, 500],
    ['C', 'Y', 'Item6', 60, 600]
]

# 将数据写入工作表
for row in data:
    worksheet.append(row)

代码说明

  • 创建工作簿:使用 Workbook() 创建一个新的工作簿,并通过 workbook.active 获取当前活动的工作表。
  • 添加数据:定义一个二维列表 data,其中包含表头和数据行。
  • 写入数据:使用 worksheet.append(row) 将每一行数据逐行写入工作表。

三、合并列

合并列可以将同一行中的多个单元格合并为一个单元格。这在创建表头时非常有用。

# 合并第1行的第1到第3列
worksheet.merge_cells('A1:C1')

# 设置合并单元格的内容和样式
worksheet['A1'] = 'Category & Subcategory & Item'
worksheet['A1'].font = Font(bold=True)
worksheet['A1'].alignment = Alignment(horizontal='center', vertical='center')

代码说明

  • 合并单元格:使用.merge_cells('A1:C1') 合并第1行的第A列到第C列。
  • 设置内容:将合并单元格的内容设置为 'Category & Subcategory & Item'
  • 设置字体和对齐方式:使用 Font(bold=True) 设置字体为加粗,使用 Alignment(horizontal='center', vertical='center') 设置水平和垂直居中对齐。

四、合并行

合并行将同一列中的多个单元格合并为一个单元格。经常用在需要突出显示某个分类。

# 合并第2行和第3行的第1列
worksheet.merge_cells('A2:A3')

# 设置合并单元格的内容和样式
worksheet['A2'] = 'A'
worksheet['A2'].font = Font(bold=True)
worksheet['A2'].alignment = Alignment(horizontal='center', vertical='center')
# 合并第4行和第5行的第1列
worksheet.merge_cells('A4:A5')
worksheet['A4'] = 'B'
worksheet['A4'].font = Font(bold=True)
worksheet['A4'].alignment = Alignment(horizontal='center', vertical='center')
# 合并第6行和第7行的第1列
worksheet.merge_cells('A6:A7')
worksheet['A6'] = 'C'
worksheet['A6'].font = Font(bold=True)
worksheet['A6'].alignment = Alignment(horizontal='center', vertical='center')

代码说明

  • 合并单元格:使用.merge_cells('A2:A3') 合并第2行和第3行的第A列。
  • 设置内容:将合并单元格的内容设置为 'A''B' 和 'C'

五、同时合并行和列

有时需要同时合并行和列,以创建更复杂的布局。

# 同时合并第4行到第6行的第2列到第4列
worksheet.merge_cells('B4:D6')

# 设置合并单元格的内容和样式
worksheet['B4'] = 'Merged Rows and Columns'
worksheet['B4'].font = Font(bold=True)
worksheet['B4'].alignment = Alignment(horizontal='center', vertical='center')

代码说明

  • 合并单元格:使用.merge_cells('B4:D6') 同时合并第4行到第6行的第B列到第D列。
  • 设置内容:设置合并单元格的内容。
  • 设置字体和对齐方式:使用 Font(bold=True) 设置字体为加粗,使用 Alignment(horizontal='center', vertical='center') 设置水平和垂直居中对齐。

六、动态合并行

在某些情况下,可能需要根据数据动态合并行。

# 假设我们有一个数据列表,需要根据数据动态合并行
data = ['A', 'A', 'B', 'B', 'C', 'C']

# 初始化起始行
start_row = 2

# 遍历数据,动态合并行
for i in range(len(data)):
    if i == len(data) - 1 or data[i] != data[i + 1]:
        # 当前数据与下一个数据不同,或者已经是最后一个数据
        end_row = i + 2  # 结束行号
        worksheet.merge_cells(start_row=start_row, start_column=1, end_row=end_row, end_column=1)
        worksheet.cell(row=start_row, column=1).value = data[i]
        worksheet.cell(row=start_row, column=1).font = Font(bold=True)
        worksheet.cell(row=start_row, column=1).alignment = Alignment(horizontal='center', vertical='center')
        start_row = end_row + 1  # 更新起始行号

代码说明

初始化起始行:设置 start_row 为 2,表示从第2行开始合并。

遍历数据:使用 for i in range(len(data)) 遍历数据列表。

动态合并行

  • 如果当前数据与下一个数据不同,或者已经是最后一个数据,则计算结束行号 end_row
  • 使用 .merge_cells() 合并行。
  • 设置合并单元格的内容、字体样式和对齐方式。
  • 更新起始行号 start_row,以便处理下一组数据。

七、保存文件

最后,我们将工作簿保存为 Excel 文件。

# 保存 Excel 文件
workbook.save('merged_cells_example.xlsx')

代码说明

保存文件:使用 workbook.save() 将工作簿保存为文件。

通过上面的各自步骤,成功创建了一个包含合并行和列的Excel表。

到此这篇关于Python创建Excel表格并合并行列的文章就介绍到这了,更多相关Python创建Excel内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python自动化运维中服务器性能监控与告警详解

    Python自动化运维中服务器性能监控与告警详解

    这篇文章主要为大家详细介绍了Python自动化运维中服务器性能监控与告警的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下
    2025-04-04
  • Windows上使用Python增加或删除权限的方法

    Windows上使用Python增加或删除权限的方法

    下面小编就为大家分享一篇Windows上使用Python增加或删除权限的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • Python实现一个服务器监听多个客户端请求

    Python实现一个服务器监听多个客户端请求

    这篇文章主要为大家详细介绍了Python如何实现一个服务器监听多个客户端请求,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • 详谈Pandas中iloc和loc以及ix的区别

    详谈Pandas中iloc和loc以及ix的区别

    今天小编就为大家分享一篇详谈Pandas中iloc和loc以及ix的区别,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • Python利用ElementTree库处理XML的完全指南

    Python利用ElementTree库处理XML的完全指南

    Python作为一种广泛应用的编程语言,提供了多种库来支持XML处理,使得开发者能够更加便捷和高效地处理XML数据,本章将对Python中常用的XML处理库进行概述,包括它们的特性和适用场景,为读者选择合适的库提供参考,需要的朋友可以参考下
    2025-07-07
  • matplotlib之多边形选区(PolygonSelector)的使用

    matplotlib之多边形选区(PolygonSelector)的使用

    这篇文章主要介绍了matplotlib之多边形选区(PolygonSelector)的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • 使用pytorch实现线性回归

    使用pytorch实现线性回归

    这篇文章主要为大家详细介绍了使用pytorch实现线性回归,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • python里dict变成list实例方法

    python里dict变成list实例方法

    在本篇内容里小编给大家分析了关于python里dict变成list实例方法的实例内容,对此有需要的朋友们可以参考学习下。
    2019-06-06
  • Python的GUI编程之Pack、Place、Grid的区别说明

    Python的GUI编程之Pack、Place、Grid的区别说明

    这篇文章主要介绍了Python的GUI编程之Pack、Place、Grid的区别说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • python一行输入n个数据问题

    python一行输入n个数据问题

    这篇文章主要介绍了python一行输入n个数据问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05

最新评论