【问题标题】:Python Sharepoint API Authentication Successful But Can't Read Excel FilePython Sharepoint API 身份验证成功但无法读取 Excel 文件
【发布时间】:2021-03-15 16:28:47
【问题描述】:

所以基本上对我的共享点的身份验证是成功的,但是 Pandas 无法读取 xlsx 文件(存储为字节对象)。

我得到错误: "ValueError: 文件不是可识别的 excel 文件"

代码:

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

#target url taken from sharepoint and credentials
url = 'https://**[company-name]**-my.sharepoint.com/:x:/p/**[email-prefix]**/EYSZCv_Su0tBkarOa5ggMfsB-5DAB-FY8a0-IKukCIaPOw?e=iW2K6r' # this is just the link you get when clicking "copy link" on sharepoint
username = '...'
password = '...'


ctx_auth = AuthenticationContext(url)
if ctx_auth.acquire_token_for_user(username, password):
  ctx = ClientContext(url, ctx_auth)
  web = ctx.web
  ctx.load(web)
  ctx.execute_query()
  print("Authentication successful")

response = File.open_binary(ctx, url)
#save data to BytesIO stream
bytes_file_obj = io.BytesIO()
bytes_file_obj.write(response.content)
bytes_file_obj.seek(0) #set file object to start

#read excel file and each sheet into pandas dataframe 
df = pd.read_excel(bytes_file_obj)
df

对这里可能出了什么问题有什么想法吗?

【问题讨论】:

    标签: python excel pandas sharepoint sharepoint-api


    【解决方案1】:

    我也遇到了同样的错误(并到达了这个页面)。

    我可以解决这个问题,更改 url 链接。
    使用文件路径(从打开的 excel 文件上的“复制路径”获取),也许它会工作......

    示例:

    url = 'https://**[company-name]**-my.sharepoint.com/personal/**[email-prefix]**/Documents/filename.xlsx?web=1'
    

    【讨论】:

      【解决方案2】:

      Osugi 的上述方法对我有用!为了更加清楚:我必须在实际的 Excel 应用程序中打开 Excel 文件,而不是 OneDrive。我通过单击文件 -> 信息 -> 在桌面应用程序中打开来做到这一点。

      在 Excel 应用程序中,我进入了文件 -> 信息 -> 复制路径。我将该路径粘贴为我的 URL,它起作用了。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-15
      • 2021-08-04
      相关资源
      最近更新 更多