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内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论