Excel工作表拆分:如何将多Sheet工作簿拆分为独立文件

发布于 2 个月前·
1 人看过

背景问题

在日常工作中,我们经常会遇到这样的场景:一个Excel文件包含多个工作表(Sheet),需要将每个工作表导出为独立的Excel文件。这种需求通常出现在:
数据分发场景,需要将不同工作表发送给不同的部门
数据整理场景,需要将合并的工作簿拆分为独立文件
批量处理场景,需要对每个工作表进行独立操作

from openpyxl import load_workbook
import os
import shutil


def split_excel_sheets(input_file, output_folder):
    # 创建输出文件夹(如果不存在)
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

    # 加载工作簿
    print(f"正在加载文件: {input_file}")
    wb = load_workbook(input_file)

    # 获取所有工作表名称
    sheet_names = wb.sheetnames

    # 遍历每个工作表
    for sheet_name in sheet_names:
        # 创建输出文件路径
        output_file = os.path.join(output_folder, f"算法课个人档案-{sheet_name}-第三季度更新.xlsx")

        # 复制原始文件
        shutil.copy2(input_file, output_file)

        # 加载新复制的文件
        new_wb = load_workbook(output_file)

        # 获取要保留的工作表
        target_sheet = new_wb[sheet_name]

        # 删除其他所有工作表
        for s in new_wb.sheetnames:
            if s != sheet_name:
                new_wb.remove(new_wb[s])

        # 保存文件
        new_wb.save(output_file)
        print(f"已保存工作表 '{sheet_name}' 到文件: {output_file}")


# 使用示例
if __name__ == "__main__":
    # 输入文件路径
    input_excel = "a/算法课个人档案-AI算法组汇总表-2024第三季度.xlsx"  # 替换为你的Excel文件路径

    # 输出文件夹路径
    output_dir = "b"  # 输出文件夹名称

    # 执行拆分
    split_excel_sheets(input_excel, output_dir)

技术实现要点

使用shutil.copy2复制原始文件
使用openpyxl加载和操作Excel文件
通过删除其他工作表的方式保留目标工作表
保持原始文件的所有格式和功能

python
$ cd ..