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 :

utilisation de openpyxl


Sujet :

Python

  1. #1
    Membre confirmé
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Juin 2014
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Juin 2014
    Messages : 219
    Par défaut utilisation de openpyxl
    Bonjour

    Je souhaite utiliser openpyxl pour me servir d'un classeur .xlsx développé par un collègue.

    Le classeur en question fait plusieurs calculs en fonction de valeurs (paramètres) rentrés dans les bonnes cellules et permet d'accéder à plusieurs résultats.

    Connaissant les cellules à paramétrer et les cellules ou se trouvent les résultats recherchés, mon objectif est d'utiliser le classeur pour obtenir mes résultats et les compiler dans autre un classeur.

    Comment faire pour que le classeur excel se mette à jour quand j'ai repli toutes mes cellules avec openpyxl ?
    Je souhaite ne pas modifier le classeur source, juste récupérer les résultats qui m'importent.

  2. #2
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    A ta place, je me dirigerais vers pandas :
    https://moonbooks.org/Articles/Comme...as-en-python-/

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 676
    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 676
    Par défaut
    Salut,

    Citation Envoyé par hary66 Voir le message
    Comment faire pour que le classeur excel se mette à jour quand j'ai repli toutes mes cellules avec openpyxl ?
    Vous ne pouvez pas: openpyxl sait juste écrire et lire des fichiers .xlsx. Il sait lire la formule ou le résultat mais pas le calculer.
    Pour mettre à jour le classeur avec des formules il faut EXCEL ou un équivalent.

    Vous pouvez programmer EXCEL directement via l'interface COM (et la bibliothèque pywin32). Il y a sans doute des bibliothèques "plus adaptées" qui machent une partie du boulot... (mais il faut chercher sur Internet et les évaluer).

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

  4. #4
    Membre confirmé
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Juin 2014
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Juin 2014
    Messages : 219
    Par défaut
    Aie !
    Ca casse un peu mon enthousiasme.


    Et si j'ouvre le classeur en question après avoir renseigné les cellules nécessaires grace à openpyxl.

    Les cellules de résultats du classeur vont bien se mettre à jour, n'est ce pas ?

    Il suffirait donc que je trouve comment lancer l'ouverture du classeur en ligne de commande ; Un truc du genre :
    Le soucis est que je ne trouve que des exemples sous linux !

    Edit ;
    Oui, peut être cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    os.startfile(<absolute path of my file.xlsx>)
    https://stackoverflow.com/questions/...spaces-in-path

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 799
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par hary66 Voir le message
    Et si j'ouvre le classeur en question après avoir renseigné les cellules nécessaires grace à openpyxl.

    Les cellules de résultats du classeur vont bien se mettre à jour, n'est ce pas ?
    Ca se teste. Mais déjà ça dépend déjà de si ton excel est configuré pour mettre à jour les formules automatiquement ou sur ordre.

    Citation Envoyé par hary66 Voir le message
    Il suffirait donc que je trouve comment lancer l'ouverture du classeur en ligne de commande ; Un truc du genre : os.system(ls -l);.

    Oui, peut être cela :
    os.startfile(<absolute path of my file.xlsx>)
    Oui mais avec des guillemets. Et le point-virgule n'est pas obligatoire (on n'est pas en C) => os.system("ls -l"). Et pour ton chemin absolu tu peux utiliser os.path.join().
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Membre confirmé
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Juin 2014
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Juin 2014
    Messages : 219
    Par défaut
    Apparemment ce n'est pas si simple.

    En fait la seule solution pour le moment est d'écrire mes cellules avec openpyxl.
    Ensuite aller ouvrir manuellement le classeur .xlsx pour que les cellules qui contiennent des formules se mettent à jour,
    Sauvegarder,
    puis fermer le classeur.

    Ensuite je peux lire mes cellules calculées avec openpyxl en specifiant : data_only= True
    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
    import os
    import pandas as pd
     
    from openpyxl import Workbook
    from openpyxl import load_workbook
     
    print ('Starting program')
     
    print ('cwd = ' + os.getcwd())
    os.chdir('/home/pi/Documents')
     
    #************USING PANDAS TO READ THE DATAS******
    dest_filename = 'temp.xlsx'
     
    xl = pd.ExcelFile (dest_filename)
    df = xl.parse ('Predim')
    print ('Reading values from Pandas : ')
    print (df)
     
    #************USING OPENPYXL TO READ THE DATAS******
    print ('Reading value with openpyxl (data_only = True)')
    wb = load_workbook(filename = dest_filename, data_only= True)
    ws = wb.active
    print (ws['B1'].value)
    print (ws['B2'].value)
    print (ws['B3'].value)
    print (ws['B4'].value)
    Retour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Starting program
    cwd = /home/pi/Documents
    Reading values from Pandas : 
       Unnamed: 0  -55
    0         NaN  206
    1         NaN  151
    2         NaN -261
    Reading value with openpyxl (data_only ) True)
    -55
    206
    151
    -261
    Mais je n'est pas trouvé dans Pandas comment faire pour exécuter la manipulation que je doit encore faire manuellement (ouverture/sauvegarde/fermeture du .xlsx) pour mettre à jour les cellules calculées.


    Je rapporte ici quelques pistes non testées (pas de machine Windows sous la main).


    https://community.esri.com/t5/python...ile/m-p/353832


    https://stackoverflow.com/questions/...-data/31681419

    http://www.icodeguru.com/WebServer/P...ming-on-Win32/

    https://www.pyxll.com/blog/tools-for...el-and-python/

  7. #7
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 178
    Par défaut
    hello,
    ne pas oublier qu'avec openoffice ou libreoffice on peut directement utiliser des macros en python dans des classeurs excel.
    Ami calmant, J.P

  8. #8
    Membre confirmé
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Juin 2014
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Juin 2014
    Messages : 219
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    hello,
    ne pas oublier qu'avec openoffice ou libreoffice on peut directement utiliser des macros en python dans des classeurs excel.
    Ami calmant, J.P
    Sans doute intéressant, mais au boulot, ils sont Microsoft only, donc même si je peux faire des petits tests et dégrossir chez moi, à la fin, il faudra que ça tourne sur Windows/office365.

    A ta place, je me dirigerais vers pandas :
    https://moonbooks.org/Articles/Comme...as-en-python-/
    Il ne me semble pas que Pandas calcule les cellules !

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  2. Réponses: 4
    Dernier message: 05/06/2002, 14h35
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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