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 :

Traitement Excel via Python tres lent


Sujet :

Python

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 573
    Par défaut Traitement Excel via Python tres lent
    Bonjour,

    Je me suis mise récement à Python.
    Le volume de donnée à traiter sur Excel étant trop important pour le faire en VBA, je me suis dis que Python allait être mon ami ..
    Mais peut être que pas tout à fait ... ou alors (et c'est très fortement probable), je m'égarre quelque part .

    Donc le but de mon petit soft est de merger 2 fichiers (3-4 colonnes chacun mais plus de 30000 lignes avec un de 15000 lignes)
    Et la je me retrouve avec une lenteur impressionnante ...
    Je sais que sous mac, excel n'est pas terrible niveau rapidité, mais je pensais qu'avec du python ce serait mieux ... et non

    Donc je vous soumet mon code ci-dessous (très basique et un peu bourin je vous l'accorde) si jamais vous avez des idées ?
    Peut être qu'il faut mieux utiliser d'autres types de fichier que du xlsx? du csv, txt ?

    Si vous avez des idées, je suis preneuse
    Merci d'avance pour votre aide

    Thais

    Pour info coté config :
    MacBook Pro (15-inch, Late 2016) 2,6 GHz Intel Core i7
    Microsoft Excel pour Mac version 15.39 (171010)

    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
     
    import xlwings as xw
    wb = xw.Book("toto.xlsx")
    sht = wb.sheets["aaa"]
    LastLine = 3
    print ("Start")
     
    while (sht.cells(LastLine,8).value != None):
        LastLine += 1
     
    i = 3
    print (LastLine)
     
    while (sht.cells(i,2).value != None):
        print (i)
        j = 3
        TheFind = 0
        while (sht.cells(j,8).value != None):
            MyLook = sht.cells(i,2).value
            if (MyLook == sht.cells(j,8).value): 
                TheFind = 1
                if (sht.cells(i,4).value < sht.cells(j,10).value): 
                    print ("Transfert")
                    sht.cells(LastLine,8).value = sht.cells(i,2).value          
                    sht.cells(LastLine,9).value = sht.cells(i,3).value                
                    sht.cells(LastLine,10).value = sht.cells(i,4).value                
                    sht.cells(LastLine,11).value = sht.cells(i,5).value                
                    sht.cells(j,8).value = "XXXXX"          
                    sht.cells(j,9).value = "XXXXX"               
                    sht.cells(j,10).value = "XXXXX"                
                    sht.cells(j,11).value = "XXXXX"                 
                    LastLine += 1
                    break
            j += 1
     
        if (j == LastLine) and (TheFind == 0): 
            sht.cells(LastLine,8).value = sht.cells(i,2).value          
            sht.cells(LastLine,9).value = sht.cells(i,3).value                
            sht.cells(LastLine,10).value = sht.cells(i,4).value                
            sht.cells(LastLine,11).value = sht.cells(i,5).value                
            LastLine += 1
     
        i += 1
     
    print ("THE END !!!")

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

    Citation Envoyé par thais781 Voir le message
    Le volume de donnée à traiter sur Excel étant trop important pour le faire en VBA, je me suis dis que Python allait être mon ami ..
    Mais peut être que pas tout à fait ... ou alors (et c'est très fortement probable), je m'égarre quelque part.
    Ca serait bien de commencer par faire çà avec des fichiers .CSV pour avoir une idée du temps que çà prend avec les fonctionnalités de base du langage. Puis vous comparez avec le temps que çà met avec xlwings...

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

Discussions similaires

  1. Interop.Excel Tres lent ?
    Par bibifoke dans le forum C#
    Réponses: 5
    Dernier message: 28/09/2012, 15h35
  2. [FB 1.5.2] Requetes tres lentes via VPN
    Par gudul dans le forum Connexion aux bases de données
    Réponses: 8
    Dernier message: 05/01/2006, 18h52
  3. Réponses: 6
    Dernier message: 29/09/2004, 12h45
  4. Connection avec MS Query (Excel) via ODBC MySQL
    Par javigle dans le forum Installation
    Réponses: 7
    Dernier message: 23/11/2003, 21h03
  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