22

xlsx ファイルを開いて、その内容を印刷しようとしています。私はこのエラーに遭遇し続けます:

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

このエラーを出力します

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'

ありがとう

4

9 に答える 9

21

エラー メッセージは、XLS ファイルの BOF (Beginning of File) レコードに関連しています。ただし、この例は、XLSX ファイルを読み取ろうとしていることを示しています。

これには 2 つの理由が考えられます。

  1. お使いの xlrd のバージョンは古く、xlsx ファイルの読み取りをサポートしていません。
  2. XLSX ファイルは暗号化されているため、zip 形式ではなく OLE Compound Document 形式で保存されるため、xlrd には古い形式の XLS ファイルとして表示されます。

実際に最新バージョンの xlrd を使用していることを再確認してください。1 つのセルにデータを含む新しい XLSX ファイルを開くと、それが確認されます。

ただし、上記ですでに xlrd バージョン 0.9.2 を使用していると述べているため、2 番目の条件が発生しており、ファイルが暗号化されていると推測できます。

XLSX ファイルは、ワークブックのパスワードを明示的に適用すると暗号化されますが、一部のワークシート要素をパスワードで保護すると暗号化されます。そのため、開くのにパスワードが必要ない場合でも、暗号化された XLSX ファイルを持つことができます。

更新:ファイルがExcelで開かれているという@BStewの、3番目の、より可能性の高い回答を参照してください。

于 2013-05-13T09:25:50.397 に答える
8

このエラーは、xlsx ファイルが実際には html である場合に発生する可能性があります。これを確認するためにテキスト エディタで開くことができます。このエラーが発生したとき、パンダを使用して解決しました:

import pandas as pd
df_list = pd.read_html('filename.xlsx')
df = pd.DataFrame(df_list[0])
于 2017-01-07T17:04:04.680 に答える