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

Bibliothèques tierces Python Discussion :

Python et excel


Sujet :

Bibliothèques tierces Python

  1. #1
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut Python et excel
    Bonsoir à tous,

    Afin d'optimiser l'un de mes programmes, je souhaite donner la possibilité aux utilisateurs de créer des formulaires excel prédéfinis.

    Pour cela, je dois pouvoir en autre:
    *Gérer le format de la feuille de calcul (paysage ou portrait).
    *Insérer un logo.
    *Renseigner certaines cellules avec des valeurs prédéfinis.
    *Permettre l'impression
    *...

    J'aimerai trouver un référentiel, tutoriel, document d'aide... (en français si possible) me permettant de faire ceci.

    Quelqu'un a-t-il des pistes?

    D'avance merci et bonne soirée à tous
    Jiyuu
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  2. #2
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 508
    Points
    5 508
    Par défaut
    J'ai trouvé ça: http://showmedo.com/videos/video?nam...omSeriesID=219 et ça: http://us.pycon.org/2008/tutorials/AutomatingWindows/

    Mais je ne suis pas suffisamment spécialiste de COM et pywin32 pour pouvoir t'aider plus dans ta tâche.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  3. #3
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut
    Merci Thierry, je vais regarder ça.

    J'ai aussi trouvé ceci:

    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    import win32com.client,win32com.client.dynamic
    from pywintypes import UnicodeType, TimeType
    import os
     
    class PyExcel:
        def __init__(self,filename=None):
            self.xlApp = win32com.client.dynamic.Dispatch('Excel.Application')
            if filename:
                    self.filename = filename
                    self.xlBook = self.xlApp.Workbooks.Open(filename)
            else:
                    self.xlBook = self.xlApp.Workbooks.Add()
                    self.filename=''
     
        def save(self, newfilename=None):
            if newfilename:
                    self.filename = newfilename
                    self.xlBook.SaveAs(newfilename)
            else:
                    self.xlBook.Save()
     
        def close(self):
            self.xlBook.Close(SaveChanges=0)
            del self.xlApp
     
        def show(self):
            self.xlApp.Visible=1
     
        def hide(self):
            self.xlApp.Visible=0
     
        def getCell(self, sheet, row, col):
            sht = self.xlBook.Worksheets(sheet)
            return sht.Cells(row, col).Value
     
        def setCell(self, sheet, row, col, value):
            sht = self.xlBook.Worksheets(sheet)
            sht.Cells(row, col).Value = value
     
        def getRange(self, sheet, row1, col1, row2, col2):
            sht = self.xlBook.Worksheets(sheet)
            return sht.Range(sht.Cells(row1, col1), sht.Cells(row2, col2)).Value
     
        def setRange(self, sheet, leftCol, topRow, data):
            bottomRow = topRow + len(data) - 1
            rightCol = leftCol + len(data[0]) - 1
            sht = self.xlBook.Worksheets(sheet)
            sht.Range(
                sht.Cells(topRow, leftCol), 
                sht.Cells(bottomRow, rightCol)
                ).Value = data
     
        def getContiguousRange(self, sheet, row, col):
            sht = self.xlBook.Worksheets(sheet)
            # trouve la ligne du bas
            bottom = row
            while sht.Cells(bottom + 1, col).Value not in [None, '']:
                bottom = bottom + 1
            #trouve la col de droite
            right = col
            while sht.Cells(row, right + 1).Value not in [None, '']:
                right = right + 1
            return sht.Range(sht.Cells(row, col), sht.Cells(bottom, right)).Value
     
        def getActiveCell(self):
            r=self.xlApp.ActiveCell
            return r
     
        def mergeCells(self,sheet,row1,col1,row2,col2):
            sht = self.xlBook.Worksheets(sheet)
            sht.Range(sht.Cells(row1, col1), sht.Cells(row2, col2)).Merge()
     
        def addSheet(self,Before='',After=''):
            if Before :
                pos=self.xlBook.Worksheets(Before)
                self.xlBook.Worksheets.Add(Before=pos)
            elif After:
                pos=self.xlBook.Worksheets(After)
                self.xlBook.Worksheets.Add(After=pos)
            else:
                self.xlBook.Worksheets.Add()
     
        def getActiveSheet(self):
            sheet=self.xlBook.ActiveSheet.Name
            return sheet
     
        def setActiveSheet(self,sheet):
            sht = self.xlBook.Worksheets(sheet)
            sht.Activate()
     
        def delSheet(self,sheet):
            sht = self.xlBook.Worksheets(sheet)
            sht.Delete()
     
        def renameSheet(self,sheet,newName):
            sht = self.xlBook.Worksheets(sheet)
            sht.Name=newName
     
        def moveSheet(self,sheet,Before='',After=''):
            sht = self.xlBook.Worksheets(sheet)
            if Before :
                pos=self.xlBook.Worksheets(Before)
                sht.Move(Before=pos)
            else:
                pos=self.xlBook.Worksheets(After)
                sht.Move(After=pos)
     
        def getSheets(self):
            lstSheets=[sheet.Name for sheet in self.xlBook.Worksheets]
            return lstSheets
     
        def copySheet(self,sheet,Before='',After=''):
            sht = self.xlBook.Worksheets(sheet)
            if Before :
                pos=self.xlBook.Worksheets(Before)
                newSht=sht.Copy(Before=pos)
            else:
                pos=self.xlBook.Worksheets(After)
                newSht=sht.Copy(After=pos)
     
        def setBorder(self,sheet,row1,col1,row2,col2,weight):
            sht = self.xlBook.Worksheets(sheet)
            ran=sht.Range(sht.Cells(row1,col1),sht.Cells(row2,col2))
            print ran
            ran.Borders.Weight=weight
     
     
    if __name__=='__main__':
        tableur=PyExcel()
        tableur.show()
        shts=tableur.getSheets()
        texte=u"éàèçùôØ"
        tableur.setCell('Feuil1',2,2,texte)
        tableur.setCell('Feuil2',1,1,texte)
        for f in shts:
            tableur.renameSheet(f,str(shts.index(f)))
    Ceci fonctionne super, mais créé à chaque fois un nouveau fichier.
    En ce qui me concerne je souhaiterai pouvoir travailler sur un fichier déjà existant qui me servirai en fait de modèle à compléter en fonction des besoins.

    Une idée???
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  4. #4
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut
    En fait ce que je veux c'est pouvoir ajouter des éléments dans doc xls déjà existant.

    D'avance merci
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 476
    Points : 831
    Points
    831
    Par défaut
    bonsoir si tu as enregistré le fichier sous le nom pyexcel.py
    et mis dans le repertoire c:\python25

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    from pyexcel import *
    ex=PyExcel('mon_chemin\\mon_fichier.xls')
    ex.show()
    tes manip...

  6. #6
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut
    Citation Envoyé par xavier-Pierre Voir le message
    bonsoir si tu as enregistré le fichier sous le nom pyexcel.py
    et mis dans le repertoire c:\python25

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    from pyexcel import *
    ex=PyExcel('mon_chemin\\mon_fichier.xls')
    ex.show()
    tes manip...
    Ok ok, Alors j'ai détecté je pense la principale raison à mon problème:
    IL FAUT OBLIGATOIREMENT DONNER LE CHEMIN D'ACCES DE mon_fichier.xls MEME SI CELUI-CI EST DANS LE MEME REP QUE MON PROGRAMME PRINCIPAL.

    J'ai écrit tout ça en majuscule et en gras pour m'en souvenir...

    En tout cas merci Xavier.
    Je peux mettre ce post en résolu grâce à toi.
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  7. #7
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    salut,
    quelle est la version dde python que je doive utiliser pour exploiter le module win32? ou dois-je l'installer séparemment?
    merci

  8. #8
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 508
    Points
    5 508
    Par défaut
    Citation Envoyé par ranianwayra Voir le message
    salut,
    quelle est la version dde python que je doive utiliser pour exploiter le module win32? ou dois-je l'installer séparemment?
    merci
    Pour pywin32, c'est par là: http://python.net/crew/mhammond/win32/Downloads.html

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  9. #9
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut
    Bonsoir à tous,

    Je suis tombé il y a pas longtemps sur un tuto qui expliquer comment utiliser correctement et facilement win32 pour piloter un fichier xls, mais je n'arrive pas à remettre la main dessus.

    Dans ce tuto, il y avait entre autre un exemple pour ouvrir une feuille protégée par un mdp, et ça m'aiderai pas mal de le retrouver.

    Quelqu'un a-t-il une piste?
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  10. #10
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut
    Je me permets de reposer la question car je n'ai toujours rien trouvé.

    Quelqu'un sait-il comment ouvrir et modifier une feuille excel protégée par un password (il en est de même avec l'accès au classeur si celui-ci est protégé)?

    D'avance merci
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Python et Excel
    Par Dewtime dans le forum Général Python
    Réponses: 2
    Dernier message: 14/04/2014, 15h57
  2. Python module excel
    Par PadawanInPerl dans le forum Général Python
    Réponses: 16
    Dernier message: 29/08/2012, 10h53
  3. Appel de python depuis excel
    Par Bayard dans le forum Général Python
    Réponses: 2
    Dernier message: 11/09/2010, 18h07
  4. Manipuler un fichier excel avec python
    Par dipajero dans le forum Général Python
    Réponses: 4
    Dernier message: 10/02/2006, 00h14
  5. python et excel [win32com] : caractériel ? SOS
    Par preacher_man dans le forum Bibliothèques tierces
    Réponses: 5
    Dernier message: 19/10/2005, 18h24

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