2013-05-12 12 views
7

xlsxファイルを開き、その内容を印刷しようとしています。私は、このエラーに実行し続ける:エラー:サポートされていない形式、または破損したファイル:予想されるBOFレコード

import xlrd 
book = xlrd.open_workbook("file.xlsx") 
print "The number of worksheets is", book.nsheets 
print "Worksheet name(s):", book.sheet_names() 
print 

sh = book.sheet_by_index(0) 

print sh.name, sh.nrows, sh.ncols 
print 

print "Cell D30 is", sh.cell_value(rowx=29, colx=3) 
print 

for rx in range(5): 
    print sh.row(rx) 
    print 

それは、このエラーにエラーメッセージがXLSファイルのBOF(ファイルの先頭)レコードに関連

raise XLRDError('Unsupported format, or corrupt file: ' + msg) 
xlrd.biffh.XLRDError: Unsupported format, or corrupt file: Expected BOF record; found '\xff\xfeT\x00i\x00m\x00' 

おかげ

+0

xlrdのバージョンは何ですか? –

+0

9.2私はその最新のものを信じています – user2353003

答えて

8

を出力します。ただし、この例は、XLSXファイルを読み取ろうとしていることを示しています。

このため2つの考えられる理由があります:

  1. はxlrdのバージョンが古いと読書のxlsxファイルをサポートしていません。
  2. XLSXファイル暗号化されたため、OLEの複合ドキュメント形式ではなく、zip形式で保存され、古い形式のXLSファイルとしてxlrdに見えつつあります。あなたはxlrdの最新バージョンを使用して、実際にある

ダブルチェック。 1つのセルだけのデータで新しいXLSXファイルを開くと、そのことを確認する必要があります。

しかし、私はあなたが第二の条件に遭遇し、ファイルはあなたがそのような状態以来すでにxlrdバージョン0.9.2を使用している暗号化されていることをされていると思います。あなたが明示的に、ブックのパスワードを適用する場合

XLSXファイルが暗号化されているだけでなく、あなたのパスワードは、ワークシートの要素の一部を保護している場合。そのため、たとえパスワードを開く必要がなくても、暗号化されたXLSXファイルを作成することは可能です。

更新:@ BStewの3番目の可能性としては、ファイルがExcelで開いている可能性があります。

10

第3の理由もあります。ファイルが既にExcelで開いている場合。 同じエラーが発生します。

+1

これらの3つの文章は私に非常に多くの時間と欲求不満をもたらしました! –

6

そしておそらく第四の理由は、あなたはcsvファイルを読むためにread_excelを使用しました。 (...私に何が起こったのかThat't)

1

のxlsxファイルが実際にHTMLのときあなたはこのエラーを取得することができます。これを確認するためにテキストエディタで開くことができます。このエラーが出たとき、私はパンダを使って解決しました:

import pandas as pd 
df_list = pd.read_html('filename.xlsx') 
df = pd.DataFrame(df_list[0]) 
関連する問題