错误:不支持的格式或损坏的文件:期望的BOFlogging

我想打开一个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' 

谢谢

该错误消息与XLS文件的BOF(文件的开始)logging相关。 但是,该示例显示您正在尝试读取XLSX文件。

有两个可能的原因:

  1. 您的xlrd版本较旧,不支持读取xlsx文件。
  2. XLSX文件被encryption,因此以OLE复合文档格式存储,而不是zip格式,使xlrd看起来像旧格式的XLS文件。

仔细检查你是否使用了最新版本的xlrd。 用一个单元格打开一个新的XLSX文件,应该validation这一点。

但是,我猜你遇到了第二个条件,并且该文件是encryption的,因为你已经使用了xlrd版本0.9.2。

如果您显式应用工作簿密码,而且如果您密码保护一些工作表元素XLSX文件被encryption。 因此,即使您不需要密码来打开它,也可以使用encryption的XLSX文件。

还有第三个原因。 Excel文件已被打开的情况。 它会产生相同的错误。

也许第四个原因,你用read_excel读取一个csv文件。 (这不是发生在我身上…)

当xlsx文件实际上是html时,你可以得到这个错误; 你可以用文本编辑器打开它来validation这一点。 当我得到这个错误,我用pandas解决它:

 import pandas as pd df_list = pd.read_html('filename.xlsx') df = pd.DataFrame(df_list[0])