批量重命名多个工作簿的名称
import os
file_path = 'D:\\TEST\\python与excel'
file_list = os.listdir(file_path)
# 给出工作簿名中包含的需要替换的旧关键字和新关键字
old_book_name = '订单'
new_book_name = '产品'
print('修改前名称:',file_list)
for i in file_list:
# windows系统中临时文件名的开头是“~$”,判断是否有文件名以“~$”开头的临时文件
if i.startswith('~$'):
continue
# 执行查找和替换,生成新的工作簿名
new_file = i.replace(old_book_name,new_book_name)
# os.path.join(路径或文件夹名,[路径或文件夹名或文件名[,...]])是os模块中的函数,用于把文件夹名和文件名拼接成一个完整路径
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)
注意:
不能用file_list获得修改的名称,因为修改后的文件名并没有被取出来,需要用os.listdir()方法重新获得。
print('修改前名称:',file_list)
批量重命名多个工作簿中多个同名工作表
假设这样一种情况,一个文件夹下面有多个excel文件,每个excel文件中有多个sheet,在不同的excel中存在同名sheet,需要把这些同名的sheet进行批量修改。
例子:
import os
import xlwings as xw
file_path = 'D:\\TEST\\python与excel'
file_list = os.listdir(file_path)
old_sheet_name = 'Sheet1'
new_sheet_name = '订单信息'
app = xw.App(visible=False,add_book=False)
# 第一次循环excel文件
for i in file_list:
# 排除临时文件
if i.startswith('~$'):
continue
old_file_path = os.path.join(file_path,i)
workbook = app.books.open(old_file_path)
# 第二次循环excel中sheet
for j in workbook.sheets:
if j.name == old_sheet_name:
j.name = new_sheet_name
workbook.save()
app.quit()
上面例子中,需要先获得路径下面所有excel文件,循环这些excel文件,在每个循环中再循环读取每个sheet,找出符合条件的sheet进行重命名。