IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

écrire dans un Excel sous SharePoint


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 55
    Par défaut écrire dans un Excel sous SharePoint
    Bonjour à tous
    J'utilise ce code pour lire un fichier Excel qui se trouve sous SharePoint, pour le lire, aucun problème le code marche très bien cependant, je souhaiterais aussi le modifier ( ajouter a la fin de la colonne ) et là je bloque un peu, pouvez-vous m'aider ? j’ai essayé plusieurs méthodes ( xlwings, pandas) mais aucun résultat
    Merci pour votre aide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    client_id = "client_id"
    client_secret = "client_secret"
    site_url = "site_url"
    path = '/sites/test/General/test.xlsm'
     
     
     
    from office365.runtime.auth.client_credential import ClientCredential
    from office365.sharepoint.client_context import ClientContext
    from office365.sharepoint.files.file import File
    import io
    import pandas as pd
    import xlwings as xw
    import openpyxl
     
     
     
    credentials = ClientCredential(client_id, client_secret)
    ctx = ClientContext(site_url).with_credentials(credentials)
     
    target_web = ctx.web
    ctx.load(target_web)
    ctx.execute_query()
     
    print("Authentication successful")
     
    response = File.open_binary(ctx, path)
     
    #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
     
     
     
    df = pd.read_excel(bytes_file_obj, sheet_name = 'lolo')
    print(df)
     
     
    # test ecriture
     
    df1 = pd.DataFrame([["AAA", "BBB"]], columns=["Spam", "Egg"])
    with pd.ExcelWriter(bytes_file_obj, mode="a", engine="openpyxl",if_sheet_exists="replace") as writer:
        df1.to_excel(writer, sheet_name="test")
     
    # test ecriture  xlwings
     
    nom = bytes_file_obj
    sheet = xw.Book(nom).sheets("lolo")
    sheet.range(int(1), int(1)).value = "lalallal"

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    L'API a utiliser est Office365 et pour EXCEL, ce sera O365.Excel.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 55
    Par défaut
    Salut,
    J'ai essayé ce code mais je bloque.
    dans le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     excel_file = WorkBook(my_file_instance)
    faut mettre quoi ? j ai essaye " response , response.content..." mais ca doit pas être ca
    bytes_file_obj ??? pas ca non plus



    merci pour ton aide



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    credentials = ClientCredential(client_id, client_secret)
    ctx = ClientContext(site_url).with_credentials(credentials)
     
     
    target_web = ctx.web
    ctx.load(target_web)
    ctx.execute_query()
     
    print("Authentication successful")
     
     
    response = File.open_binary(ctx, path)
     
    #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
     
     
     
     
    # test ecriture 
    # given a File instance that is a xlsx file ...
    excel_file = WorkBook("my_file_instance")  # my_file_instance should be an instance of File.
    ws = excel_file.get_worksheet('lolo')
    cella1 = ws.get_range('A1')
    cella1.values = 35
    cella1.update()

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Je n'ai pas de quoi tester mais j'essaierai my_file_instance = File(ctx, path).
    Et si ça ne marche pas, poser la question dans un forum sharepoint/office365 a défaut de chercher des exemples sur Internet est aussi une piste.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 55
    Par défaut
    RE,
    je relance le sujet car je n'ai toujours pas trouvé de solution (internet / forum ... )

    j ai une erreur avec O365.excel en suivant le conseil de wiztricks ;: my_file_instance = File(ctx, path).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     raise ValueError('This file is not a valid Excel xlsx file.')
    ValueError: This file is not a valid Excel xlsx file.


    j arrive à downloadé et uploadé un fichier mais le problème, comme c'est un fichier partager, si quelqu'un est dessus le upload ne fonctionne pas

    je ne trouve pas aussi la solution d ouvrir simplement le fichier pour ensuite modifier / fermer


    si quelqu'un a une solution ...
    merci

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par vad92 Voir le message
    j ai une erreur avec O365.excel en suivant le conseil de wiztricks ;: my_file_instance = File(ctx, path).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     raise ValueError('This file is not a valid Excel xlsx file.')
    ValueError: This file is not a valid Excel xlsx file.
    Si vous cherchez avec le message d'erreur vous arrivez à ce genre d'article... et un certain nombre de pistes à suivre dans le monde microsoft.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/10/2020, 12h52
  2. [XL-2013] Interroger un fichier Excel sous Sharepoint, sans l'ouvrir !?
    Par Mille-Pattes dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 12/07/2019, 07h48
  3. [SP-2013] Communication Access Excel sous Sharepoint
    Par Alex BI dans le forum SharePoint
    Réponses: 0
    Dernier message: 20/05/2019, 13h47
  4. [XL-2013] Lire et écrire dans un classeur sur sharepoint
    Par Alexisc54 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 14/05/2018, 15h24
  5. fichier excel sous sharepoint
    Par the_djjd dans le forum SharePoint
    Réponses: 5
    Dernier message: 30/04/2009, 21h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo