workbook = openpyxl.load_workbook('5-30删减—送检表.xlsx') for sheet in workbook.sheetnames: # print(sheet) worksheet = workbook[sheet] # print(worksheet) if 'YXD21' not in worksheet: print(worksheet) workbook.remove(worksheet) # exit() workbook.save('sheet.xlsx') print("完成") 报错IndexError: At least one sheet must be visible
时间: 2023-12-25 11:03:58 浏览: 164
mirrors-sheetjs-js-xlsx-master.zip
你可以通过设置 sheet 的 `sheet_state` 属性来解决这个问题。将 sheet_state 设置为 'hidden' 即可隐藏 sheet 表,而不会导致 `IndexError` 异常。以下是修改后的代码示例:
```python
import openpyxl
# 打开 Excel 文件
workbook = openpyxl.load_workbook('5-30删减—送检表.xlsx')
# 遍历 sheet 表
for sheet_name in workbook.sheetnames:
worksheet = workbook[sheet_name]
if 'YXD21' not in sheet_name:
worksheet.sheet_state = 'hidden' # 隐藏 sheet 表
else:
worksheet.sheet_state = 'visible' # 显示 sheet 表
# 保存 Excel 文件
workbook.save('output.xlsx')
print("完成")
```
在这个示例中,我们先遍历了 Excel 文件中所有的 sheet 表。如果 sheet 表的名称不包含 'YXD21',就将其隐藏;否则将其设置为可见。最后保存 Excel 文件并输出 '完成'。注意,我们使用 `sheet_state` 属性来设置 sheet 的状态,而不是直接删除 sheet 表,这样就不会导致 `IndexError` 异常。
阅读全文