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

如何让Pandas读取后缀为xls的Excel XML 2003格式文件?

报错原因

pandas 默认读取.xls文件依赖xlrd库,而xlrd仅支持标准二进制BIFF格式的真实xls文件。你遇到的报错说明当前文件虽后缀为.xls,实际是HTML表格结构(或Excel XML 2003格式),不属于xlrd支持的格式范围,因此触发解析失败。Excel本身兼容性较强,可以自动识别非标准格式的文件内容并正常打开。

直接读取方案(无需提前转换)

你这个报错已经检测到<html前缀,说明文件本质是HTML表格改的后缀,优先用该方案,操作最简单:

  • 直接调用pandas的read_html方法解析即可,示例代码:
import pandas as pd

# 直接传入原文件路径,read_html会自动解析文件内的所有表格
table_list = pd.read_html("你的文件路径.xls")
# 按需取对应下标的表格即可,默认第一个表格下标为0
df = table_list[0]
转换为标准格式后读取的方案

如果需要统一转成标准xls/xlsx格式再处理,可以根据你的运行环境选对应方案:

Windows环境(已安装Excel)

调用Excel的COM接口完成格式转换:

import win32com.client as win32

excel = win32.gencache.EnsureDispatch('Excel.Application')
excel.Visible = False
# 打开源文件
workbook = excel.Workbooks.Open(r"你的源文件绝对路径.xls")
# 另存为标准xlsx,FileFormat=51对应xlsx,56对应标准xls格式
workbook.SaveAs(r"转换后文件存储路径.xlsx", FileFormat=51)
workbook.Close()
excel.Quit()

# 转换完成后正常读取即可
df = pd.read_excel("转换后文件存储路径.xlsx")

跨平台环境(无需安装Excel)

依赖LibreOffice的命令行能力完成转换,支持Windows、Linux、macOS:

import subprocess

# 调用LibreOffice命令行转格式
subprocess.run([
    "libreoffice", "--headless", "--convert-to", "xlsx",
    "你的源文件路径.xls", "--outdir", "转换后文件输出目录"
], check=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:39:03