You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python Pandas打开旧版XLS文件遇阻,求解决方案

解决方法

问题本质:你下载的文件并非真正的Excel 97-2003(XLS)格式,而是披着.xls后缀的HTML表格文件(从错误信息里的b'\xef\xbb\xbf\xef\xbb\xbf<?'可以看出,这是带重复BOM头的文本格式内容,属于HTML/XML结构)。

正确处理代码

直接使用pandas的read_html方法读取(该方法支持读取HTML表格,不管文件后缀是什么):

读取本地文件

import pandas as pd

file_path = "C:/temp/a_file.xls"
# 读取文件中的所有HTML表格,返回DataFrame列表
dfs = pd.read_html(file_path)

# 遍历输出每个表格
for table_index, df in enumerate(dfs):
    print(f"第{table_index+1}个表格:")
    print(df.head())
    # 如需保存为Excel,可执行 df.to_excel(f"table_{table_index+1}.xlsx")

直接读取在线链接

如果无需下载到本地,也可以直接读取URL:

import pandas as pd

url = "https://www.ishares.com/us/products/239566/ishares-iboxx-investment-grade-corporate-bond-etf/1521942788811.ajax?fileType=xls&fileName=iShares-iBoxx--Investment-Grade-Corporate-Bond-ETF_fund&dataType=fund"
dfs = pd.read_html(url)

for table_index, df in enumerate(dfs):
    print(f"第{table_index+1}个表格:")
    print(df.head())

为什么之前的方法失败

  • xlrd引擎仅支持老式二进制XLS格式,该文件是文本HTML,缺少XLS文件必需的BOF(文件起始)标记,因此报错。
  • openpyxl引擎用于处理XLSX格式(基于ZIP压缩的XML结构),该文件不是ZIP包,所以触发BadZipFile错误。

内容的提问来源于stack exchange,提问作者xymzh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 08:07:21