所以我遇到了remove_sheet()
与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)
,我也会遇到同样的错误。有什么我想念的吗?
答案 0 :(得分:8)
remove.sheet()
被赋予了一个工作表对象,而不是工作表的名称!
因此,对于您的代码,您可以尝试
wb.remove(wb.get_sheet_by_name(sheet))
同样,remove_sheet也没有给出索引,因为它在实际的工作表对象上运行。
这里有good source个例子(虽然它不是你面临的同样问题,但它恰好表明了如何正确调用remove_sheet方法)!
答案 1 :(得分:4)
DeprecationWarning:调用已弃用的函数get_sheet_by_name(使用wb [sheetname])。
xlsx = Workbook()
xlsx.create_sheet('other name')
xlsx.remove(xlsx['Sheet'])
xlsx.save('some.xlsx')
答案 2 :(得分:1)
自从发布并回答了问题以来,Openpyxl库已更改。
您不应该按照@cosinepenguin的指示使用wb.remove(wb.get_sheet_by_name(sheet))
,因为它已经贬值了(尝试使用时会收到警告),但是wb.remove(wb[sheet])
答案 3 :(得分:1)
在python 3.7中
import openpyxl
wb = openpyxl.Workbook()
ws = wb.create_sheet("Sheet2")
n=wb.sheetnames
#sheetname =>get_sheet_names()
wb.remove(wb["Sheet"])
'#or can use'
wb.remove(wb[n[1]])
1是索引表“工作表”