python xlrd不支持的格式,或损坏的文件。

我的代码:

import xlrd wb = xlrd.open_workbook("Z:\\Data\\Locates\\3.8 locates.xls") sh = wb.sheet_by_index(0) print sh.cell(0,0).value 

错误:

 Traceback (most recent call last): File "Z:\Wilson\tradedStockStatus.py", line 18, in <module> wb = xlrd.open_workbook("Z:\\Data\\Locates\\3.8 locates.xls") File "C:\Python27\lib\site-packages\xlrd\__init__.py", line 429, in open_workbook biff_version = bk.getbof(XL_WORKBOOK_GLOBALS) File "C:\Python27\lib\site-packages\xlrd\__init__.py", line 1545, in getbof bof_error('Expected BOF record; found %r' % self.mem[savpos:savpos+8]) File "C:\Python27\lib\site-packages\xlrd\__init__.py", line 1539, in bof_error raise XLRDError('Unsupported format, or corrupt file: ' + msg) xlrd.biffh.XLRDError: Unsupported format, or corrupt file: Expected BOF record; found '<table r'" 

该文件似乎不被损坏或不同的格式。 任何有助于find问题根源的东西都会很棒。

你说:

该文件似乎不被损坏或不同的格式。

但是,如错误消息所示,该文件的前8个字节是'<table r' …这绝对不是Excel .xls格式。 用一个文本编辑器(例如记事本)打开它,不会注意(不正确的) .xls扩展名并亲自查看。

我有一个类似的问题,这是相关的版本。 在pythonterminal中检查:

 >> import xlrd >> xlrd.__VERSION__ 

如果你有'0.9.0',你可以打开几乎所有的文件。 如果你有我在Ubuntu上find的“0.6.0” ,你可能会遇到最新的Excel文件的问题。 您可以使用Distutils标准下载最新版本的xlrd。

这将发生在一些文件,同时也在Excel中打开。

尝试用pandas来打开它:

 import pandas as pd data=pd.read_html(filename.xls) 

或者尝试任何其他的HTML Pythonparsing器。

这不是一个适当的Excel文件,但一个HTML与Excel可读。

下载.xls文件时发现类似的问题,并使用xlrd库打开它。 然后,我尝试了将.xls转换为.xlsx的解决scheme,如下所示: 如何将xls转换为xlsx

它像一个魅力,而不是打开.xls,我正在使用.xlsx文件现在使用openpyxl库。

希望它有助于解决您的问题。

我刚刚下载了xlrd,创build了一个用于testing的excel文档(excel 2007),并得到了同样的错误(消息说'find了PK \ x03 \ x04 \ x14 \ x00 \ x06 \ x00')。 扩展名是一个xlsx。 试图将其保存为旧的.xls格式,错误消失…..

在我的情况下,用@ john-machinbuild议的文本编辑器打开文件后,我意识到文件没有encryption,因为Excel文件应该是,但它是在CSV格式,并保存为Excel文件。 我所做的是重命名文件及其扩展名,并使用read_csv函数:

 os.rename('sample_file.xls', 'sample_file.csv') csv = pd.read_csv("sample_file.csv", error_bad_lines=False) 

我遇到同样的问题。

它位于.xls文件本身 – 它看起来像一个Excel文件,但它不是。 (看看当你打开Excel中的.xls时是否popup)

sjmachin评论于2013年1月19日从https://github.com/python-excel/xlrd/issues/26帮助&#x3002;

我也遇到过这个问题。我通过excel打开这个文件,并保存为其他格式,如Excel 97-2003,最后我解决了这个问题

你的文件没有问题 xlrd还不支持xlsx(excel 2007+)文件,虽然它声称已经支持了一段时间。

Simplistix github

2天前,他们提交了一个预集成xlsx支持的git版本。 其他论坛build议您使用xlsx文件的DOMparsing器,因为xlsx文件types只是一个包含XML的zip文件。 我没有试过这个。 还有另一个与xlrd具有相似function的软件包,称为openpyxl,您可以从easy_install或pip获取这个软件包。 我还没有尝试过,但是,它的API应该是类似于xlrd。