Comment lire des fichiers Excel SharePoint Online (Office 365) en Python avec un compte professionnel ou scolaire ?

Comment lire des fichiers Excel SharePoint Online (Office 365) en Python avec un compte professionnel ou scolaire ?

Comme suggéré par Niels V, essayez d’utiliser le Office365-REST-Python-Client.

Le client implémente l’API REST SharePoint. Voici un exemple de ce que vous essayez de faire :

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

url = 'https://yoursharepointsite.com/sites/documentsite'
username = 'yourusername'
password = 'yourpassword'
relative_url = '/sites/documentsite/Documents/filename.xlsx'

Cette section est directement tirée du README.md sur GitHub utilisant l’approche ClientContext et vous authentifie sur votre serveur SharePoint :

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 "Web title: {0}".format(web.properties['Title'])

else:
  print ctx_auth.get_last_error()

Si vous souhaitez simplement télécharger le fichier, en utilisant File.open_binary(), il vous suffit de :

filename = 'filename.xlsx'
with open(filename, 'wb') as output_file:
    response = File.open_binary(ctx, relative_url)
    output_file.write(response.content)

Cependant, si vous souhaitez analyser le contenu du fichier, vous pouvez le télécharger en mémoire puis utiliser directement Pandas ou l’outil Python de votre choix pour les fichiers ‘.xlsx’ :

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)

Vous pouvez aller

(Réponse tronquée)