利用Python3.0以上版本将Excel表格拆分成单独的新表,筛选第二行并找到姓名这一列,按照姓名把所有相同姓名的行内容生成新的表格,生成的新表格按照筛选的姓名命名,并且带格式复制原表中的窗格行A1内容

以下是利用openpyxl模块实现的代码:

import openpyxl

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

# 获取所有不同的姓名
names = set()
for row in ws.iter_rows(min_row=2, max_row=2, values_only=True):
    for cell in row:
        if cell.value == '姓名':
            for r in ws.iter_rows(min_row=3, values_only=True):
                names.add(r[cell.column - 1])

# 根据姓名生成新表格
for name in names:
    new_wb = openpyxl.Workbook()
    new_ws = new_wb.active
    new_ws.title = name
    
    # 复制格式
    for row in ws.iter_rows(min_row=1, max_row=2):
        for cell in row:
            new_ws[cell.coordinate]._style = cell._style
    
    # 复制内容
    for row in ws.iter_rows(min_row=3, values_only=True):
        if row[1] == name:
            new_ws.append(row)
    
    # 保存新表格
    new_wb.save(f'{name}.xlsx')

需要注意的是,这个代码只能处理第二行中有且仅有一个'姓名'列的情况。如果有多个列的话,需要根据实际情况修改代码。同时,生成的新表格只复制了第一行和第二行的格式,如果需要复制更多的格式,也需要根据实际情况修改代码。


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

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