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 :

Importation de fichier CSV


Sujet :

WinDev

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 171
    Points : 56
    Points
    56
    Par défaut Importation de fichier CSV
    Bonjour,
    J'ai essayé d'importer un fichier CSV mais je ne sais pas il est le problème dans mon code :


    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
     
    //Importation de la liste des clients
    IdFichierXLS est un entier
    i,NbLigne,NbColonne est un entier
    NbColonne = 2
    sFichier est une chaîne
     
    // Ouvre le sélecteur de fichiers
    sFichier = fSélecteur("", "", "Sélectionnez un fichier.....", "FichierCVS.CSV" + TAB + "*.CSV", "*.CSV")
    SI fFichierExiste(sFichier) ALORS
     
    	IdFichierXLS = xlsOuvre(sFichier)
    	NbLigne=xlsNbLigne(IdFichierXLS)
     
    	POUR i=0 A NbLigne
     
    		SI IdFichierXLS <> -1 ALORS
    			POUR j=1 A NbColonne
    				Info( xlsDonnée (IdFichierXLS,i,j,Vrai))
    			FIN
    		FIN
    	FIN	
    SINON
    	Erreur("Le fichier CSV  n'existe pas")
    FIN

    Merci de m'aider

  2. #2
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 171
    Points : 56
    Points
    56
    Par défaut
    J'ai pu comprendre que je dois utiliser fOuvre pour manipuler un fichier TXT ou CSV au lieu de xlsOuvre, mais c'est quoi l'équivalent de la fonction xlsNbLigne pour manipuler un fichier TXT ou CSV

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : Laos

    Informations forums :
    Inscription : Mars 2003
    Messages : 552
    Points : 1 193
    Points
    1 193
    Par défaut
    Bonjour,

    Comme vous l'avez constaté, d'un point de vue informatique un fichier CSV est un fichier TEXTE.

    Donc toutes les commandes XLSxxx de Windev ne peuvent pas s'appliquer.

    Il vous faudra créer un petit algo pour compter le nombre de ligne.
    Il y a plusieurs possibilité, je vous oriente vers une des possibilités, libre à vous de faire autrement :

    vous pouvez charger le fichier CSV directement en mémoire pour un traitement ultérieur avec ces 2 fonctions :

    chargement : http://doc.pcsoft.fr/fr-FR/?3036006&name=fChargeTexte
    conversion pour manipulation : http://doc.pcsoft.fr/fr-FR/?10000170...CSVVersTableau

    enfin par ce biais vous aurez accès à toute la panoplie des fonctions de gestion d'un tableau en WLangage : TableauRecherche(), TableauOccurrence(), TableauXXX()....

    http://doc.pcsoft.fr/fr-FR/?3075006&...n_des_tableaux

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    410
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 410
    Points : 513
    Points
    513
    Par défaut
    Salut,

    Un fichier CSV est un fichier texte, donc en effet il faut l'ouvrir avec fOuvre() ou fChargeTexte()
    Il n'y a pas de fonction pour récupérer le nombre de ligne, à ma connaissance, mais tu peux parcourir le fichier avec fLitLigne() si tu utilise fOuvre ou, beaucoup plus simplement en chargeant le fichier dans une variable avec fChargeTexte()
    puis en faisant un parcours avec POUR TOUT

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    MaChaine est une chaine = fChargeTexte(MonFichier)
     
    POUR TOUTE CHAÎNE sousChaine DE MaChaine SEPAREE PAR RC
            // Traitement
     
    FIN
    Tu peux aussi compter le nombre de RC avec ChaineOccurence() et donc récupérer le nombre de lignes.

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 171
    Points : 56
    Points
    56
    Par défaut
    Merci pour vos réponse, voila l'une des manières pour le faire :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    maChaine = fChargeTexte(sFichier)
    NbLigne = ChaîneOccurrence(maChaine,RC) + 1
    alors maintenant, je souhaite lire mes données.
    En fait, j'ai un fichier de cette forme :

    vlr11;vlr12;vlr13
    vlr21;vlr22;vlr23
    vlr31;vlr32;vlr33
    ...
    ...

    Maintenant je souhaite lire mes données en récupérant chaque élément à l'aide d'une boucle.
    pour un fichier excel, j'utilise le code suivant :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    POUR i=0 A NbLigne
     
    		SI IdFichierXLS <> -1 ALORS
    			POUR j=1 A NbColonne
    				Info( xlsDonnée (IdFichierXLS,i,j,Vrai))
    			FIN
    		FIN
    	FIN
    Pour un fichier CSV comment faire ça.
    En cherchant, j'ai trouvé la fonction fLitLigne(), mais cette fonction je suppose elle lit la ligne entière.
    Avez vous une idée ?

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    En cherchant dans l'aide en ligne les fonctions de gestion des chaines de caractères, tu devrais trouver ton bonheur.

    Tatayo.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    410
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 410
    Points : 513
    Points
    513
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    POUR TOUTE CHAINE sLigne DE maChaine SEPAREE PAR RC
    	// Parcours des colonnes
            POUR TOUTE CHAINE sColonne DE sLigne SEPAREE PAR ";"
                 info(sColonne) 
                // Contient vlr11 puis vlr12 puis vlr13 à chaque boucle
           FIN	
    FIN

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    basam95: si je n'ai pas donné la solution à notre amis, c'est justement pour le pousser à faire des recherches dans l'aide en ligne...
    Tout débutant qu'il soit, le mieux je pense est qu'il apprenne à trouver l'information, surtout qu'ici c'est assez trivial.

    Tatayo.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    410
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 410
    Points : 513
    Points
    513
    Par défaut
    Salut Tatayo,

    J'ai vu ta réponse après avoir postée la mienne, désolé.

    Je suis d'accord sur le principe, c'est le meilleur moyen pour avancer, mais vu le nombre de question qu'il posait je crois qu'il tournait vraiment en rond.

    A+
    Basam95

  10. #10
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 171
    Points : 56
    Points
    56
    Par défaut
    Merci beaucoup,
    En fait, je suis toujours en recherche, même si je pose des questions, je continue à rechercher.
    En effet, j'ai réussi à trouver la solution
    voila le code qui fonctionne :

    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
     
    //Importation de la liste des clients
    IdFichierXLS est un entier
    i,NbLigne,NbColonne est un entier
    NbColonne = 2
    nature est un entier
    sFichier,maChaine est une chaîne
    enregistrement est une chaîne
     
     
    // Ouvre le sélecteur de fichiers
    sFichier = fSélecteur("", "", "Sélectionnez un fichier.....", "FichierCVS.CSV" + TAB + "*.CSV", "*.CSV")
    SI fFichierExiste(sFichier) ALORS
     
    	IdFichierXLS = fOuvre(sFichier)
    	maChaine = fChargeTexte(sFichier)
    	NbLigne = ChaîneOccurrence(maChaine,RC)
    	SI IdFichierXLS <> -1 ALORS
    		POUR i=1 A NbLigne+1
    			enregistrement = fLitLigne(IdFichierXLS,RC)
     
    				info(iExtraitChaîne(enregistrement,1,";"))
                                    // traitement
     
    		FIN	
    	SINON
    		Info(ErreurInfo)
    	FIN
    SINON
    	Erreur("Le fichier CSV  n'existe pas")
    FIN
    De toute façon, merci beaucoup pour vos remarques

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Il y a beaucoup à dire sur ton code...
    • Tu utilises fChargeTexte et fOuvre/Flit. C'est un peu redondant
    • Tu testes si le fichier est ouvert APRES avoir lu le contenu
    • Le fichier est ouvert, mais jamais fermé
    • Et si l'utilisateur ne sélectionne aucun fichier, tu renvoies une erreur indiquant que le fichier n'existe pas


    Tatayo.

  12. #12
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 171
    Points : 56
    Points
    56
    Par défaut
    Remarques prises en considération
    Merci beaucoup

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

Discussions similaires

  1. import de fichier csv
    Par dev7 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 15/02/2006, 07h23
  2. Import de fichier CSV automatique dans Access
    Par Jmar dans le forum Access
    Réponses: 4
    Dernier message: 20/01/2006, 10h48
  3. Importer un fichier CSV dans un clientdataset ?
    Par mls dans le forum Bases de données
    Réponses: 7
    Dernier message: 15/04/2005, 12h35
  4. [Conseil] Import de fichier CSV vers MySQL
    Par ShinJava dans le forum JDBC
    Réponses: 6
    Dernier message: 15/03/2005, 19h14
  5. Importation de fichier CSV vers une base Interbase
    Par PrinceMaster77 dans le forum ASP
    Réponses: 3
    Dernier message: 15/03/2005, 15h18

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