一、背景

由于工作做了一个项目,基于项目流程中的很多sheet文件需要单独导出来,想到用python实现批量导出。

二、思路

1、获取excel表中每个sheet的名字;

2、遍历,新建excel将sheet的内容复制到新表中;

3、本地重命名保存;

三、上代码直接撸

from openpyxl import load_workbook

def sheet2excel(path,file_name):
    file_path=path+'/'+file_name
    origin_excel = load_workbook(filename=file_path)  # 读取原excel文件
    origin_sheet_names = origin_excel.sheetnames  # 获取sheet的名称
    print(f'一共有{len(origin_sheet_names)}个sheet,名称分别为:{origin_sheet_names}\n拆分开始')


    if len(origin_sheet_names) > 1:  # 如果sheetnames小于1,报错:该文件不需要拆分

        for j in range(len(origin_sheet_names)):
            wb = load_workbook(filename=file_path)  # 再读取一次文件,由于每次删除后需要保存一次,所以不能与上一次一样
            sheet = wb[origin_sheet_names[j]]
            wb.copy_worksheet(sheet)
            new_filename = origin_sheet_names[j] + '.xlsx'  # 新建一个sheet命名的excel文件
            for i in range(len(origin_sheet_names)):
                sheet1 = wb[origin_sheet_names[i]]
                wb.remove(sheet1)
            new_path = path + "/" + new_filename
            print(new_path)
            wb.save(filename=new_path)
            # 由于使用copy_worksheet后,sheet表名有copy字段,这里做个调整
            new = load_workbook(filename=new_path)
            news = new.active
            news.title = origin_sheet_names[j]
            new.save(filename=new_path)
        print('拆分完成!')
    else:
        raise Exception(f"你的文件只有一个sheet,难道还要拆分吗?你的文件名{file_path}")


if __name__ == '__main__':
    path=r'G:\产品开发推广流程梳理\IPD流程优化'
    file_name='IPD开发流程图0830.xlsx'
    sheet2excel(path,file_name)

只需要在path中填写,文件所在的路径,file_name中填写需要拆分的文件名称。

四、效果展示

在这里插入图片描述


在这里插入图片描述

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐