以下是实现该功能的代码:

import os
from openpyxl import load_workbook, Workbook
from openpyxl.utils import get_column_letter

# 设置工作表表头列名称
header_column = '姓名'

# 设置文件夹名称
folder_name = '拆分表格'

# 获取桌面路径
desktop_path = os.path.join(os.path.expanduser('~'), 'Desktop')

# 创建文件夹
folder_path = os.path.join(desktop_path, folder_name)
if not os.path.exists(folder_path):
    os.mkdir(folder_path)

# 加载原始excel文件
filename = '原始表格.xlsx'
wb = load_workbook(filename)

# 获取第一个工作表
ws = wb.active

# 冻结窗格A1列
ws.freeze_panes = 'A2'

# 获取表头列的位置
header_column_index = None
for col in range(1, ws.max_column + 1):
    if ws.cell(row=1, column=col).value == header_column:
        header_column_index = col
        break

# 如果表头列不存在,则退出程序
if header_column_index is None:
    print(f'表头列 {header_column} 不存在!')
    exit()

# 获取表头列中所有不同的值
header_values = set()
for row in range(2, ws.max_row + 1):
    header_value = ws.cell(row=row, column=header_column_index).value
    if header_value is not None:
        header_values.add(header_value)

# 遍历表头列中的每个值,生成新的工作表
for header_value in header_values:
    # 创建新的工作表
    new_wb = Workbook()
    new_ws = new_wb.active

    # 写入窗格A1的内容
    new_ws['A1'].value = ws['A1'].value

    # 写入表头行
    for col in range(1, ws.max_column + 1):
        new_ws.cell(row=2, column=col).value = ws.cell(row=1, column=col).value
        new_ws.cell(row=2, column=col)._style = ws.cell(row=1, column=col)._style

    # 写入符合条件的行
    row_index = 3
    for row in range(2, ws.max_row + 1):
        if ws.cell(row=row, column=header_column_index).value == header_value:
            for col in range(1, ws.max_column + 1):
                new_ws.cell(row=row_index, column=col).value = ws.cell(row=row, column=col).value
                new_ws.cell(row=row_index, column=col)._style = ws.cell(row=row, column=col)._style
            row_index += 1

    # 设置新工作表的名称
    new_ws.title = header_value

    # 保存新的工作表到单独的excel文件
    new_filename = f'{header_value}.xlsx'
    new_filepath = os.path.join(folder_path, new_filename)
    new_wb.save(new_filepath)

# 关闭原始excel文件
wb.close()

使用该代码可以实现拆分表格并生成单独的excel文件。其中,需要将代码中的以下变量设置为实际值:

  • header_column:表头列名称
  • folder_name:文件夹名称
  • filename:原始excel文件名称

在运行代码之后,程序会在桌面上创建一个名为 拆分表格 的文件夹,并在该文件夹下生成多个单独的excel文件,每个文件的名称都是表头列中不同的值。每个excel文件中的工作表都包含原始表格中符合条件的行,并且窗格A1的内容都是原始表格中的内容。

Python3.8 使用 Openpyxl 拆分表格并生成单独 Excel 文件

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

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