【办公自动化实例】使用python 对excel文件多sheet表进行拆分

一、需求

1 遍历文件夹中的文件,如果excel文件中存在多个sheet,则将这些sheet表拆分处理,分别保存为独立的文件,并存入文件夹中,文件夹名同excel文件名;
2 在文件处理过程中,原表中的格式不能改变。
**** 有个情况:如果表格中有图片,目前带不出来。

二、分析及思路

1、遍历文件夹,筛选出文件为excel 的文件;
2、由于需要带格式拆分,所以不能使用pandas的方法,由于openpyxl模块不能在不同表间使用copy_worksheet的方法,这里采取先在复制需要拆分出来的sheet表,然后再删除原有表中的sheet表。

三、整体代码
from openpyxl import load_workbook
from openpyxl import Workbook
import shutil
import os

for file in os.scandir():
	if file.name.endswith('xlsx'):
		if not os.path.exists(file.name[:-5]):
			os.mkdir(file.name[:-5])

		# 先读取一次文件,获取sheet表的名称
		
		workbook = load_workbook(filename = file)  
		sheetnames = workbook.sheetnames

		if len(sheetnames)>1:
			for j in range(len(sheetnames)):

				# 再读取一次文件,由于每次删除后需要保存一次,所以不能与上一次一样

				wb = load_workbook(filename = file)  
				sheet = wb[sheetnames[j]]
				wb.copy_worksheet(sheet)

				new_filename = sheetnames[j]+'.xlsx'

				for i in range(len(sheetnames)):
					sheet1 = wb[sheetnames[i]]
					wb.remove(sheet1)

				wb.save(filename = new_filename)    

				# 由于使用copy_worksheet后,sheet表名有copy字段,这里做个调整

				new = load_workbook(filename=new_filename)   
				news = new.active
				news.title=sheetnames[j]
				new.save(filename=new_filename)
				path = file.name[:-5]+'\\'+new_filename
				shutil.move(new_filename,path)
四、效果截图

1 拆分前:
在这里插入图片描述

2 拆分后:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值