Python Openpyxl 拆分 Excel 工作表:按第一列分组并保留格式
Python Openpyxl 拆分 Excel 工作表:按第一列分组并保留格式
本文介绍如何使用 Python 和 Openpyxl 库,根据 Excel 工作表第一列的唯一值,将数据拆分到多个新的工作表中,并完整保留原始工作表的单元格格式,包括字体颜色、填充颜色等。
**代码示例:**pythonfrom openpyxl import load_workbookfrom openpyxl.styles import PatternFill, Font
加载 Excel 文件wb = load_workbook('your_excel_file.xlsx')sheet = wb.active
获取第一列的值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)._style = cell._style
# 添加第二行单元格内容到新工作表 new_sheet.append(row2_values)
# 添加第一列单元格内容到新工作表 for row_num, cell_value in enumerate(col1_values): if cell_value == value: new_sheet.append([cell.value for cell in sheet[row_num + 2]]) # 复制单元格格式 for col_num, cell in enumerate(sheet[row_num + 2], 1): new_sheet.cell(row=new_sheet.max_row, column=col_num)._style = cell._style
保存修改后的 Excel 文件wb.save('split_excel_file.xlsx')
代码说明:
- 导入必要的库:
load_workbook用于加载 Excel 文件,PatternFill和Font用于处理单元格格式。2. 加载 Excel 文件和工作表: 使用load_workbook函数加载 Excel 文件,并使用active属性获取活动工作表。3. 获取第一列和第二行的值: 使用列表推导式获取第一列和第二行的所有单元格的值。4. 获取第一列的唯一值: 使用set函数获取第一列的唯一值。5. 遍历每个唯一值: * 计算每个唯一值出现的次数。 * 根据唯一值和出现次数生成新的工作表名称。 * 使用create_sheet方法创建新的工作表。 * 将原工作表的第一行和第二行数据复制到新工作表中。 * 遍历第一列,将符合条件的行数据复制到对应的新工作表中。 * 使用_style属性复制单元格格式,包括填充颜色和字体颜色。6. 保存修改后的 Excel 文件: 使用save方法保存修改后的 Excel 文件。
使用方法:
- 将代码保存为 Python 文件(例如
split_excel.py)。2. 将your_excel_file.xlsx替换为您的 Excel 文件名。3. 运行 Python 脚本:python split_excel.py。4. 脚本将在同一目录下生成一个名为split_excel_file.xlsx的新文件,其中包含拆分后的工作表。
注意:
- 此代码假设您的 Excel 文件中至少有两行数据。* 您可以根据需要修改代码,例如更改要拆分的列、新工作表的命名规则等。
原文地址: https://www.cveoy.top/t/topic/fXjk 著作权归作者所有。请勿转载和采集!