我不确定是否应该或不应该创建一个新问题,因为接受的答案不起作用。请告知。我只是回答和回答一样的问题吗?以下是同样的问题:
How can I sort excel sheets/tabs in workbook using openpyxl
.我不确定它是否因用户问题(通常是)或OpenPYXL的旧/新版本而无法工作。
这是我的代码:
from openpyxl import Workbook
wb = Workbook()
ws1 = wb.create_sheet("B")
ws2 = wb.create_sheet("A")
ws3 = wb.create_sheet("C")
ws4 = wb.create_sheet("D")
wb._sheets = sorted(wb._sheets) #Error comes up at this line
wb.save('test_tabs.xlsx')
我收到以下错误:
TypeError: '<' not supported between instances of 'Worksheet' and 'Worksheet'
因此,我尝试手动排序工作表列表:
>>> type(wb._sheets)
<class 'list'>
>>> wb._sheets
[<Worksheet "Sheet">, <Worksheet "B">, <Worksheet "A">, <Worksheet "C">, <Worksheet "D">]
>>> wb._sheets = [<Worksheet "A">, <Worksheet "B">, <Worksheet "C">, <Worksheet "D">, <Worksheet "Sheet">]
File "<stdin>", line 1
# Manual sort of sheets
wb._sheets = [<Worksheet "A">, <Worksheet "B">, <Worksheet "C">, <Worksheet "D">, <Worksheet "Sheet">]
^
SyntaxError: invalid syntax
我注意到清单上的项目没有
'
或
"
所以我想知道
sort
因此而失败。
为了踢,我试着增加
’
到列表项:
wb._sheets = ['<Worksheet "A">', '<Worksheet "B">', '<Worksheet "C">', '<Worksheet "D">', '<Worksheet "Sheet">']
>>> wb._sheets
['<Worksheet "A">', '<Worksheet "B">', '<Worksheet "C">', '<Worksheet "D">', '<Worksheet "Sheet">']
>>> wb.save('test_tabs2.xlsx')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
....
AttributeError: 'str' object has no attribute 'sheet_state'
>>> openpyxl.__version__
'2.4.1'