gpt4 book ai didi

python - 如何使用工作或学校帐户将 SharePoint Online (Office365) Excel 文件读入 Python,特别是 pandas?

转载 作者:太空宇宙 更新时间:2023-11-04 09:32:32 25 4
gpt4 key购买 nike

问题与下面的链接非常相​​似。 How to read SharePoint Online (Office365) Excel files in Python with Work or School Account?

基本上,我想将一个 excel 文件从 SharePoint 导入到 pandas 中以供进一步分析。

问题是当我运行下面的代码时出现以下错误。

XLRDError: Unsupported format, or corrupt file: Expected BOF record; found b'\r\n<!DOCT'

我的代码:

from office365.runtime.auth.authentication_context import AuthenticationContext
from office365.sharepoint.client_context import ClientContext
from office365.sharepoint.file import File

url = 'https://companyname.sharepoint.com/SitePages/Home.aspx'
username = 'fakeaccount@company.com'
password = 'password!'
relative_url = '/Shared%20Documents/Folder%20Number1/Folder%20Number2/Folder3/Folder%20Number%Four/Target_Excel_File_v4.xlsx?d=w8f97c2341898_random_numbers_and_letters_a065c12cbcsf=1&e=KXoU4s'


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()
#this gives me a KeyError: 'Title'
#print("Web title: {0}".format(web.properties['Title']))
print('Authentication Successful')
else:
print(ctx_auth.get_last_error())


import io
import pandas as pd

response = File.open_binary(ctx, relative_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 file into pandas dataframe
df = pd.read_excel(bytes_file_obj)

print(df)

最佳答案

对于那些在这个问题上像我一样结束的人,我发现必须将完整的 URL 指向 File,而不仅仅是路径:

#import all the libraries
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.sharepoint.com/Shared%20Documents/Folder%20Number1/Folder%20Number2/Folder3/Folder%20Number4/Target_Excel_File_v4.xlsx?cid=_Random_letters_and_numbers-21dbf74c'
username = 'Dumby_account@company.com'
password = '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, sheetname = None)

关于python - 如何使用工作或学校帐户将 SharePoint Online (Office365) Excel 文件读入 Python,特别是 pandas?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55129328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com