python与excel第四节 批量新增、删除工作表

发布于:2024-03-21 ⋅ 阅读:(48) ⋅ 点赞:(0)

在多个工作簿中批量新增工作表

假设,一个文件夹下面有多个excel文件,需要再每个excel文件中增加一个sheet。

例子:

import os
import xlwings as xw
file_path =
'D:\\TEST\\pythonexcel'
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\\pythonexcel'
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'>类型。

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到