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

Python读取SharePoint存储Excel报ValueError及URL选用问题排查

Python读取SharePoint平台Excel文件问题解决方案

一、URL选择说明

你获取到的两个URL均不能直接用于代码的文件读取逻辑:

  • 复制得到的文件分享链接是带临时权限参数的跳转入口,并非文件的实际资源地址
  • 浏览器地址栏显示的URL是Excel在线预览的网页地址,指向平台的预览服务页面,不是Excel二进制文件本身

代码中需要按场景使用两类正确路径:

  • 初始化认证上下文、客户端上下文时,传入SharePoint站点根地址,格式参考:https://company.sharepoint.com/sites/project/
  • 调用文件读取接口时,传入文件的服务器相对路径,格式参考:/sites/project/文档库名称/文件夹层级/目标文件.xlsx,该路径可在网页端选中文件后,从详情面板的「路径」字段直接复制。

二、报错根因梳理

你触发ValueError: Excel file format cannot be determined, you must specify an engine manually的核心原因是传入了错误的文件URL,File.open_binary接口没有返回真实的Excel二进制流,而是返回了分享链接对应的HTML跳转页面,pandas无法将网页内容识别为Excel格式。
除此之外现有代码还有两个隐性问题:

  • 未导入io模块,运行到io.BytesIO()时会直接触发NameError
  • 未校验文件接口的返回状态,接口返回权限不足、路径不存在等报错时,无法快速定位问题

三、可运行参考代码

先安装必需依赖:

pip install pandas office365-rest-python-client openpyxl

参考代码:

import io
import pandas as pd
from office365.runtime.auth.authentication_context import AuthenticationContext
from office365.sharepoint.client_context import ClientContext
from office365.sharepoint.files.file import File

# 替换为你的SharePoint站点根地址
SITE_ROOT_URL = "https://company.sharepoint.com/sites/project/"
# 替换为目标Excel文件的服务器相对路径
FILE_RELATIVE_PATH = "/sites/project/Shared Documents/Table.xlsx"
USERNAME = "abc@a.com"
PASSWORD = "abcd"

# 认证逻辑
ctx_auth = AuthenticationContext(SITE_ROOT_URL)
if ctx_auth.acquire_token_for_user(USERNAME, PASSWORD):
    ctx = ClientContext(SITE_ROOT_URL, ctx_auth)
    web = ctx.web
    ctx.load(web)
    ctx.execute_query()
    print(f"认证成功,当前站点:{web.properties['Title']}")
else:
    raise RuntimeError(f"认证失败:{ctx_auth.get_last_error()}")

# 读取文件二进制内容
response = File.open_binary(ctx, FILE_RELATIVE_PATH)
if response.status_code != 200:
    raise RuntimeError(f"文件拉取失败,状态码:{response.status_code},返回内容:{response.text[:200]}")

# 解析Excel
bytes_file = io.BytesIO(response.content)
# xlsx格式显式指定openpyxl引擎,避免格式识别报错
df = pd.read_excel(bytes_file, sheet_name="Sheet2", engine="openpyxl")
print(df.head())

补充说明:如果你的账号开启了多因素认证(MFA),用户名密码认证方式会失效,需要替换为Azure AD应用注册的客户端ID、客户端密钥认证模式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 12:03:25