python:批量处理工作簿和工作表
新建工作簿
import xlwings as xw
#新建并保存工作簿
def demo_Func1():
app=xw.App(visible=True,add_book=False)#启动并不新建工作簿
workbook=app.books.add()#新建工作簿
workbook.save('C:\\Users\\14486\\Desktop\\测试文件\\左\\新建工作簿.xlsx')
workbook.close()#关闭当前工作簿
app.quit()#退出Excel程序
打开工作簿
import xlwings as xw
import os
#打开一个工作夹下所有工作簿
def demo_Func2():
file_path='C:\\Users\\14486\\Desktop\\测试文件\\左'
file_list=os.listdir(file_path) #获取路径下所有文件和文件夹的名称
app = xw.App(visible=True, add_book=False)
for i in file_list:
if os.path.splitext(i)[1]=='.xlsx':
app.books.open(file_path+'\\'+i) #打开工作簿
操作工作簿中的工作表
import xlwings as xw
#批量重命名一个工作簿中的所有工作表
def demo_Func3():
app = xw.App(visible=True, add_book=False)
workbook=app.books.open('C:\\Users\\14486\\Desktop\\测试文件\\左\\新建工作簿.xlsx')
worksheets=workbook.sheets #获取工作簿中所有工作表
for i in range(len(worksheets)):
worksheets[i].name=worksheets[i].name.replace('销售','')
workbook.save('C:\\Users\\14486\\Desktop\\测试文件\\左\\新建工作簿.xlsx')
app.quit()
新增工作表
import xlwings as xw
import os
#在多个工作簿中批量新增工作表
def demo_Func4():
file_path='C:\\Users\\14486\\Desktop\\测试文件\\左'
file_list=os.listdir(file_path)
sheet_name='产品销售区域'#新增的工作表名称
app = xw.App(visible=False, add_book=False)#设置不可见
for i in file_list:
if i.startswith('~$'):
continue
file_paths=os.path.join(file_path,i)#连接两个或更多的路径名组件
workbook=app.books.open(file_paths)
sheet_names=[j.name for j in workbook.sheets]#获取打开工作簿中所有工作表的名称
if sheet_name not in sheet_names:
workbook.sheets.add(sheet_name)
workbook.save()
app.quit()
删除工作表
for j in workbook.sheets:
if j.name==sheet_name:
j.delete()
break
打印工作簿
workbook.api.PrintOut()#打印工作簿


打印工作表
for j in workbook.sheets:
if j.name==sheet_name:
j.api.PrintOut()#打印工作表
break
复制工作簿1中的工作表到工作簿2中
for j in workbook1.sheets:
contents=j.range('A1').expand('table').value#读取来源工作簿中要复制的工作表数据
#expand用于选择扩展范围 默认值是table表示向整个数据表扩展 down向表的下方扩展 right向表的右边扩展
name=j.name#获取来源工作簿中的工作表的名称
workbook2.sheets.add(name=name,after=len(workbook.sheets))#在目标工作簿中新增同名工作表
workbook2.sheets[name].range('A1').value=contents#数据写入
将一个工作表拆分为多个工作表
#将一个工作表拆分为多个工作表
def demo_Func5():
app=xw.App(visible=True,add_book=False)
workbook=app.books.open('C:\\Users\\14486\\Desktop\\测试文件\\左\\新建工作簿.xlsx')
worksheet=workbook.sheets['统计表']
value=worksheet.range('A1').options(pd.DataFrame,header=1,index=False,expand='table').value #读取要拆分的工作表数据
data=value.groupby('产品名称')#将数据按照“产品名称”分组 产品名称x:剩余其它数据
for idx,group in data:
new_worksheet=workbook.sheets.add(idx)#在工作簿中新增工作表并命名为当前的产品名称
new_worksheet['A1'].options(index=False).value=group #将数据添加到新增的工作表
workbook.save()
workbook.close()
app.quit()

浙公网安备 33010602011771号