Openpyxl没有正确地从创建的工作簿中删除工作表

2024-09-30 02:24:56 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我遇到了一个关于openpxyl的问题,我找不到答案。当我运行以下代码时:

import openpyxl

wb = openpyxl.Workbook()
ws = wb.create_sheet("Sheet2")
wb.get_sheet_names()
['Sheet','Sheet2']
wb.remove_sheet('Sheet')     

我得到以下错误:

ValueError: list.remove(x): x not in list

它不起作用,即使我尝试wb.remove_sheet(0)wb.remove_sheet(1),我也会得到相同的错误。我有什么遗漏吗?


Tags: 答案代码importws错误createremovelist
3条回答

remove.sheet()给定的是一个sheet对象,而不是sheet的名称!

为了你的代码你可以试试

wb.remove(wb.get_sheet_by_name(sheet))

同样,remove_sheet也没有给定索引,因为它对实际的sheet对象进行操作。

这里有一个good source的例子(虽然这不是你所面临的问题,但它恰好显示了如何正确调用remove撸sheet方法)!

不推荐警告:调用不推荐的函数get_sheet_by_name(使用wb[sheetname])。

xlsx = Workbook()
xlsx.create_sheet('other name')
xlsx.remove(xlsx['Sheet'])
xlsx.save('some.xlsx')

自从这个问题被发布和回答之后,Openpyxl库就发生了变化。

您不应该使用wb.remove(wb.get_sheet_by_name(sheet)),如@cosinepenguin所示,因为它现在已贬值(尝试使用时会收到警告),但是wb.remove(wb[sheet])

相关问题 更多 >

    热门问题