当前位置: 代码网 > it编程>前端脚本>Python > Python创建Excel表格并合并行列

Python创建Excel表格并合并行列

2026年02月12日 Python 我要评论
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内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com