Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Openpyxl未正确从创建的工作簿中删除工作表_Python_Openpyxl - Fatal编程技术网

Python Openpyxl未正确从创建的工作簿中删除工作表

Python Openpyxl未正确从创建的工作簿中删除工作表,python,openpyxl,Python,Openpyxl,因此,我遇到了openpxyl的remove_sheet()问题,我找不到答案。当我运行以下代码时: 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 它不起

因此,我遇到了openpxyl的
remove_sheet()
问题,我找不到答案。当我运行以下代码时:

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\u sheet(0)
wb.remove\u sheet(1)
,我也会得到相同的错误。是否缺少某些内容?

remove.sheet()
提供了一个sheet对象,而不是sheet的名称

所以你可以试试你的代码

wb.remove(wb.get_sheet_by_name(sheet))
同样,remove_sheet也不提供索引,因为它对实际的sheet对象进行操作


下面是一些示例(虽然这与您面临的问题不同,但它正好展示了如何正确调用remove_sheet方法)

如果您使用
按姓名获取工作表
,您将获得以下信息:

弃用警告
:调用弃用函数
按名称获取工作表
(使用
wb[sheetname]

因此,解决办法是:

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

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

您不应该使用所指示的
wb.remove(wb.get\u sheet\u by\u name(sheet))
,因为它现在已贬值(尝试使用时会收到警告),而是在python 3.7中使用
wb.remove(wb[sheet])

 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是索引表“表”

你可以