以下是实现以上需求的Python代码:

import openpyxl
import os
from openpyxl.utils import get_column_letter

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

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

# 打开Excel文件
file_path = 'example.xlsx'
wb = openpyxl.load_workbook(file_path)

# 获取第一个工作表
ws1 = wb.worksheets[0]

# 冻结窗格
ws1.freeze_panes = 'A2'

# 获取表头列
header_col = 'A'
header_row = 2
header_values = set()
while ws1[header_col + str(header_row)].value:
    header_value = ws1[header_col + str(header_row)].value
    header_values.add(header_value)
    header_row += 1

# 遍历表格,拆分工作表
for header_value in header_values:
    # 创建新的工作表
    ws_new = wb.create_sheet(title=header_value)

    # 写入窗格A1的内容
    ws_new['A1'] = ws1['A1'].value

    # 写入表头
    header_row = 2
    for col in range(1, ws1.max_column + 1):
        col_letter = get_column_letter(col)
        if ws1[col_letter + str(header_row)].value == header_value:
            for row in range(1, ws1.max_row + 1):
                ws_new[col_letter + str(row)] = ws1[col_letter + str(row)].value
                ws_new[col_letter + str(row)].font = ws1[col_letter + str(row)].font
                ws_new[col_letter + str(row)].fill = ws1[col_letter + str(row)].fill
                ws_new[col_letter + str(row)].border = ws1[col_letter + str(row)].border
                ws_new[col_letter + str(row)].alignment = ws1[col_letter + str(row)].alignment

    # 保存新的工作表为单独的Excel文件
    file_name = header_value + '.xlsx'
    file_path = os.path.join(folder_path, file_name)
    wb_new = openpyxl.Workbook()
    wb_new.remove(wb_new.active)
    wb_new.add_sheet(ws_new)
    wb_new.save(file_path)

# 关闭Excel文件
wb.close()

在上述代码中,首先获取桌面路径,并创建一个名为“split_excel”的文件夹,用于保存拆分后的Excel文件。然后打开Excel文件,并获取第一个工作表。接着冻结窗格A1列的内容,并从第二行开始获取表头列中的内容。遍历表格,对于每个表头列中的内容,创建一个新的工作表,并将窗格A1的内容写入到每个新的工作表。然后将表头列中所有相同内容的行带原格式复制到新的工作表中,并保存为单独的Excel文件。最后关闭Excel文件

利用python38版本拆分表格首先获取第一个工作表然后冻结第一个工作表窗格A1列的内容之后从第二行开始获取名称为表头的列将表头列中所有相同内容的行带原格式生成一个新的工作表并带原格式把窗格A1的内容写入到每一个新的工作表新的工作表生成单独的excel文件并以表头列中的内容命名新建一个文件夹保存到桌面中

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

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