web-dev-qa-db-ja.com

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'"

ファイルが破損しているか、別の形式ではないようです。問題の原因を見つけるのに役立つものはどれも素晴らしいでしょう。

24
wDroter

あなたは言う:

ファイルが破損しているか、別の形式ではないようです。

ただし、エラーメッセージに示されているように、ファイルの最初の8バイトは'<table r' ...これは間違いなくExcelではありません.xls フォーマット。 (誤った).xls拡張機能を確認してください。

28
John Machin

パンダで開いてみてください:

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

または、他のhtml pythonパーサーを試してください。

これは適切なExcelファイルではありませんが、Excelで読めるHTMLです。

17
foebu

同様の問題があり、バージョンに関連していました。 python端末チェックで:

>> import xlrd
>> xlrd.__VERSION__

'0.9.0'があれば、ほとんどすべてのファイルを開くことができます。 Ubuntuで見つけた'0.6.0'がある場合、最新のExcelファイルに問題がある可能性があります。 Distutils標準を使用して、xlrdの最新バージョンをダウンロードできます。

8
Silveira Neto

これは、Excelで開いているときに一部のファイルで発生します。

6
user1479095

.xlsファイルをダウンロードし、xlrdライブラリを使用してそれを開くと、同様の問題が見つかりました。次に、.xlsを.xlsxに変換するソリューションを試してみました。詳細は次のとおりです。 xlsをxlsxに変換する方法

それは魅力のように機能し、.xlsを開くのではなく、現在openpyxlライブラリを使用して.xlsxファイルを操作しています。

問題の解決に役立てば幸いです。

4
Ira Noviani

私の場合、@ john-machinが示唆したようにテキストエディターでファイルを開いた後、Excelファイルが想定されているようにファイルが暗号化されていないことに気づきましたが、CSV形式であり、Excelファイルとして保存されました。私がしたことは、ファイルとその拡張子の名前を変更し、代わりにread_csv関数を使用したことです。

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

同じ問題がありました。これらの古いファイルは、タブ区切りファイルのようにフォーマットされています。 _read_table_;で問題のファイルを開くことができました。すなわちdf = pd.read_table('trouble_maker.xls')

0
mbauer

私も同じ問題に直面しています。

.xlsファイル自体にあります-Excelファイルのように見えますが、そうではありません。 (Excelから.xlsを開いたときにポップアップが表示されるかどうかを確認してください)

sjmachinが2013年1月19日に https://github.com/python-Excel/xlrd/issues/26 ヘルプからコメントしました。

0
Mark K

Xlrdをダウンロードし、テスト用にExcelドキュメント(Excel 2007)を作成したところ、同じエラーが表示されました(メッセージには「found PK\x03\x04\x14\x00\x06\x00」と表示されています)。拡張はxlsxです。古い.xls形式で保存しようとすると、エラーが消えます.....

0
userrenren

私もこの問題に遭遇しました。このファイルをExcelで開き、Excel 97-2003などの他の形式として保存し、最終的にこの問題を解決しました。

0
TruelyBob