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 CSV via Wlanguage


Sujet :

WinDev

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    425
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 425
    Points : 129
    Points
    129
    Par défaut importation CSV via Wlanguage
    Helo,

    Voici le problème : j'ai un fichier CSV de la structure suivant :

    "titre1";"titre2";"titre3"
    "data1;"data2";"data3"
    "data1;"data2";"data3"
    "data1;"data2";"data3"

    J'utilise donc comme délimiteur de données " / pour les colonnes ;

    et un fic contenant les mêmes titres/rubriques.

    Mais le CSV contient moins de titres/rubriques que le fic et en plus pas dans l'ordre.

    Donc je pensais lire ligne par ligne et correspondre/enregistrer les données selon correspondance par titre/rubrique

    J'ai trouvé le code si-dessous dans le forum, mais pas de réponse s'il est fonctionnel ou non.

    Mais il parait un peu correspondre à ce que je veux, non ?
    Pourriez-vous me le confirmer ?
    Si nécessaire m'aider à le mettre au point ?

    BAV

    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
    46
    47
    48
    49
    nIdFic=fOuvre(Fichiercsv,foLecture)
    SI nIdFic=-1 ALORS
    Erreur("Impossible d'ouvrir le fichier.",...
    "Vérifier qu'il n'est pas déjà ouvert sur une autre
    application.",xlsMsgErreur(nIdFic))
    RETOUR
    FIN
    TableSupprimeTout(TableImport)
    sLigne= fLitLigne(nIdFic)
     
    Premiere ligne contenant les données
    nPremièreLigne = 1
    sinon
    nPremièreLigne=2
    nNbColonnes est un entier= ChaîneOccurrence(sLigne, ";")+1
     
    TANTQUE sLigne <> EOT
    // on remplit la table mémoire
    TableAjouteLigne(TableImport)
    // on construit la ligne lue
    POUR nColonne =1 A nNbColonnes
    sdonnee=ExtraitChaîne(sLigne,nColonne,";")
    SI sdonnee=EOT ALORS
    {"Colonne"+nColonne}[TableOccurrence(Table)]=""
    SINON
    // Je traite si il y a des guillemets
    guillemet=sdonnee
    SI ChaîneOccurrence(guillemet,gCO_Guillemet)>1 ALORS
    SI Gauche(guillemet,1)=gCO_Guillemet ALORS
    guillemet=Milieu(guillemet,2,Taille(guillemet)-1)
    SI Droite(guillemet,1)=gCO_Guillemet ALORS
    guillemet=Gauche(guillemet,Taille(guillemet)-1)
    TANTQUE ChaîneOccurrence(guillemet,gCO_Guillemet+gCO_Guillemet)<&g
    t;0
     
    guillemet=Remplace(guillemet,gCO_Guillemet+gCO_Guillemet,gCO_Guillemet)
    FIN
    FIN
    {"Colonne"+nColonne}[TableOccurrence(TableImport)]=guillemet
    FIN
    // si c'est un numérique
    SI NumériqueVersChaine(Val(sdonnee))=sdonnee ALORS
    {"Colonne"+nColonne}..CadrageHorizontal=iDroite
    SINON
    {"Colonne"+nColonne}..CadrageHorizontal=iGauche
    FIN
    FIN
    sLigne = fLitLigne(nIdFic)
    FIN

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Bonjour,
    voir en passant par Himportetexte et les paramètres hImpSansDélimiteur, etc...
    J'importe les CSV ainsi
    Cdt

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    425
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 425
    Points : 129
    Points
    129
    Par défaut
    Il y avait des contraintes avec Himportetexte concernant les identificateurs.
    Pour finir j'ai su écrire ceci et cela fonctionne à merveille.

    Merci pour l'aide.

    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
     
    file est une chaîne = fSélecteur("","","","*.CSV"+TAB+"*.CSV","*.CSV")
    nNIdFic est un entier =fOuvre(file,foLectureEcriture)
    SI nNIdFic=-1 ALORS
        Erreur("Impossible d'ouvrir le fichier.")
        RETOUR
    FIN
     
    sLigne1 est une chaîne = fLitLigne(nNIdFic)
     
    nNbColonnes est un entier= ChaîneOccurrence(sLigne1, ";")+1
     
    sLigne2 est une chaîne = fLitLigne(nNIdFic)
     
    TANTQUE sLigne2 <> EOT ET sLigne2<>""
     
        HAjoute(PMfup,hIgnoreIntégrité+hIgnoreDoublon)
     
        POUR nColonne =1 A nNbColonnes
            Rubtitel est une chaîne = Remplace(ExtraitChaîne(sLigne1,nColonne,";",DepuisDébut),"""","")
            QUAND EXCEPTION DANS 
                {"PMfup."+ Rubtitel, indRubrique} = Remplace(ExtraitChaîne(sLigne2,nColonne,";"),"""","")
            FAIRE
                fEcritLigne(nCode,Rubtitel)
            FIN
            HModifie(PMfup)
        FIN
        sLigne2 = fLitLigne(nNIdFic)
    FIN

  4. #4
    Membre expert
    Avatar de Emmanuel Lecoester
    Profil pro
    Inscrit en
    Février 2003
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2003
    Messages : 1 493
    Points : 3 266
    Points
    3 266
    Par défaut
    Citation Envoyé par chapeau_melon Voir le message
    Il y avait des contraintes avec Himportetexte concernant les identificateurs.
    Sauf que le HimporteTexte est infiniment plus rapide que le hajoute !
    Emmanuel Lecoester
    => joomla addict.

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

Discussions similaires

  1. Import de CSV via SQL*Plus
    Par kensem dans le forum Sql*Plus
    Réponses: 2
    Dernier message: 14/03/2012, 13h43
  2. [MySQL] Script d'importation csv vers une table (mysql) via un formulaire
    Par sarabaïte dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 17/03/2011, 06h31
  3. [MySQL] Import fichier CSV via l'interface MySQL
    Par RENAUDER dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 09/02/2009, 16h19
  4. Import csv via bulk insert
    Par DanaX dans le forum MS SQL Server
    Réponses: 14
    Dernier message: 15/11/2008, 19h03
  5. Importation de CSV via ODBC dans Access
    Par inc002 dans le forum Bases de données
    Réponses: 3
    Dernier message: 31/03/2008, 16h03

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