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 :

Excel


Sujet :

Python

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Août 2004
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 81
    Points : 71
    Points
    71
    Par défaut Excel
    Bonjour,
    Je viens de mettre dans la "communication" entre Python et Excel en telechargeant les lib windows.
    Tout marche parfaitement, par contre je ne trouve pas de docs ou toutes les fonctions seraient detailles.
    Ex : Comment rajouter une nouvelle feuille : Sheet.Add()
    Si vous avez des pdf ou bien des exemples ca serait super sympa, car pour l'instant j'ai just trouvé des exemples sommaires de lecture ecriture
    Merci

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Salut,

    je ne vais pas t'apporter de réponses mais je veux juste savoir où as tu trouver ces docs. La façon (qui marche) d'exploiter des données exel est d'enregistrer le fichier au format CSV. J'avais trouver un module mais l'explication est très sommaire.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 119
    Points : 139
    Points
    139
    Par défaut
    Bonjour,

    pour les docs des objets d'Excel accessibles par COM, tu peux aller sur Excel, ouvrir l'éditeur VBA (Alt+F11) et l'aide devrait couvrir le modèle objet. Tu peux commencer par l'objet Application.
    Tu peux aussi démarrer makepy dans win32com.client et générer le wrapper de l'objet Excel. Tu peux ensuite consulter le source généré dans win32com.gen_py

  4. #4
    Membre averti
    Homme Profil pro
    Responsable du parc et des réseaux de télécommunication
    Inscrit en
    Mai 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable du parc et des réseaux de télécommunication
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2003
    Messages : 290
    Points : 388
    Points
    388
    Par défaut
    Bonjour,
    Lorsque je dois utiliser excel depuis python, j'utilise ceci (Désolé, sans documentation, mais facile à comprendre) -Tiré d'un exemple de Mark Hammond :
    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
    137
    138
    139
    140
    # -*- coding: ISO-8859-1 -*-
     
    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="éàèçùôØ"
        tableur.setCell('Feuil1',2,2,texte)
        for f in shts:
            tableur.renameSheet(f,str(shts.index(f)))
        print tableur.getCell('0',2,2)
        print tableur.getActiveCell()
        tableur.setBorder('0',2,2,2,2,3)

Discussions similaires

  1. [VB6] [Excel] Résultat d'une requete ds une feuille
    Par elifqaoui dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 07/01/2003, 17h52
  2. [VBA-E] [Excel] Filtrer le donnees d'une sheet
    Par donia dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/09/2002, 10h55
  3. [Kylix] kylix et excel
    Par gothe dans le forum EDI
    Réponses: 1
    Dernier message: 19/09/2002, 19h44
  4. Réponses: 2
    Dernier message: 22/07/2002, 12h13
  5. [Kylix] Excel via kylix
    Par Billy joel dans le forum EDI
    Réponses: 1
    Dernier message: 23/05/2002, 11h57

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