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

WinDev Discussion :

Conversion xls -> CSV [WD23]


Sujet :

WinDev

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    365
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 365
    Points : 176
    Points
    176
    Par défaut Conversion xls -> CSV
    Bonjour à tous,
    j'ai développé une application qui doit intégrer dans une base de données des données issues d'un fichier Excel.

    J'utilise les fonctions xls... et ça fonctionne bien mais je trouve que le parcours de toutes les lignes du fichier est un peu lent (10 minutes pour intégrer 12000 lignes).
    J'aurais voulu accélérer un peu le processus et je pensais convertir le fichier xls en csv pour, au lieu de lire cellule par cellule dans l'excel, parcourir des sous chaines dans une variable.

    Tout d'abord, est-ce que parcourir un fichier csv est plus rapide que parcourir un fichier excel?
    existe-t-il une fonction windev pour sauvegarder un excel en csv?

    Je mets un peu de contexte : le fichier excel est généré par une application métier sur laquelle je n'ai pas la main (impossible de générer automatiquement en csv) et je ne peux pas demander aux utilisateurs d'ouvrir l'excel pour sauvegarder en csv car c'est une manipulation trop complexe pour eux (on a affaire à des gros bourrins ) et puis vu que la manipulation devra être faite à chaque fois, autant l'automatiser.

    Je vous remercie
    Qui vit par le Troll périra par le Troll!

  2. #2
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 807
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 807
    Points : 5 263
    Points
    5 263
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Pourquoi faire du séquentiel alors qu'il existe une fonction HImporteXLS.
    En ce qui concerne la conversion en csv, la classe Cexcel devrait répondre à ton problème.
    Au pire tu peux voir du côté des objet automation un truc du genre :
    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
     
    PROCEDURE XLS_to_CSV(NomCheminFichier)
     
    // de toute façon j'en fait un csv, sinon pour avoir un bon xls il
    suffet d'un save()
    // Tentative de récupération de l'objet Excel en mémoire
    xl est un objet OLE dynamique = ObjetActif("Excel.Application")
    // Allocation d'un objet Excel si non-trouvé
    SI xl=Null ALORS xl=allouer un objet OLE "Excel.Application"
    xl>>Visible=Faux // Excel n'apparait pas à l'écran
    xl>>displayAlerts(Faux)
    // Ouverture du document
    xl>>WorkBooks>>Open(NomCheminFichier)
    // en fait j'ouvre le "fichier excel" et l'enregistre:
    // il se trouve alors dans le bon format
    // xl>>ActiveWorkBook>>save()
    NomCheminFichier=ExtraitChaîne(Minuscule(NomCheminFichier),1,".xls")+".csv"
    xl>>ActiveWorkBook>>saveAs(NomCheminFichier,6)
    xl>>ActiveWorkBook>>Close(Faux) // Fermeture du document
    xl>>Quit() // Fermeture d'Excel
    libérer xl // Libération de l'objet Excel
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  3. #3
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    [Hors Sujet]
    Ecrire un fichier Excel (ou le lire) en accédant cellule par cellule ... c'est extremement long.
    Je me souviens d'un traitement lourd où je devais écrire entre 50 et 1000 lignes, 100 colonnes ... et répéter l'opération sur 1000 fichiers.
    Option 1 : Ecrire cellule par cellule dans Excel.
    Option 2 : Ecrire un fichier TXT, puis faire un copier-coller de ce fichier TXT dans Excel.
    Le passage de l'option 1 à l'option 2 a permis de diviser le temps de traitement par 10 ou 20.
    Inconvénient : on est obligé d'écrire dans l'ordre
    [/Hors Sujet]

    Si la solution Voroltinquo ne te convient pas, Ouvrir un fichier Excel, puis enregistrer-Sous en format CSV ... c'est tout à fait possible via Windev.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    365
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 365
    Points : 176
    Points
    176
    Par défaut
    Bonjour,
    je vous remercie pour vos réponses.
    J'ai testé les objets automation et ça fonctionne bien, je passe de 20 minutes à 3 minutes pour importer un fichier de 12000 lignes.

    Merci pour vos réponses
    Qui vit par le Troll périra par le Troll!

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    914
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 914
    Points : 1 496
    Points
    1 496
    Par défaut
    Citation Envoyé par elscorpio Voir le message
    J'ai testé les objets automation et ça fonctionne bien, je passe de 20 minutes à 3 minutes pour importer un fichier de 12000 lignes.
    Bonjour,
    Je suis interressé par le code.
    Pour l'instant j'utlise xlsDonnée dans une boucle. Il est vrai que j'ai peu de cas où j'importe de gros fichiers, mais quand c'est le cas c'est un peu long.
    Merci d'avance

  6. #6
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 807
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 807
    Points : 5 263
    Points
    5 263
    Billets dans le blog
    1
    Par défaut
    A priori elscorpio a utilisé le code que j'ai posté au #2
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Python 2.X] conversion xls en csv
    Par DiverSIG dans le forum Général Python
    Réponses: 1
    Dernier message: 14/05/2017, 07h56
  2. [Python 2.X] Module xlrd : Conversion xls en csv
    Par aurelie.guegan.15 dans le forum Général Python
    Réponses: 5
    Dernier message: 11/09/2014, 17h53
  3. Encodage conversion xls en csv
    Par Daasar dans le forum Général Python
    Réponses: 0
    Dernier message: 11/02/2014, 17h39
  4. [PHP 5.2] Conversion xls en csv ou txt
    Par Delors dans le forum Langage
    Réponses: 1
    Dernier message: 13/07/2009, 11h52
  5. conversion xls en csv
    Par NATOU2 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 16/01/2008, 10h52

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