以下是参考代码:

import openpyxl

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

# 循环遍历所有工作表
for ws in wb.worksheets:
    # 冻结窗格
    ws.freeze_panes = 'A3'
    # 筛选第二行
    ws.auto_filter.ref = 'A2:' + str(openpyxl.utils.cell.column_index_from_string(ws.max_column) + 1) + '2'
    # 获取所有姓名
    names = set([cell.value for cell in ws['B'][2:]])
    # 循环生成新表格
    for name in names:
        # 新建表格
        new_ws = wb.create_sheet(title=name)
        # 复制表头
        for col in range(1, ws.max_column + 1):
            new_ws.cell(row=1, column=col, value=ws.cell(row=2, column=col).value)
        # 复制数据
        row_index = 2
        for row in ws.iter_rows(min_row=3, min_col=1):
            if row[1].value == name:
                row_index += 1
                for col in range(1, ws.max_column + 1):
                    new_ws.cell(row=row_index, column=col, value=row[col - 1].value)
        # 冻结窗格
        new_ws.freeze_panes = 'A3'

# 保存新表格
wb.save('拆分后表格.xlsx')

该代码会将所有工作表都进行拆分,拆分后的新表格按照姓名命名,并且带有冻结窗格。如果需要只对某个工作表进行拆分,可以通过修改代码实现

利用python将excel表格拆分成若干个新表首先冻结窗格筛选第二行按照姓名把所有行内容生成新的表格生成的新表格按照筛选的姓名命名并带有窗格

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

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