目录
一、使用Python批量处理工作簿和工作表)
案例01 批量新建并保存工作簿
## 批量新建并保存工作簿import xlwingsas xw# 启动excelc程序,但不新建工作簿
app= xw.App(visible=True, add_book=False)for iinrange(6):
workbook= app.books.add()#新建工作簿
workbook.save(f'path')## 批量新建并关闭工作簿import xlwingsas xw
app= xw.App(visible=True, add_book=False)for iinrange(6):
workbook= app.books.add()
workbook.save(f'path')
workbook.close()# 关闭当前工作簿
app.quit()
案例02 批量打开一个文件夹下的所有工作簿
import osimport xlwingsas xw
file_path='path'#工作簿所在的文件夹路径
file_list= os.listdir(file_path)# 列出路径下所有文件和子文件夹的名称
app= xw.App(visible=True, add_book=False)# 启动Excel程序for iin file_list:#splitext()函数是用来分离文件主名和扩展名的if os.path.splitext(i)[1]=='.xlsx':#判断文件夹下扩展名是否为xlsx;
app.books.open(file_path+'\\'+ i)# 打开工作簿
案例03 批量重命名一个工作簿中的所有工作表
import xlwingsas xw
app= xw.App(visible=False, add_book=False)
workbook= app.books.open('path')# 打开工作簿
worksheets= workbook.sheets# 获取工作簿中所有工作表for iinrange(len(worksheets)):# 遍历获取到的工作表
worksheets[i].name= worksheets[i].name.replace('old','new')# 重新命名
workbook.save('path')# 另存工作簿
app.quit()# 退出Excel程序
案例04 批量重命名工作簿
4.1、批量重命名多个工作簿
import os
file_path='path'# 给出待重命名工作簿所在文件夹的路径
file_list= os.listdir(file_path)#列出文件夹下所有的文件以及子文件夹的名称
old_book_name='old'# 工作簿中需要替换的关键字
new_book_name='new'# 工作簿中需要替换为的新关键字for iin file_list:if i.startswith('~$'):# 判断是否有文件名为“~$”开头的临时文件并跳过continue
new_file= i.replace(old_book_name, new_book_name)#执行查找和替换,生成新的工作簿
old_file_path= os.path.join(file_path, i)# 构造需要重命名工作簿的完整路径
new_file_path= os.path.join(file_path, new_file)# 构造重命名后工作簿的完整路径
os.rename(old_file_path, new_file_path)#执行重命名
4.2、批量重命名多个工作簿中的同名工作表
import osimport xlwingsas xw
file_path='path'
file_list= os.listdir(file_path)
old_sheet_name='Sheet1'# 给出需要修改的工作表名
new_sheet_name='员工信息'# 列出修改后的工作表名
app= xw.App(visible=False, add_book=False)# 启动excel程序for iin file_list:if i.startswith('~$'):continue
old_file_path= os.path.join(file_path, i)
workbook= app.books.open(old_file_path)#打开工作簿for jin workbook.sheets:# 遍历工作簿里面的工作表if j.name== old_sheet_name:# 判断工作表名是否为sheet1
j.name= new_sheet_name# 如果是则重命名
workbook.save()# 保存工作簿
app.quit()# 退出程序
案例05 在多个工作簿中批量新增、删除工作表
5.1、在多个工作簿中批量新增工作表
import osimport xlwingsas xw
file_path='path'# 要新增工作表的工作簿所在的文件夹路径
file_list= os.listdir(file_path)# 列出文件夹下的所有文件名和子文件夹的名称
sheet_name='new_sheet'#要新增的工作表的名称
app= xw.App(visible=False, add_book=False)# 启动excel程序for iin file_list:if i.startswith('~$'):continue
file_paths= os.path.join(file_path, i)# 构造需要新增工作表的工作簿下的文件路径
workbook= app.books.open(file_paths)# 打开工作簿
sheet_names=[j.namefor jin workbook.sheets]# 获取工作簿中工作表的名称if sheet_namenotin sheet_names:# 判断是否已存在要新增的工作表名称
workbook.sheets.add(sheet_name)# 不存在,则新增
workbook.save()# 保存工作簿
app.quit()# 退出excel程序
5.2、在多个工作簿中批量删除工作表
import osimport xlwingsas xw
file_path='path'
file_list= os.listdir(file_path)
sheet_name='delete_sheetname'# 给出要删除的工作簿名称
app= xw.App(visible=False, add_book=False)for iin file_list:if i.startswith('~$'):continue
file_paths= os.path.join(file_path, i)
workbook= app.books.open(file_paths)for jin workbook.sheets:if j.name== sheet_name:
j.delete()break
workbook.save()
app.quit()
案例06 批量打印工作簿
批量打印多个工作簿中的指定工作表
import osimport xlwingsas xw
file_path='path'
file_list= os.listdir(file_path)
sheet_name='printout_sheetname'# 要打印的工作表名称
app= xw.App(visible=False, add_book=False)for iin file_list:if i.startswith('~$'):continue
file_paths= os.path.join(file_path, i)
workbook= app.books.open(file_paths)# workbook.api.PrintOut() #打印工作簿for jin workbook.sheets:if j.name== sheet_name:
j.api.PrintOut()# 如果存在,则打印该工作表break
app.quit()
案例07 将一个工作簿的所有工作表批量复制到其他工作簿
7.1、将一个工作簿的所有工作表批量复制到其他工作簿
import osimport xlwingsas xw
app= xw.App(visible=False, add_book=False)
file_path='path'#给出目标工作簿所在的文件夹路径
file_list= os.listdir(file_path)
workbook= app.books.open('e:\\table\\信息表.xlsx')# 打开来源工作簿
worksheet= workbook.sheets# 获取来源工作簿的所有工作表for iin file_list:if os.path.splitext(i)[1]=='.xlsx':#判断文件是否是工作簿
workbooks= app.books.open(file_path+'\\'+ i)# 打开目标工作簿for jin worksheet:
contents= j.range('A1').expand('table').value# 读取来源工作簿中复制的工作表名称
name= j.name# 获取来源工作簿中新增同名工作表
workbooks.sheets.add(name= name, after=len(workbooks.sheets))# 在目标工作簿中新增同名工作表
workbooks.sheets[name].range('A1').value= contents# 将从来源工作簿中读取的工作表数据写入新增工作表中
workbooks.save()# 保存目标工作簿
app.quit()# 退出excel程序
7.2、将指定工作表的数据批量复制到其他工作簿的指定工作表中
import osimport xlwingsas xw
app= xw.App(visible=False, add_book=False)
file_path='e:\\table\\销售表1'
file_list= os.listdir(file_path)
workbook= app.books.open('e:\\table\\新增产品表.xlsx')
worksheet= workbook.sheets['新增产品']
value= worksheet.range('A1').expand('table')
start_cell=(2,1)
end_cell=(value.shape[0], value.shape[1])
cell_area= worksheet.range(start_cell, end_cell).valuefor iin file_list:if os.path.splitext(i)[1]=='.xlsx':try:
workbooks= xw.Book(file_path+'\\'+ i)
sheet= workbooks.sheets['产品分类表']
scope= sheet.range('A1').expand()
sheet.range(scope.shape[0]+1,1).value= cell_area
workbooks.save()finally:
workbooks.close()
workbook.close()
app.quit()
案例08 按条件将一个工作表拆分为多个工作簿
案例09 批量合并多个工作簿中的同名工作表
未完