【问题标题】:Pandas:XLDR error while reading an xls file from a urlPandas:从 url 读取 xls 文件时出现 XLDR 错误
【发布时间】:2019-03-15 18:15:41
【问题描述】:

我在读取 xls 文件时遇到错误,错误如下所述

**XLRDError: Unsupported format, or corrupt file: Expected BOF record; found b'\x08jstanle'**

我尝试了各种解决方案,但最终没有运气其他工具,如 xlrd、pyexcel,但仍然面临这个错误。希望有人有解决这个问题的方法。我还尝试使用 pythons io 库将其作为原始文件读取但问题是文件中有多个工作表需要维护顺序

提前致谢 祝您身体健康

【问题讨论】:

  • 你能展示你写的从url获取的代码吗?
  • 代码很复杂,我正在使用 pandas.read_excel(link)
  • 如果您从 excel 查看器中打开它,笔记本会按照您的意愿下载吗?
  • 我什至尝试下载本地文件,但仍然报错
  • 对不起,我的意思是您是否从 Excel 查看器(如 MS Excel 或 Open Office)打开该文件?它可能是密码加密

标签: python pandas data-science pyexcel


【解决方案1】:

这有两个可能的原因:

1).您从源 url 获取的文件不是 与文件扩展名相同的文件格式

2).XLS 文件在您明确应用工作簿时被加密 密码,但如果您使用密码保护某些工作表 元素。因此,甚至可以拥有加密的 XLS 文件 如果您不需要密码即可打开它。

如果您有第一个问题,您有解决方案打开工作簿并将其保存为支持的格式。

file1 = io.open(filename, "r", encoding="utf-8")
data = file1.readlines()
# Creating a workbook object
xldoc = Workbook()
# Adding a sheet to the workbook object
sheet = xldoc.add_sheet("Sheet1", cell_overwrite_ok=True)
# Iterating and saving the data to sheet
for i, row in enumerate(data):
    # Two things are done here
    # Removeing the '\n' which comes while reading the file using io.open
    # Getting the values after splitting using '\t'
    for j, val in enumerate(row.replace('\n', '').split('\t')):
        sheet.write(i, j, val)

# Saving the file as an excel file
xldoc.save('myexcel.xls')

你下载的文件也是 html。使用下面的代码 sn-p 来验证一个文件。

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

【讨论】:

  • 谢谢我尝试了第二个,但 excel 文件包含多张工作表,我无法跟踪它们
  • 测试一个 excel 文件,我认为您正在下载不同格式的文件。使用第二种方法并验证。
猜你喜欢
  • 1970-01-01
  • 2015-05-29
  • 1970-01-01
  • 1970-01-01
  • 2021-02-02
  • 1970-01-01
  • 1970-01-01
  • 2021-03-03
  • 2020-08-14
相关资源
最近更新 更多