gpt4 book ai didi

Python - openpyxl - 删除列表中的多个选项卡

转载 作者:行者123 更新时间:2023-12-02 17:18:37 25 4
gpt4 key购买 nike

我是 python 的新手,我正在尝试将一些用于格式化 excel 文件的 VBA 转换为 python。我有一个包含 100 个工作表的 excel 文件,如果工作表不在列表中,我想删除它们。例如,工作簿包含工作表 'Sheet1'、'Sheet2'、...'Sheet100' 如果它们不在此列表中,我想删除所有选项卡 ['Sheet25'、'Sheet50'、'Sheet75'、'Sheet100 '].

我可以使用此代码删除单个工作表:

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_sheet() 需要传递一个现有的工作表。但是,仅使用 del wb[sheetName]

会更容易
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')

关于Python - openpyxl - 删除列表中的多个选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44701735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com