使用 Python 拆分 Excel 表格并按姓名命名

本示例代码使用 Python 3.0+ 版本,实现将 Excel 表格按姓名拆分成单独的新表格,同时保留原表中窗格行 A1 的内容和格式。

步骤:

  1. 打开 Excel 表格: 使用 openpyxl 库打开原始 Excel 文件。2. 获取所有工作表: 读取所有工作表名称。3. 遍历每个工作表: 逐个处理每个工作表。4. 找到姓名列: 在第二行中找到包含 '姓名' 的列。5. 创建姓名字典: 创建一个字典,用于存储每个姓名对应的行。6. 遍历表格数据: 遍历除第一行外的所有行,根据姓名将数据添加到字典中。7. 生成新表格: 遍历姓名字典,为每个姓名创建一个新的工作表,并将对应的数据复制到新工作表中。8. 复制窗格行 A1: 将原始表格的 A1 单元格内容和格式复制到新表格的 A1 单元格。9. 删除空白行: 删除新表格中的空白行。10. 保存修改后的表格: 将修改后的 Excel 表格保存到新的文件中。

**代码示例:**pythonimport openpyxl

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

获取所有工作表sheets = wb.sheetnames

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

# 获取第二行    row_2 = ws[2]

# 遍历第二行,找到姓名这一列    name_col_index = None    for cell in row_2:        if cell.value == '姓名':            name_col_index = cell.column

# 如果找到了姓名列    if name_col_index:        # 创建一个字典,用于存储每个姓名对应的行        name_rows = {}

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

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

            # 如果姓名在字典中不存在,则创建一个新的列表                if name not in name_rows:                    name_rows[name] = []

            # 把当前行加入姓名对应的列表中                name_rows[name].append(row)

    # 遍历姓名字典,生成新表格        for name, rows in name_rows.items():            # 创建一个新工作表            new_ws = wb.create_sheet(name)

        # 复制窗格行 A1 到新表格            src_cell = ws['A1']            dst_cell = new_ws['A1']            dst_cell.value = src_cell.value            dst_cell.font = src_cell.font            dst_cell.border = src_cell.border            dst_cell.fill = src_cell.fill            dst_cell.number_format = src_cell.number_format            dst_cell.protection = src_cell.protection            dst_cell.alignment = src_cell.alignment

        # 把所有行内容复制到新表格            for i, row in enumerate(rows):                for j, cell in enumerate(row):                    new_ws.cell(row=i+2, column=j+1, value=cell.value)

        # 删除新表格中的空白行            for i in range(len(rows)):                new_ws.delete_rows(i+3)

保存修改后的表格wb.save('修改后的表格.xlsx

Python Excel 拆分工具:按姓名分表格并复制格式

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

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