私のコード:
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'"
ファイルが破損しているか、別の形式ではないようです。問題の原因を見つけるのに役立つものはどれも素晴らしいでしょう。
あなたは言う:
ファイルが破損しているか、別の形式ではないようです。
ただし、エラーメッセージに示されているように、ファイルの最初の8バイトは'<table r'
...これは間違いなくExcelではありません.xls
フォーマット。 (誤った).xls
拡張機能を確認してください。
パンダで開いてみてください:
import pandas as pd
data = pd.read_html('filename.xls')
または、他のhtml pythonパーサーを試してください。
これは適切なExcelファイルではありませんが、Excelで読めるHTMLです。
同様の問題があり、バージョンに関連していました。 python端末チェックで:
>> import xlrd
>> xlrd.__VERSION__
'0.9.0'があれば、ほとんどすべてのファイルを開くことができます。 Ubuntuで見つけた'0.6.0'がある場合、最新のExcelファイルに問題がある可能性があります。 Distutils標準を使用して、xlrdの最新バージョンをダウンロードできます。
これは、Excelで開いているときに一部のファイルで発生します。
.xlsファイルをダウンロードし、xlrdライブラリを使用してそれを開くと、同様の問題が見つかりました。次に、.xlsを.xlsxに変換するソリューションを試してみました。詳細は次のとおりです。 xlsをxlsxに変換する方法
それは魅力のように機能し、.xlsを開くのではなく、現在openpyxlライブラリを使用して.xlsxファイルを操作しています。
問題の解決に役立てば幸いです。
私の場合、@ 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)
同じ問題がありました。これらの古いファイルは、タブ区切りファイルのようにフォーマットされています。 _read_table
_;で問題のファイルを開くことができました。すなわちdf = pd.read_table('trouble_maker.xls')
。
私も同じ問題に直面しています。
.xlsファイル自体にあります-Excelファイルのように見えますが、そうではありません。 (Excelから.xlsを開いたときにポップアップが表示されるかどうかを確認してください)
sjmachinが2013年1月19日に https://github.com/python-Excel/xlrd/issues/26 ヘルプからコメントしました。
Xlrdをダウンロードし、テスト用にExcelドキュメント(Excel 2007)を作成したところ、同じエラーが表示されました(メッセージには「found PK\x03\x04\x14\x00\x06\x00」と表示されています)。拡張はxlsxです。古い.xls形式で保存しようとすると、エラーが消えます.....
私もこの問題に遭遇しました。このファイルをExcelで開き、Excel 97-2003などの他の形式として保存し、最終的にこの問題を解決しました。