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 :

OPENPYXL et fichier volumineux


Sujet :

Bibliothèques tierces Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    mai 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : mai 2020
    Messages : 4
    Points : 1
    Points
    1
    Par défaut OPENPYXL et fichier volumineux
    Bonjour à tous, je suis débutant en Python j'ai appris le langage il y a peu alors merci pour l'indulgence.

    J'ai besoin d'importer un fichier excel qui contient 3 feuilles et dont le poids est de 1,5 Mo
    Une fois les données réceptionnées et placées dans leurs dictionnaires respectifs, je les copies dans un fichier excel déjà formaté grâce à win32com.client car OPENPYXL supprime tous les formatages.
    Tout ça c'est ok, mon programme fonctionne très bien

    Mon problème est que je suis obligé de supprimer en manuel 2 feuilles sur les 3 de mon fichier d'origine (les données qui m’intéressent sont sur une seule feuille de 100ko) avant d'importer mon fichier pour que mon script arrive à l'ouvrir sans problèmes.

    Si je charge le classeur de 1,5 Mo directement, le script ne plante pas mais se fige avec le message ne répond pas.

    Quelqu'un aurait une idée?

    le moment du script ou ca plante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            classeur = openpyxl.load_workbook(chemin) 
            feuille = classeur.worksheets[0]         
     
            excel = win32com.client.Dispatch("Excel.Application") 
            classeur2 = excel.Workbooks.open(chemin_modele)        
            feuille2 = classeur2.Worksheets("Planning")
    Avec chemin du fichier d'import :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    chemin = filedialog.askopenfilename(initialdir="/", title="Selectionnez le fichier",
                                            filetype=(("excel files", "*.xl*"), ("jpeg files", "*.jpg"), ("all files", "*.*")))
    et chemin du fichier modele:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chemin_modele = os.getcwd() + "/modele.xlsx"
    Ici le chemin du modele est dans le même dossier que quand l'utilisateur lancera le .exe.

    Merci pour votre aide.


    ps: Pour info je pense avoir écarté le problème de puissance de calcul de mon pc car j'ai essayé en .exe sur mon PC gamer avec un gros processeur, même problème et dans le processus on ne voit pas le processeur spécialement en contrainte.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    18 012
    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 : 18 012
    Points : 31 155
    Points
    31 155
    Par défaut
    Salut,

    Déjà pour confirmer que çà plante là où vous le pensez, lancez l'interpréteur Python et passez les commandes directement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> import openpyxl
    >>> chemin = ...
    >>> openpyxl.load_workbook(chemin)
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    mai 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : mai 2020
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    Déjà pour confirmer que çà plante là où vous le pensez, lancez l'interpréteur Python et passez les commandes directement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> import openpyxl
    >>> chemin = ...
    >>> openpyxl.load_workbook(chemin)
    - W

    Merci à vous et pour répondre, l’interpréteur reste dans cette position et ne change plus:

    Nom : Capture.JPG
Affichages : 146
Taille : 35,7 Ko

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    18 012
    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 : 18 012
    Points : 31 155
    Points
    31 155
    Par défaut
    Salut,

    Citation Envoyé par python.deb7 Voir le message
    Merci à vous et pour répondre, l’interpréteur reste dans cette position et ne change plus
    Après avoir vérifié qu'EXCEL est capable de lire le fichier (qu'il n'est pas corrompu en gros), jetez un œil à la documentation d'openpyxl concernant la lecture et l'écriture de gros fichiers.

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

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    mai 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : mai 2020
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Le problème est que j'avais déjà exploré cette astuce de readonly = True.

    En temps normal, avec un classeur qui pèse 100 Ko l'exploration par python de ma feuille de 300 lignes s'effectue en 3-4 secondes
    Quand j'ouvre le gros classeur excel (le même mais avec 2 feuilles inutiles a l’intérieur) le script s’arrête et j'ai le message (ne répond pas)
    Quand j'ouvre le gros classeur excel avec readonly le programme se lance et la l'import peut durer plusieurs minutes...avant d'affiche (ne répond pas).
    Quand j'ouvre le classeur allégé avec readonly idem, le programme se lance avant de finir par ne répond pas

    J'ai tenté aussi le fait de supprimer les 2 feuilles qui gênent en début de script en filtrant par rapport aux noms mais la encore le fichier doit être lu donc ca plante aussi....

    Avant de demander de l'aide j'ai explorer pas mal de choses mais la je suis sec...

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    18 012
    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 : 18 012
    Points : 31 155
    Points
    31 155
    Par défaut
    Salut,

    Citation Envoyé par python.deb7 Voir le message
    Avant de demander de l'aide j'ai explorer pas mal de choses mais la je suis sec...
    Il devrait vous rester la possibilité de modifier le fichier avec EXCEL directement.

    Sinon, côté openpyxl, il faut regarder si vous avez la dernière version et voir ce qui se raconte sur des problèmes similaires. Si c'est pas un problème côté taille, c'est peut être un soucis coté traitement de son contenu.

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

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    mai 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : mai 2020
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci d'avoir pris du temps pour m'aider.

    Je truc c'est que moi ça ne me dérange pas de supprimer à la main 2 feuilles avant d'importer mon fichier, mais ca m’embête de demander ca a une collègue qui n'est pas très douée en informatique et qui devra faire tourner le logiciel 2 fois par semaines avec toujours des fichiers excel d'import différents...

    Je vais continuer a chercher une solution et reviendrais ici la posté si jamais elle existe.

    merci encore en tout cas.

Discussions similaires

  1. Transfert de fichiers volumineux par le net
    Par K-Kaï dans le forum Général Conception Web
    Réponses: 8
    Dernier message: 14/07/2008, 13h15
  2. [Système] Système d'envoi de fichier volumineux
    Par mister3957 dans le forum Langage
    Réponses: 1
    Dernier message: 18/01/2007, 20h36
  3. Comment compresser les fichiers volumineux ?
    Par ThanosT dans le forum Framework .NET
    Réponses: 4
    Dernier message: 26/09/2006, 15h44
  4. XP PRO SP2 detection de fichiers volumineux
    Par HOFER dans le forum Windows XP
    Réponses: 3
    Dernier message: 14/08/2006, 12h47
  5. Chargement fichier volumineux
    Par kirsoul dans le forum Installation
    Réponses: 2
    Dernier message: 26/07/2005, 14h53

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