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

SharePoint下载XLSB文件格式无效 pandas读取KeyError报错求助

问题核心原因
  • 你犯了最基础的格式不匹配错误:SharePoint上的源文件明确是train_data.xlsx格式,本地保存时硬将后缀改为.xlsb。xlsx是基于ZIP的OOXML开放格式,xlsb是二进制压缩格式,二者内部文件结构完全不同,Excel自然会提示格式/扩展名无效,专门解析xlsb的pyxlsb引擎找不到xlsb专属的xl/_rels/workbook.bin.rels结构报KeyError也是必然结果。
  • 额外存在一个高概率隐性问题:SharePoint的文件接口在鉴权失效、权限不足时,哪怕返回200状态码,响应体也经常是登录跳转页/权限提示页的HTML内容,根本不是真实的文件二进制流,这种情况下哪怕后缀改对了也打不开文件。
修复步骤
  1. 修正保存路径的文件后缀,和源文件格式保持一致,不要手动篡改后缀:
    # 把原来的xlsb后缀改成和源文件一致的xlsx
    download_file_path = ROOT_DIR / "download_test.xlsx"
    
  2. 增加文件有效性校验,避免下载到无效的HTML内容:
    with open(download_file_path, "wb") as local_file:
        local_file.write(response.content)
    
    # xlsx本质是zip压缩包,文件头固定为PK开头,校验不通过就说明下载内容不对
    with open(download_file_path, "rb") as f:
        if f.read(4) != b'PK\x03\x04':
            raise RuntimeError("下载内容不是有效Excel文件,请检查ctx上下文的登录凭据是否有效、当前账号对目标文件是否有读取权限")
    
  3. 读取文件时使用匹配xlsx格式的解析引擎,不要用xlsb专属的pyxlsb:
    先安装openpyxl依赖:pip install openpyxl,之后读取代码改为:
    import pandas as pd
    df = pd.read_excel("download_test.xlsx", engine="openpyxl")
    
    如果你确实需要使用xlsb格式,先确保xlsx文件可以正常下载、本地用Excel能正常打开后,手动在Excel内执行「另存为」选择xlsb格式保存,再用pyxlsb读取即可,直接改文件后缀没有任何格式转换的作用。
避坑提示
  • 不要默认接口返回200状态码就代表请求成功,针对SharePoint这类企业级系统的文件接口,一定要校验返回内容的实际格式。
  • Excel不同格式对应的解析引擎完全不通用,不要混用:
    • xlsx/xlsm格式:用openpyxl引擎
    • xlsb二进制格式:用pyxlsb引擎
    • 旧版xls格式:用低版本xlrd==1.2.0引擎

内容的提问来源于stack exchange,提问作者matt.aurelio

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 23:27:17