错误:不支持的格式,或损坏的文件:预期的 BOF 记录

Posted

技术标签:

【中文标题】错误:不支持的格式,或损坏的文件:预期的 BOF 记录【英文标题】:Error: Unsupported format, or corrupt file: Expected BOF record 【发布时间】:2013-05-06 11:29:40 【问题描述】:

我正在尝试打开一个 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'

谢谢

【问题讨论】:

你的 xlrd 版本是什么? 9.2 我相信它是最新的 对我来说,这是一个编码问题,这解决了它:***.com/a/47922247/577652 【参考方案1】:

如果您使用read_excel() 读取.csv,则会收到错误提示

XLRDError:不支持的格式,或损坏的文件:预期的 BOF 记录;

要阅读.csv,需要使用read_csv(),像这样

df1= pd.read_csv("filename.csv")

【讨论】:

谢谢它的工作:) --> df1= pd.read_csv("filename.csv")【参考方案2】:

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

【讨论】:

这三句话为我节省了大量时间和挫折!【参考方案3】:

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

这有两个可能的原因:

    您的 xlrd 版本太旧,不支持读取 xlsx 文件。 XLSX 文件经过加密,因此以 OLE 复合文档格式而不是 zip 格式存储,这使得它在 xlrd 中看起来像是旧格式的 XLS 文件。

仔细检查您实际上使用的是最新版本的 xlrd。打开一个新的 XLSX 文件,其中只有一个单元格中的数据应该可以验证这一点。

但是,我猜您遇到了第二个条件并且文件已加密,因为您在上面声明您已经在使用 xlrd 版本 0.9.2。

如果您明确应用工作簿密码,但如果您使用密码保护某些工作表元素,则会对 XLSX 文件进行加密。因此,即使您不需要密码来打开它,也可以拥有一个加密的 XLSX 文件。

更新:参见@BStew 的第三个更有可能的答案,即文件已被 Excel 打开。

【讨论】:

【参考方案4】:

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

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

【讨论】:

【参考方案5】:

对于今天阅读这篇文章的任何人,以下解决方案实际上对我有所帮助。 https://***.com/a/46214958/9642876

我试图读取的 XLSX 文件是由报告软件创建的,pandas 或 xlrd 都无法读取它,但可以在 Microsoft Excel 中打开它。我以不同的名称重新保存了文件,现在 xlrd 和 pandas 都可以读取该文件了。

如果你只是用相同的名字重新保存它也可能有效,虽然我没有测试过。

【讨论】:

【参考方案6】:

就我而言,有人给了我一个以扩展名“.xls”结尾的 Excel 文件。我尝试用xlrd 解析它,得到了这个错误:

xlrd.biffh.XLRDError: Unsupported format, or corrupt file: Expected BOF record; found "blar blar blar"

工作一段时间后,我发现 .xls 文件实际上是一个文本文件。发件人没有费心创建一个真正的 Excel 二进制文件,而是将“.xls”放入一个文本文件中。

也许值得用文本编辑器打开文件以确保它是 Excel 文件。这本可以为我节省一个小时。

【讨论】:

【参考方案7】:

就我而言,问题在于共享文件夹本身。

案例要点:我在 WIN2012 服务器上有一个共享文件夹,用户在其中删除 .xlsx 文件,然后使用我的 python 脚本将该 xlsx 文件加载到数据库表中。

尽管用户删除了旧文件并放入了要加载的文件,但 BOF 错误一直提到字节字符串和字节字符串中的用户名——xlsx 文件中没有在任何工作表中都有用户名。最重要的是,当我将 .xlsx 复制到一个新创建的文件夹中并运行引用该新文件夹的脚本时,它起作用了。

所以最后,我删除了共享文件夹并意识到有 5 个项目被删除,尽管我和用户只能看到 1 个项目。我认为这归因于我缺乏 Windows 管理技能,但这是罪魁祸首。

【讨论】:

【参考方案8】:

我收到了同样的错误信息。这对我来说看起来很奇怪,因为该脚本适用于另一个文件夹下的 xlsx 文件,并且文件几乎相同。

我仍然不知道为什么会这样。但最后,我将所有 excel 文件复制到另一个文件夹并且脚本工作。如果上述建议都不适合您,可以尝试一个选项...

【讨论】:

【参考方案9】:

当脚本使用的文件也在后台打开时也会发生这种情况。

【讨论】:

以上是关于错误:不支持的格式,或损坏的文件:预期的 BOF 记录的主要内容,如果未能解决你的问题,请参考以下文章

不支持的格式或损坏的文件:预期的 BOF 记录;找到 b'\n\n\n\n\n\n<!'

au为啥加载音频错误

Xcode 5 错误:“格式错误或损坏的 AST 文件:子模块中的伞头不匹配”

致命错误:格式错误或损坏的 AST 文件 - Xcode

在优盘上下载的视频,一体机上放不出来,说是路径不合适咋处理?

Xcode 构建失败并出现“致命错误:格式错误或损坏的 AST 文件”Crashlytics.h