删除工作表后无法保存工作簿 - openpyxl



我正在操作一张纸,主要是删除除我需要的一张以外的所有一张纸。我将遍历所有工作表,并删除对我的任务无用的工作表。

删除后,我尝试保存,但它抛出了一个错误。

File "C:UsersmyUserAnaconda3libsite-packagesopenpyxlworkbookworkbook.py", line 130, in active
return self._sheets[self._active_sheet_index]

这是我的脚本

wb = load_workbook("File.xlsx")
ws1 = wb["Employee Info"]
ws1.freeze_panes = None
ws_active = wb.get_sheet_by_name("Employee Info")
### delete other sheets but Employee Info
for sheet in wb.worksheets:
    if sheet.title != 'Employee Info':
        print("removing " + sheet.title)
        wb.remove_sheet(sheet)
print("remaining sheets:")
for sheet in wb.worksheets:
    print("    " + sheet.title)
### TODO
### loop through the files in a directory
### TODO
### see if readable by ETL 
print("saving the wb")
wb.save("modified.xlsx")

删除后,我检查了工作簿。它有我正在寻找的床单。只是不确定为什么它没有检测到剩余的 1 张纸。

要添加更多详细信息,excel 文件有 8 张纸,我想要的一张纸在第 5 张纸上。

对我来说,

这是使用2.4.2版本:

import openpyxl
workbook = openpyxl.load_workbook('test.xlsx')
for i in workbook.worksheets:
    if i.title != 'Employee Info':
        workbook.remove_sheet(i)
workbook.save('test2.xlsx')

尝试简单一下,看看它是否有效。您还可以使用workbook.sheetnames查看工作表名称:

for sheet in workbook.sheetnames:
    print(sheet)

wb.remove_sheet(( 已从官方文档中弃用。我还不能发表评论,但是在使用wb.remove((时是否遇到相同的错误?

在保存之前,您可以将其用作解决方法:

wb.active = 0

更新到 2.4.2,最后更改如下: workbook.py 删除活动工作表时正常失败。

最新更新