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利用小波分析进行特征提取的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • python re.match()用法相关示例

    python re.match()用法相关示例

    这篇文章主要介绍了python re.match()用法相关示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • 基于Django ORM、一对一、一对多、多对多的全面讲解

    基于Django ORM、一对一、一对多、多对多的全面讲解

    今天小编就为大家分享一篇基于Django ORM、一对一、一对多、多对多的全面讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Python编程中内置的NotImplemented类型的用法

    Python编程中内置的NotImplemented类型的用法

    这篇文章主要介绍了Python编程中内置的NotImplemented类型的用法,NotImplemented 是Python在内置命名空间中的六个常数之一,下文更多详细内容需要的小伙伴可以参考一下
    2022-03-03
  • Python 利用切片从列表中取出一部分使用的方法

    Python 利用切片从列表中取出一部分使用的方法

    今天小编就为大家分享一篇Python 利用切片从列表中取出一部分使用的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • python标准库压缩包模块zipfile和tarfile详解(常用标准库)

    python标准库压缩包模块zipfile和tarfile详解(常用标准库)

    在我们常用的系统windows和Linux系统中有很多支持的压缩包格式,包括但不限于以下种类:rar、zip、tar,这篇文章主要介绍了python标准库压缩包模块zipfile和tarfile详解(常用标准库),需要的朋友可以参考下
    2022-06-06
  • 浅析python 定时拆分备份 nginx 日志的方法

    浅析python 定时拆分备份 nginx 日志的方法

    本文给大家分享python 定时拆分备份 nginx 日志的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2020-04-04
  • Python操作excel文件与csv文件方法详解

    Python操作excel文件与csv文件方法详解

    这篇文章主要介绍了Python操作excel文件与csv文件方法,csv文件可以直接通过excel打开,以行列保存显示文件,相比与excel来说它只能保存数据,不能保存公式和函数,然而python处理两种文件的方式大同小异,感兴趣的朋友可以参考下
    2023-12-12
  • Python面向对象程序设计中类的定义、实例化、封装及私有变量/方法详解

    Python面向对象程序设计中类的定义、实例化、封装及私有变量/方法详解

    这篇文章主要介绍了Python面向对象程序设计中类的定义、实例化、封装及私有变量/方法,结合具体实例形式较为详细的分析了Python面向对象程序设计中类的定义、实例化、封装、私有变量、私有方法等相关使用技巧,需要的朋友可以参考下
    2019-02-02
  • Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)

    Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)

    这篇文章主要介绍了Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-06-06

最新评论