Excel 拆分工作表并保留单元格格式 - Python openpyxl 教程
Excel 拆分工作表并保留单元格格式 - Python openpyxl 教程
本文将介绍如何使用 Python 的 openpyxl 库拆分 Excel 工作表,同时保留原工作表中单元格的格式、字体颜色和填充颜色。
代码示例:
import openpyxl
import openpyxl.styles as styles
# 加载工作簿
wb = openpyxl.load_workbook('your_workbook.xlsx')
# 获取工作表
sheet = wb['Sheet1']
# 获取第一列单元格的值
col1_values = [cell.value for cell in sheet['A']]
# 获取第二行单元格的值
row2_values = [cell.value for cell in sheet[2]]
# 拆分工作表
unique_values = set(col1_values)
for value in unique_values:
count = col1_values.count(value)
new_sheet_name = f'{value} ({count} 人)'
new_sheet = wb.create_sheet(title=new_sheet_name)
# 在新工作表的第一行插入原工作表A1单元格的内容
new_sheet.insert_rows(1)
for col_num, cell in enumerate(sheet[1], 1):
new_sheet.cell(row=1, column=col_num, value=cell.value)
new_sheet.cell(row=1, column=col_num).font = cell.font
new_sheet.cell(row=1, column=col_num).fill = cell.fill
# 添加第二行单元格内容到新工作表
new_sheet.append(row2_values)
# 添加第一列单元格内容到新工作表
for row_num, cell_value in enumerate(col1_values):
if cell_value == value:
new_row_values = [cell.value for cell in sheet[row_num + 2]]
new_row = new_sheet.append(new_row_values)
for col_num, cell in enumerate(new_row, 1):
orig_cell = sheet.cell(row=row_num + 1, column=col_num)
cell.font = styles.Font(name=orig_cell.font.name, size=orig_cell.font.size, bold=orig_cell.font.bold, italic=orig_cell.font.italic, color=orig_cell.font.color)
cell.fill = orig_cell.fill
# 保存工作簿
wb.save('new_workbook.xlsx')
代码解释:
- 导入库: 导入
openpyxl库用于处理 Excel 文件,以及openpyxl.styles用于访问和操作单元格样式。 - 加载工作簿: 使用
openpyxl.load_workbook()加载要拆分的工作簿。 - 获取工作表: 使用
wb['Sheet1']获取要拆分的工作表。 - 获取单元格值: 使用列表推导获取第一列和第二行的单元格值。
- 拆分工作表:
- 使用
set()获取第一列单元格值中的唯一值。 - 遍历唯一值,并根据每个值创建新的工作表。
- 统计每个值在第一列中出现的次数,并将其添加到新工作表名称中。
- 使用
- 保留单元格格式:
- 在新工作表的第一行插入原工作表 A1 单元格的内容,并使用
cell.font和cell.fill属性来保留原单元格的字体颜色和填充颜色。 - 在添加第一列单元格内容到新工作表时,使用
openpyxl.styles.Font和cell.fill来保留原单元格的格式和填充颜色。
- 在新工作表的第一行插入原工作表 A1 单元格的内容,并使用
- 保存工作簿: 使用
wb.save()保存修改后的工作簿。
注意:
- 确保已安装
openpyxl库。可以使用pip install openpyxl命令安装。 - 将代码中的
'your_workbook.xlsx'替换为要拆分的工作簿的文件名。 - 将代码中的
'new_workbook.xlsx'替换为保存新工作簿的文件名。
希望这篇教程能够帮助您使用 Python 拆分 Excel 工作表并保留单元格格式。如果您有任何问题,请随时提出。
原文地址: https://www.cveoy.top/t/topic/fXjj 著作权归作者所有。请勿转载和采集!