删除工作表后无法保存工作簿 - openpyxl
Can't save a workbook after deleting sheets - openpyxl
我正在处理 sheet,主要是删除所有 sheet,只删除我需要的那个。我将遍历所有 sheets,并删除对我的任务没有用的 sheets。
删除后,我尝试保存,但出现错误。
File "C:\Users\myUser\Anaconda3\lib\site-packages\openpyxl\workbook\workbook.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")
删除后,我查看了工作簿。它有我正在寻找的 sheet。只是不确定为什么它没有检测到剩余的 1 sheet.
补充一下,excel文件有8个sheet,我要的sheet是第5个sheet.
wb.remove_sheet() 已被官方 documentation 弃用。我还不能发表评论,但是你在使用 wb.remove() 时会遇到同样的错误吗?
对我来说,这适用于 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.active = 0
更新至 2.4.2,最后更改如下:
workbook.py 删除活动 sheet 时正常失败。
我正在处理 sheet,主要是删除所有 sheet,只删除我需要的那个。我将遍历所有 sheets,并删除对我的任务没有用的 sheets。
删除后,我尝试保存,但出现错误。
File "C:\Users\myUser\Anaconda3\lib\site-packages\openpyxl\workbook\workbook.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")
删除后,我查看了工作簿。它有我正在寻找的 sheet。只是不确定为什么它没有检测到剩余的 1 sheet.
补充一下,excel文件有8个sheet,我要的sheet是第5个sheet.
wb.remove_sheet() 已被官方 documentation 弃用。我还不能发表评论,但是你在使用 wb.remove() 时会遇到同样的错误吗?
对我来说,这适用于 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.active = 0
更新至 2.4.2,最后更改如下: workbook.py 删除活动 sheet 时正常失败。