使用 Python 将 Excel 表格按姓名拆分并生成带格式的新表格

本教程将演示如何利用 Python 代码将 Excel 表格拆分成多个单独的新表格。具体步骤为:

  1. 提取表格第二行,找到 '姓名' 列。
  2. 按照姓名对表格内容进行分组。
  3. 将每个分组的内容生成一个新的表格,并以对应的姓名命名。
  4. 将原始表格 A1 单元格的格式复制到新表格的 A1 单元格中。

代码实现:

import openpyxl

# 打开原始表格
wb = openpyxl.load_workbook('原始表格.xlsx')

# 获取所有工作表名称
sheet_names = wb.sheetnames

# 遍历每个工作表
for sheet_name in sheet_names:
    # 打开工作表
    ws = wb[sheet_name]

    # 获取第二行所有单元格
    row2_cells = list(ws.rows)[1]

    # 找到姓名这一列的索引
    name_index = None
    for i, cell in enumerate(row2_cells):
        if cell.value == '姓名':
            name_index = i
            break

    # 如果找到了姓名这一列
    if name_index is not None:
        # 创建一个字典,用于保存每个姓名对应的行内容
        name_rows = {}

        # 遍历除第一行外的所有行
        for row in ws.iter_rows(min_row=2):
            # 获取当前行的姓名单元格
            name_cell = row[name_index]

            # 如果姓名单元格不为空
            if name_cell.value:
                # 获取姓名
                name = name_cell.value

                # 如果是第一次遇到该姓名,创建一个新的工作表
                if name not in name_rows:
                    new_ws = wb.create_sheet(title=name)
                    # 复制原表中的 A1 单元格格式
                    new_ws['A1']._style = ws['A1']._style

                    # 将姓名单元格的格式复制到新工作表的 A1 单元格中
                    new_ws['A1'].font = name_cell.font
                    new_ws['A1'].fill = name_cell.fill
                    new_ws['A1'].border = name_cell.border
                    new_ws['A1'].alignment = name_cell.alignment
                    new_ws['A1'].number_format = name_cell.number_format

                    # 将新工作表添加到字典中
                    name_rows[name] = new_ws

                # 将当前行添加到该姓名对应的工作表中
                name_rows[name].append(row)

        # 删除原始工作表中的内容
        ws.delete_rows(2, ws.max_row)

# 保存修改后的表格
wb.save('拆分后的表格.xlsx')

代码解释:

  1. 导入 openpyxl 库,用于操作 Excel 表格。
  2. 打开原始表格,获取所有工作表名称。
  3. 遍历每个工作表,获取第二行所有单元格,并查找 '姓名' 列的索引。
  4. 如果找到了 '姓名' 列,则创建一个字典,用于保存每个姓名对应的行内容。
  5. 遍历除第一行外的所有行,获取当前行的姓名单元格。
  6. 如果姓名单元格不为空,则获取姓名,并判断是否已存在于字典中。
  7. 如果姓名不存在于字典中,则创建一个新的工作表,命名为该姓名,并将原表格 A1 单元格的格式复制到新表格的 A1 单元格中。
  8. 将当前行添加到该姓名对应的工作表中。
  9. 删除原始工作表中除第一行之外的所有行。
  10. 保存修改后的表格。

使用说明:

  1. 将代码中的 '原始表格.xlsx' 替换为你的原始表格文件路径。
  2. 将代码中的 '拆分后的表格.xlsx' 替换为你的目标表格文件路径。
  3. 确保你的原始表格中第二行包含 '姓名' 列。
  4. 运行代码,即可将原始表格按姓名拆分成多个新表格。

示例:

假设原始表格名为 '原始表格.xlsx',包含以下内容:

| 姓名 | 年龄 | 性别 | |---|---|---| | 张三 | 20 | 男 | | 李四 | 25 | 女 | | 张三 | 30 | 男 | | 王五 | 22 | 男 | | 李四 | 28 | 女 |

运行代码后,将会生成三个新表格:

  • 张三.xlsx:包含张三的所有行。
  • 李四.xlsx:包含李四的所有行。
  • 王五.xlsx:包含王五的所有行。

每个新表格都带有原始表格 A1 单元格的格式。

希望这篇文章能够帮助你使用 Python 代码将 Excel 表格按姓名拆分成多个新表格。

Python Excel 表格拆分:按姓名分组并生成带格式的新表格

原文地址: https://www.cveoy.top/t/topic/ovjG 著作权归作者所有。请勿转载和采集!

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