万能python系列---将excel中的多个sheets批量单独保存为独立的excel文件

一、背景

由于工作做了一个项目,基于项目流程中的很多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中填写需要拆分的文件名称。

四、效果展示

在这里插入图片描述


在这里插入图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值