<p>Comme suggéré par <a href="https://stackoverflow.com/users/306182/niels-v">Niels V</a>, essayez d’utiliser le <a href="https://github.com/vgrem/Office365-REST-Python-Client">Office365-REST-Python-Client</a>.</p>
<p>Le client implémente l’API REST SharePoint. Voici un exemple de ce que vous essayez de faire :</p>
<pre><code class="lang-auto">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'
</code></pre>
<p>Cette section est directement tirée du <a href="https://github.com/vgrem/Office365-REST-Python-Client">README.md sur GitHub</a> utilisant l’approche ClientContext et vous authentifie sur votre serveur SharePoint :</p>
<pre><code class="lang-auto">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()
</code></pre>
<p>Si vous souhaitez simplement télécharger le fichier, en utilisant <a href="https://github.com/vgrem/Office365-REST-Python-Client/blob/master/office365/sharepoint/file.py#L53"><code>File.open_binary()</code></a>, il vous suffit de :</p>
<pre><code class="lang-auto">filename = 'filename.xlsx'
with open(filename, 'wb') as output_file:
response = File.open_binary(ctx, relative_url)
output_file.write(response.content)
</code></pre>
<p>Cependant, si vous souhaitez analyser le contenu du fichier, vous pouvez le télécharger en mémoire puis utiliser directement <a href="https://pandas.pydata.org/">Pandas</a> ou l’outil Python de votre choix pour les fichiers ‘.xlsx’ :</p>
<pre><code class="lang-auto">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)
</code></pre>
<p>Vous pouvez aller</p>
<p><em>(Réponse tronquée)</em></p>