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

Python无法从SharePoint正确下载.xlsx文件求助

解决Python请求Graph API下载SharePoint Excel文件返回XML的问题

问题原因

  • GET请求里带了data=payload参数,虽然是GET请求,但这个参数会让requests给请求附加请求体,不符合HTTP GET规范,Graph API因此返回错误的XML响应,而非目标Excel文件内容。
  • 直接打印response.text会把二进制的Excel文件当作文本解析,要么出现乱码,要么显示那堆错误XML。

修正后的代码

import requests

url = "https://graph.microsoft.com/v1.0/sites/{siteid}/drives/{driveid}/items/{fileid}/content"
headers = {
    'Authorization': f'Bearer {Token}'
}
# GET请求不需要传data参数,直接发送请求
response = requests.get(url, headers=headers)

if response.status_code == 200:
    # 以二进制模式写入文件,保证Excel格式正确
    with open("downloaded_file.xlsx", "wb") as f:
        f.write(response.content)
    print("文件下载成功")
else:
    print(f"请求失败,状态码: {response.status_code}")
    print(response.text)  # 此处可查看具体错误信息

关键注意点

  • 删除data=payload:GET请求不需要请求体,添加该参数会导致请求格式异常,Graph API无法正确识别你的下载意图。
  • 使用response.content获取数据:Excel是二进制文件,response.content会返回原始二进制数据,而response.text会按文本编码解析,必然导致内容异常。
  • 二进制模式保存文件:打开文件时用wb模式,确保二进制数据完整写入,避免文件损坏无法打开。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 23:55:22