Python-openpyxl-删除列表中的多个选项卡
我是python新手,我正在尝试将一些用于格式化excel文件的VBA转换为python。我有一个包含100个工作表的excel文件,如果工作表不在列表中,我想删除它们。例如,工作簿包含工作表'Sheet1'、'Sheet2'、…'Sheet100'如果所有选项卡不在此列表中,我希望删除这些选项卡['Sheet25'、'Sheet50'、'Sheet75'、'Sheet100'] 我可以使用此代码删除单个工作表:Python-openpyxl-删除列表中的多个选项卡,python,python-3.x,openpyxl,Python,Python 3.x,Openpyxl,我是python新手,我正在尝试将一些用于格式化excel文件的VBA转换为python。我有一个包含100个工作表的excel文件,如果工作表不在列表中,我想删除它们。例如,工作簿包含工作表'Sheet1'、'Sheet2'、…'Sheet100'如果所有选项卡不在此列表中,我希望删除这些选项卡['Sheet25'、'Sheet50'、'Sheet75'、'Sheet100'] 我可以使用此代码删除单个工作表: wb = openpyxl.load_workbook('testdel.xlsx
wb = openpyxl.load_workbook('testdel.xlsx')
delete = wb.get_sheet_by_name('Sheet2')
wb.remove_sheet(delete)
wb.save('testdel2.xlsx')
我试图用这段代码删除多张工作表/和/或一张工作表,但似乎无法正常工作。如果图纸不在列表中,对如何修改以便删除所有图纸有何建议?提前感谢您的帮助
wb = openpyxl.load_workbook('testdel.xlsx')
ws = wb.get_sheet_names()
if ws is not ['Sheet25', 'Sheet50', 'Sheet75', 'Sheet100']:
wb.remove_sheet(ws)
wb.save('testdel2.xlsx')`
问题是您将工作表名称与工作表对象混淆。wb.remove_工作表需要传递给现有工作表。但是,仅使用del wb[sheetName]更容易
问题是您将工作表名称与工作表对象混淆。wb.remove_工作表需要传递给现有工作表。但是,仅使用del wb[sheetName]更容易
wb = openpyxl.load_workbook('testdel.xlsx')
ws = wb.get_sheet_names()
for sheetName in ws:
if sheetName not in ['Sheet25', 'Sheet50', 'Sheet75', 'Sheet100']:
sheetToDelete = wb.get_sheet_by_name(sheetName) // gets the sheet object
wb.remove_sheet(sheetToDelete)
wb.save('testdel2.xlsx')
wb = openpyxl.load_workbook('testdel.xlsx')
keep_sheets = ['Sheet25', 'Sheet50', 'Sheet75', 'Sheet100']
for sheetName in wb.sheetnames:
if sheetName not in keep_sheets:
del wb[sheetName]
wb.save('testdel2.xlsx')