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 :

Lire les colonne d'un fichier Excel via pyxlsb


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2019
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2019
    Messages : 133
    Par défaut Lire les colonne d'un fichier Excel via pyxlsb
    Bonjour,

    Je travaille sur un application desktop avec Python3. Cette application permettra à l'utilisateur d'afficher des données dispersées sur plusieurs fichiers Excel.
    J'avais déjà effectué une tache similaire avec Openpyxl et tout marche bien. Le problème c'est que cette fois ci je manipule des gros fichiers Excel (plus de 9Mo) et en utilisant openpyxl, l'application met beaucoup de temps avant de se lancer, ce qui n'est pas très pratique aux yeux de l'utilisateurs.

    C'est pour cela, j'ai pensé à faire le taravail en convertissant mes fichiers d'abord en .xlsb et ensuite les manipuler via pyxlsb.
    Le problème c'est que je n'arrive pas à lire les colonnes avec pyxlsb et d'où l'objet de ce post.

    Avez-vous une idée comment contourner ce problème svp ?

    Cdt;

  2. #2
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2019
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2019
    Messages : 133
    Par défaut
    Avant de penser à pyxlsb, j'ai tenté de manipulé les fichiers avec openpyxl en mode lecture seule, comme ça les fichiers sont ouverts rapidement. Malheureusement, j'obtiens cette erreur: 'ReadOnlyWorksheet' object has no attribute 'iter_cols'

    Donc s'il y a des idées pour contourner l'un de ces problèmes au encore d'autres propositions, je suis preneur.

    Merci d'avance.

  3. #3
    Membre éprouvé
    Inscrit en
    Juillet 2013
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 80
    Par défaut
    Bonjour,

    Avez-vous tenté le module pandas et sa méthode read_excel() ?

  4. #4
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2019
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2019
    Messages : 133
    Par défaut
    Oui je l'ai essayé, mais c'est lent.

  5. #5
    Membre éprouvé
    Inscrit en
    Juillet 2013
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 80
    Par défaut
    Est-ce que la lenteur est un problème parce que
    - vous chargez beaucoup de nouveaux fichier ?
    - vous chargez plusieurs fois le même fichier ?

    Dans le deuxième cas, je vous invite à essayer de sauvegarder la data au format pickle (avec le module pickle) ; il me semble que la lecture d'un pickle est plus rapide qu'un csv. Voici comment j'aurais fait :
    1) lire le fichier .csv (df = pd.read_csv())
    2) enregistrer la variable (open + pickle.dump())
    3) (optionnel, pour la mémoire) effacer le fichier .csv si seules la data vous intéresse

  6. #6
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2019
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2019
    Messages : 133
    Par défaut
    Pour le moment j'essaie de charger uniquement le premier fichier qui pèse 9Mo, J'ai encore 2 fichiers d'environs 2Mo chacun.

    Quand l'utilisateur lance l'application, celle ci va se connecter à des fichiers sur le réseau pour les charger une fois pour toute jusqu'à sa fermeture. Ces fichiers sont mis à jours chaque jour, et le but c'est que l'utilisateur ait la dernière mise à jour des données. Donc les fichiers changent pour répondre à ta question.

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

    Citation Envoyé par Heathcliff_1 Voir le message
    Avez-vous une idée comment contourner ce problème svp ?
    Vous avez 2 sortes de solutions: changez le format du fichier (et utilisez autre chose qu'OpenpyXL pour le lire), arriver à faire fonctionner le mode readonly d'openpyxl.

    Après la solution non technique généralement employée est d'afficher une barre de progression (histoire que l'utilisateur patiente) pendant que le chargement se fait dans un thread séparé.
    Suivant ce qu'on fait des données lues on peut commencer le traitement avec ce qui a été lu (par exemple, afficher les premières lignes lues et paginer pendant que la lecture continue en background).

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

  8. #8
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2019
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2019
    Messages : 133
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Vous avez 2 sortes de solutions: changez le format du fichier (et utilisez autre chose qu'OpenpyXL pour le lire), arriver à faire fonctionner le mode readonly d'openpyxl.
    J'ai déjà changé l'extension en .xlsb et j'essaie de manipuler avec pyxlsb mais je suis bloqué pour le moment.
    Après pour la deuxième proposition, je la vois pas très pratique dans mon cas vu le contexte du travail.

    En tout cas merci

Discussions similaires

  1. [XL-2016] Lire les données d'un fichier Excel reçu par outlook
    Par ClementBht dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/07/2018, 09h14
  2. [ADA] Lire les colonnes d'un fichier
    Par ApolloNaute dans le forum Ada
    Réponses: 5
    Dernier message: 07/01/2014, 09h01
  3. Importer les colonnes d'un fichier excel
    Par khaoulamr dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 09/04/2013, 14h57
  4. [PHP-JS] lire les champs d'un fichier excel
    Par cortex59 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 06/05/2008, 14h11
  5. Remplir les colonnes d'un fichier excel
    Par craryb dans le forum MFC
    Réponses: 3
    Dernier message: 14/03/2007, 12h37

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