在多个工作簿中批量新增工作表
假设,一个文件夹下面有多个excel文件,需要再每个excel文件中增加一个sheet。
例子:
import os
import xlwings as xw
file_path = 'D:\\TEST\\python与excel'
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]
print(sheet_names)
if sheet_name not in sheet_names:
workbook.sheets.add(sheet_name)
workbook.save()
app.quit()
上面例子,需要循环路径下面所有excel文件,获得每个excel文件的sheet,判断准备新增的sheet名称是否已经存在在excel文件中,如果没有就新增。
其中,[j.name for j in workbook.sheets] 是一种简化写法,循环读取excel中文件名返回名称组成的列表。workbook.sheets.add(sheet_name) 这个add方法就是在excel文件中增加sheet的方法。
在多个工作簿中批量删除工作表
假设,需要删除一个文件夹下面多个excel文件中的相同sheet名称的sheet。
例子:
import os
import xlwings as xw
file_path = 'D:\\TEST\\python与excel'
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)
for j in workbook.sheets:
if j.name == sheet_name:
j.delete()
break
workbook.save()
app.quit()
上面,同样是双重循环来读取每一个sheet来判断是否是准备删除的sheet名称的sheet,其中j.delete()方法,即sheet对象的delete()方法是用来删除指定sheet的。
在这里j是<class 'xlwings.main.Sheet'>类型。