【问题标题】:Python Xlrd read excel file errorPython Xlrd读取excel文件错误
【发布时间】:2016-01-01 03:15:23
【问题描述】:

我一直在编写 Windows 上的脚本,现在在将平台更改为 Linux/Ubuntu 时遇到了一些问题。在下面的示例中,我只是尝试打印工作表名称,但收到了一些我以前从未见过的错误。这可能是 Xlrd 的问题吗?因为我可以在 Libreoffice 中打开 Excel 文件。

代码:

#!/usr/bin/python
import xlrd

xl_workbook = xlrd.open_workbook('/home/ubuntu/Downloads/usage01.12.2015_31.12.2015.xls')

sheet_names = xl_workbook.sheet_names()
print('Sheet Names', sheet_names)

错误:

    0  5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
   20  4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
   40= 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
   60  4 4 3 2
Traceback (most recent call last):
  File "./forbruk.py", line 4, in <module>
    xl_workbook = xlrd.open_workbook('/home/ubuntu/Downloads/usage01.12.2015_31.12.2015.xls')
  File "/usr/local/lib/python2.7/dist-packages/xlrd-0.9.4-py2.7.egg/xlrd/__init__.py", line 441, in open_workbook
    ragged_rows=ragged_rows,
  File "/usr/local/lib/python2.7/dist-packages/xlrd-0.9.4-py2.7.egg/xlrd/book.py", line 87, in open_workbook_xls
    ragged_rows=ragged_rows,
  File "/usr/local/lib/python2.7/dist-packages/xlrd-0.9.4-py2.7.egg/xlrd/book.py", line 592, in biff2_8_load
    cd.locate_named_stream(UNICODE_LITERAL(qname))
  File "/usr/local/lib/python2.7/dist-packages/xlrd-0.9.4-py2.7.egg/xlrd/compdoc.py", line 390, in locate_named_stream
    d.tot_size, qname, d.DID+6)
  File "/usr/local/lib/python2.7/dist-packages/xlrd-0.9.4-py2.7.egg/xlrd/compdoc.py", line 418, in _locate_stream
    raise CompDocError("%s corruption: seen[%d] == %d" % (qname, s, self.seen[s]))
xlrd.compdoc.CompDocError: Workbook corruption: seen[2] == 4

【问题讨论】:

  • 也许可以尝试使用不同的名称,例如snames,因为sheet_names 是阅读类的一种方法。
  • 您能否尝试打印sheet names by indexprint sheet_names.sheet_by_index(0),但我认为问题出在您的excel文件上。
  • 我只有通过'xl_workbook = xlrd.open_workbook'这一行收到错误。我很困惑,因为我可以毫无问题地在 LibreOffice 中打开 excel 文件。
  • 看起来像是一组损坏的文件,请联系制作者并让他们修复。
  • 或者您可以评论引发错误的行。一定能解决你的问题!

标签: python excel xlrd


【解决方案1】:

如果您需要来自远程服务的数据,这是一个 hack,但在 compdoc.py 中注释掉第 418 行 (raise CompDocError("%s corruption: seen[%d] == %d" % (qname, s, self.seen[s]))) 似乎可以正常工作。

还可以查看此文档source

【讨论】:

  • 那行不通。有趣的是,我可以在 Windows 中使用 Xlrd 读取 excel 文件,但不能在 Ubuntu 中使用 Xlrd。该文件似乎没有任何错误。
  • 我现在不在,你能把你的文件发给我吗?在某处上传并给我链接?
猜你喜欢
  • 2021-02-02
  • 2012-09-24
  • 2021-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-14
  • 2021-05-03
  • 2015-04-09
相关资源
最近更新 更多