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')

代码说明:

  1. 导入必要的库: load_workbook 用于加载 Excel 文件,PatternFillFont 用于处理单元格格式。2. 加载 Excel 文件和工作表: 使用 load_workbook 函数加载 Excel 文件,并使用 active 属性获取活动工作表。3. 获取第一列和第二行的值: 使用列表推导式获取第一列和第二行的所有单元格的值。4. 获取第一列的唯一值: 使用 set 函数获取第一列的唯一值。5. 遍历每个唯一值: * 计算每个唯一值出现的次数。 * 根据唯一值和出现次数生成新的工作表名称。 * 使用 create_sheet 方法创建新的工作表。 * 将原工作表的第一行和第二行数据复制到新工作表中。 * 遍历第一列,将符合条件的行数据复制到对应的新工作表中。 * 使用 _style 属性复制单元格格式,包括填充颜色和字体颜色。6. 保存修改后的 Excel 文件: 使用 save 方法保存修改后的 Excel 文件。

使用方法:

  1. 将代码保存为 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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录