Salut la compagnie.
Au programme, petit blème au niveau du lancement de mon application.
J'ai parmi les modules que j'ai programmés le module XLS chargé de traiter les fichiers XLS et d'en importer les données dans python.
En voici un fragment :
Pour exploiter ceci, j'utilise un programme principal (pour les besoins de la cause, test.py) faisant appel à cette fonction. Il ressemble à 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 def importFeuille(chemin,nomFeuille,liDep,coDep): # paramètres : chemin du fichier à traiter, nom de la feuille, ligne et colonne de depart # Ouvre une feuille Excel et stocke son contenu dans une liste # récupère l'ID du commercial et l'ID de la visite # Retourne dans un dictionnaire : # une liste à 2 dimensions (liste), l'ID du commercial (IDcom) et l'ID de la visite (numvisite) excel = win32com.client.Dispatch('Excel.Application') classeur = excel.Workbooks.Open(chemin) feuille = classeur.Sheets(nomFeuille) # Recupere la feuille 'nomFeuille' coMax = feuille.UsedRange.Columns.Count # Recupere le nombre de colonne maximum liMax = feuille.UsedRange.Rows.Count # Recupere le nombre de ligne maximum liListe=[] for li in range(liDep,liMax+1): coListe=[] for co in range(coDep,coMax+1): cellule=feuille.Cells(li,co).Value # Stocke la valeur de chaque cellule dans la variable 'cellule'... coListe.append(cellule) # ...et ajoute 'cellule' à 'coListe' liListe.append(coListe) # 'coListe' est ajoutee à 'liListe' avant d'etre reinitialisee numvisite = feuille.Cells(2,6).Value IDcom = feuille.Cells(3,3).Value excel.Workbooks.Close() dic={} dic['numvisite']=numvisite dic['IDcom']=IDcom dic['liste']=liListe return dic
Et 3 fois sur 4, tout ce que je gagne, c'est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 a= importFeuille('emplacement de ma feuille',ligneDepart,colonneDepart) for ligne in a['liste']: print ligne print a['numvisite'] print a['IDcom']
Par contre, si je lance la feuille excel à traiter et que je la referme en laissant excel tourner, ca fonctionne. En revanche, si je lance excel directement avec un os.system.start(excel.exe), excel se lance mais mon appli affiche le message d'erreur ci-dessus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Traceback (most recent call last): File "C:\excel2sql\test.py", line 9, in ? a= importFeuille('C:/excel2sql/docTypecommerciaux/essai.xls','noteFrais',7,2) File "C:\excel2sql\xls.py", line 64, in importFeuille classeur = excel.Workbooks.Open(chemin) File "<COMObject <unknown>>", line 7, in Open com_error: (-2147352567, "Une exception s'est produite.", (0, 'Microsoft Excel', "'essai.xls' introuvable. V\xe9rifiez l'orthographe du nom du classeur et la validit\xe9 de l'emplacement.\n\nSi vous essayez d'ouvrir le fichier \xe0 partir de la liste des fichiers les plus r\xe9cents, assurez-vous que le fichier n'a pas \xe9t\xe9 renomm\xe9, d\xe9plac\xe9 ou supprim\xe9.", 'C:\\Program Files\\Microsoft Office\\Office\\1036\\xlmain9.chm', 0, -2146827284), None)
Je dois vous avouer que je pige pas tout...
Merci d'avance.
Partager