AttributeError: 'Sheet'对象没有属性'row_len

1 投票
1 回答
7191 浏览
提问于 2025-04-17 19:04

我正在尝试运行这个脚本,但出现了一个错误:

Traceback (most recent call last):
  File "nimeKoostaja.py", line 19, in <module>
    wb = copy(book)
  File "/usr/local/lib/python2.7/dist-packages/xlutils/copy.py", line 13, in copy
    w
  File "/usr/local/lib/python2.7/dist-packages/xlutils/filter.py", line 827, in process
    reader(chain[0])
  File "/usr/local/lib/python2.7/dist-packages/xlutils/filter.py", line 66, in __call__
    for col_x in xrange(sheet.row_len(row_x)):
AttributeError: 'Sheet' object has no attribute 'row_len'

我使用的是xubuntu 12.10。奇怪的是,在Windows 7上运行同样的代码时就没有这个问题。我不知道哪里出了错。

1 个回答

2

我觉得你正在使用一个旧版本的 xlrd,因为它负责提供工作表。你在 xubuntu 上使用的 xlrd 版本是什么?(或者是 xubuntu?)

使用这个测试程序:

import os
import xlrd
print 'xlrd:   ', xlrd.__VERSION__
import xlwt
print 'xlwt:   ', xlwt.__VERSION__
import xlutils.copy
print 'xlutils:', open(os.path.join(os.path.dirname(
    xlutils.copy.__file__), 'version.txt')).read()


from xlrd import open_workbook, cellname, XL_CELL_TEXT
from xlwt import Workbook
from xlutils.copy import copy

# open fail
book = open_workbook('name.xls')
# make copy
wb = copy(book)

print 'finished'

还有不同版本的 xlrd,我得到了以下输出:

2013-03-14 18:33:30.201494 ['python2.7', 'test.py']
xlrd:    0.9.0
xlwt:    0.7.4
xlutils: 1.5.2

finished

还有

2013-03-14 18:35:40.241518 ['python2.7', 'test.py']
xlrd:    0.7.3
xlwt:    0.7.4
xlutils: 1.5.2

finished

还有

2013-03-14 18:42:06.703188 ['python2.7', 'test.py']
xlrd:    0.6.1
xlwt:    0.7.4
xlutils: 1.5.2

Traceback (most recent call last):
  File "test.py", line 19, in <module>
    wb = copy(book)
  File "/usr/lib/python2.7/dist-packages/xlutils/copy.py", line 13, in copy
    w
  File "/usr/lib/python2.7/dist-packages/xlutils/filter.py", line 827, in process
    reader(chain[0])
  File "/usr/lib/python2.7/dist-packages/xlutils/filter.py", line 66, in __call__
    for col_x in xrange(sheet.row_len(row_x)):
AttributeError: 'Sheet' object has no attribute 'row_len'

撰写回答