将工作薄中的Excel工作表拆分为单独的工作薄

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import xlwings as xw
import os

def split_excel(file_path):
app = xw.App(visible=False, add_book=False)

workbook = app.books.open(file_path)
worksheet = workbook.sheets
for i in worksheet: # 遍历工作簿中所有工作表
new_workbook = app.books.add() # 新建工作簿
new_worksheet = new_workbook.sheets[0] # 选中新建工作簿中的第1张工作表
i.copy(before=new_worksheet) # 将原来工作簿中的当前工作表复制到新建工作簿的第1张工作表之前
new_workbook.sheets[1].delete() #删除空白工作表
new_workbook.save('拆分\{}.xlsx'.format(i.name)) # 保存新工作簿
print('{}.xlsx'.format(i.name) + "拆分完成")
new_workbook.close() # 关闭新工作薄
workbook.close() # 关闭旧工作薄

def find_excel():
path = os.getcwd()
files = os.listdir(path)
if not os.path.exists("拆分"): #检查如果没有“拆分”文件夹
os.mkdir("拆分") #创建“拆分”文件夹
excelfiles = [f for f in files if not f.startswith(("~$")) and f.endswith((".xlsx"))] #过滤当前所有xlsx文件
for file in excelfiles: #遍历所有xlsx文件
fullpath = os.path.join(path,file)
split_excel(fullpath) #对xlsx文件进行拆分

find_excel()