错误:不支持的格式或文件损坏:预期的BOF记录
我正在尝试打开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(文件开始)记录有关。但是,该示例表明您正在尝试读取XLSX文件。
有两个可能的原因:
- 您的xlrd版本过旧,不支持读取xlsx文件。
- XLSX文件是加密的,因此以OLE复合文档格式而不是zip格式存储,从而使其在xlrd中显示为较早的格式XLS文件。
仔细检查您是否实际上正在使用最新版本的xlrd。用一个单元格中的数据打开一个新的XLSX文件应该验证这一点。
但是,我猜您正在遇到第二种情况,并且文件已加密,因为您在上面声明已经使用xlrd 0.9.2版。
如果您显式应用工作簿密码,而且还用密码保护了某些工作表元素,则XLSX文件将被加密。这样,即使您不需要密码也可以打开XLSX加密文件。
更新 :请参阅@BStew的第三个(更有可能的答案)文件是由Excel打开的。