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

使用Python pandas读取SharePoint Excel遇XLRDError及路径问题求助

问题原因

你遇到的XLRDError本质是传入的路径对应的返回内容是SharePoint的前端网页(HTML格式),不是实际的Excel二进制文件,所以pandas调用xlrd解析时识别不到Excel的文件头。你当前拿到的https://company.sharepoint.com/sites/site/Shared%20Documents/Forms/AllItems.aspx是文档库的列表页链接,不是单个文件的直链。

正确SharePoint文件路径获取步骤
  • 打开目标Excel文件所在的SharePoint站点文档库,找到你要读取的文件
  • 右键点击该文件,选择「复制链接」选项
  • 在弹出的权限设置弹窗中,选择符合你账号访问权限的范围(通常选「组织内人员可查看」即可),点击复制得到完整链接
  • 清理链接冗余参数:删除链接末尾的?web=1这类强制跳转网页版的参数,最终保留的格式应为https://company.sharepoint.com/sites/你的站点名/Shared%20Documents/子文件夹路径/目标文件名.xlsx,不要保留包含Forms/AllItems.aspx的文件夹页路径
代码优化说明
  1. 注意pandas版本兼容:新版本pandas中read_excel的工作表参数已从sheetname改为sheet_name,且默认xlrd引擎不再支持xlsx格式,需手动指定engine='openpyxl'(提前安装openpyxl:pip install openpyxl)
  2. 站点根路径和文件路径要分开:AuthenticationContext传入的是站点根路径,File.open_binary传入的是完整文件路径,避免路径混用导致认证失败

修正后可运行代码

# 导入依赖
from office365.runtime.auth.authentication_context import AuthenticationContext
from office365.sharepoint.client_context import ClientContext
from office365.sharepoint.files.file import File 
import io
import pandas as pd

# 配置参数:站点根路径、完整文件路径、账号密码
site_url = "https://company.sharepoint.com/sites/你的站点名/"
file_url = "https://company.sharepoint.com/sites/你的站点名/Shared%20Documents/文件夹路径/目标文件.xlsx"
username = "你的工作账号@company.com"
password = "你的账号密码"

# 认证
ctx_auth = AuthenticationContext(site_url)
if ctx_auth.acquire_token_for_user(username, password):
    ctx = ClientContext(site_url, ctx_auth)
    ctx.load(ctx.web)
    ctx.execute_query()
    print("认证成功")

# 读取文件二进制内容
response = File.open_binary(ctx, file_url)

# 转成BytesIO后用pandas读取
bytes_file = io.BytesIO(response.content)
bytes_file.seek(0)
# 读取所有工作表,指定openpyxl引擎适配xlsx格式
df_dict = pd.read_excel(bytes_file, sheet_name=None, engine="openpyxl")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:48:02