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

pandas使用read_excel读取Excel文件时报错:文件不是可识别的Excel文件

pandas读取Excel抛出ValueError: File is not a recognized excel file错误排查方案
  • 验证下载文件完整性
    手动打开input目录下的目标Excel文件,确认是否能正常访问,是否提示文件损坏。你可以用文本编辑器打开体积偏小的报错文件,如果文件开头是<!DOCTYPE html>等HTML标识,说明批量下载环节出错,实际拿到的是SharePoint的权限验证页、跳转页的HTML内容,只是后缀被强行设置为Excel格式,需要先修复download_all_files的下载逻辑,确保请求时带上正确的SharePoint鉴权信息,拿到真实的Excel文件流。

  • 显式指定解析引擎
    不同Excel格式对应的解析引擎不同,高版本xlrd不再支持.xlsx格式,仅支持.xls格式,.xlsx格式需要依赖openpyxl解析。你可以在调用read_excel时显式指定引擎,对应修改代码为:

    # 读取.xlsx格式文件
    df_archivo = pd.read_excel(relative_file_path, engine='openpyxl')
    # 读取老版本.xls格式文件
    # df_archivo = pd.read_excel(relative_file_path, engine='xlrd')
    
  • 过滤非法文件
    检查lista_archivos列表内是否包含非Excel文件,比如SharePoint生成的临时文件(开头带~$前缀)、隐藏文件、子目录路径,你可以在循环读取前加一层过滤逻辑,仅处理合法后缀的Excel文件:

    valid_suffix = ('.xlsx', '.xls', '.xlsm')
    if archivo.startswith('~$') or not archivo.endswith(valid_suffix):
        continue
    
  • 验证文件读取权限与写入状态
    部分情况下download_all_files执行完成后,文件句柄还未被下载逻辑释放,立刻读取会拿到不完整的文件内容。你可以在下载完成后加1-2秒的延迟,或者读取前先校验文件大小:

    import os
    # 小于1KB的文件大概率为无效文件
    if os.path.getsize(local_path) < 1024:
        print(f"无效文件:{local_path}")
        continue
    
  • 升级依赖包
    把pandas、openpyxl、xlrd等相关依赖升级到最新稳定版,旧版本的解析库对部分带特殊格式、特殊编码的Excel文件兼容性较差,升级后即可解决大部分解析异常问题。

内容的提问来源于stack exchange,提问作者B. Guerrero

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 15:15:03