p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Futur Membre du Club
    Inscrit en
    septembre 2010
    Messages
    216
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 216
    Points : 16
    Points
    16

    Par défaut Import CSV dans un champ table

    Bonjour à tous

    Voila, j'ai besoin d'afficher dans un champ table toutes la valeur d'un fichier csv (qui peut comporter un nombre variable de colonnes).

    Afficher tout dans une table n'est pas un problème, le soucis est que mes colonnes de ma tables doivent être identifiées (en gros je fais un logiciel d'e-mailling et le champ comportant les adresses emails doit être identifié comme colonne "mail" car je fais ensuite des traitements sur cette colonne, pareil pour les nom et prénoms par exemple car lors de l'envoi d'email il sera possible de remplacer une chaine "[nom]" par le nom inscrite dans ma colonne "nom").

    Pour faire court lorsque l'utilisateur importe son CSV je dois savoir quel champ correspond à quelle colonne ...

    Je ne sais pas si c'est clair car ce n'est pas simple à expliquer mais dans le cas contraire j'attends vos questions afin de vous éclairer au mieux.

    Merci

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    octobre 2007
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : octobre 2007
    Messages : 738
    Points : 1 622
    Points
    1 622

    Par défaut

    Bonjour,

    Généralement, la première ligne comporte les noms de colonnes ...

    Si ce n'est pas le cas, l'ordre des colonnes est-il connu et fixe ?

    Hemgé

  3. #3
    Futur Membre du Club
    Inscrit en
    septembre 2010
    Messages
    216
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 216
    Points : 16
    Points
    16

    Par défaut

    En effet je n'avais pas pensé que la première ligne comportait les libellés.
    Mais comment faire pour ensuite affecter chaque valeur à la bonne colonne ?

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    octobre 2007
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : octobre 2007
    Messages : 738
    Points : 1 622
    Points
    1 622

    Par défaut

    Je crois que vous devriez commencer par faire une petite recherche dans le Forum, simplement sur "CSV".

    Je viens de jeter un œil.

    Il y a de nombreuses discussions qui vous permettront de vous familiariser avec le sujet et d'élaborer une solution, que nous vous aiderons à mettre au point si cela est encore nécessaire.

    Bon travail

    Hemgé

  5. #5
    Futur Membre du Club
    Inscrit en
    septembre 2010
    Messages
    216
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 216
    Points : 16
    Points
    16

    Par défaut

    Je vais regarder cela.

    Merci beaucoup pour votre aide

  6. #6
    Membre Expert Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    novembre 2007
    Messages
    834
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : novembre 2007
    Messages : 834
    Points : 1 666
    Points
    1 666

    Par défaut

    Un code que j'avais fait il y a quelques années...

    Il faut une table "TABLE_MaTable" avec une colonne de type chaîne "COL_1"

    Le code qui charge un fichier csv et rempli la table

    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
    tabMontableau est un tableau de * par  * chaînes
    sFichierCSV est une chaîne
    sFichierCSV = fChargeTexte("D:\export.csv")
    CSVVersTableau(sFichierCSV,tabMontableau,";")
    nNb_Ligne est un entier = TableauInfo(tabMontableau,tiNombreLignes)
    nNb_Colonne est un entier = TableauInfo(tabMontableau,tiNombreColonnes)
    nNb_col_a_supprimer est un entier = TABLE_MaTable..NombreColonne
    sLigne_table est une chaîne
     
    // vide la table
    TableSupprimeTout(TABLE_MaTable)
     
    // supprime colonnes précédemment créées
    POUR i = 2 A nNb_col_a_supprimer	
    	ChampSupprime("TABLE_MaTable.COL_"+ i)
    FIN
     
    // crée les colonnes
    TABLE_MaTable.COL_1..Libellé = tabMontableau[1,1]
    POUR i = 2 A nNb_Colonne
    	ChampClone({"TABLE_MaTable.COL_1",indChamp},"COL_"+i,{"TABLE_MaTable",indChamp}..NombreColonne + 1)
    	{"TABLE_MaTable.COL_"+i,indChamp}..Libellé = tabMontableau[1,i]
    FIN
     
    // rempli la table
    POUR i = 2 A nNb_Ligne
    	sLigne_table = ""
    	POUR j = 1 A nNb_Colonne
    		sLigne_table += tabMontableau[i,j] + TAB
    	FIN	
    	sLigne_table = Gauche(sLigne_table,Taille(sLigne_table)-1)
    	TableAjoute(TABLE_MaTable,sLigne_table)
    FIN
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

  7. #7
    Futur Membre du Club
    Inscrit en
    septembre 2010
    Messages
    216
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 216
    Points : 16
    Points
    16

    Par défaut

    Merci Laurent pour ta contribution, j'ai utilisé ton code et ça fonctionne sauf que à l'origine j'ai 2 colonnes qui devront etre par défaut dans ma table (une colonne "Activer" contenant un interupteur pour chaque ligne, et une colonne "Etat" qui affichera l'état du traitement de la ligne).

    Sauf que je n'arrive pas à insérer ces deux colonnes supplémentaires...
    J'ai essayé de plusieurs façons : en ajoutant mes 2 colonnes par programmation en utilisant champClone après que ton code soit éxécuté mais ça ne fonctionne pas (aucun remplissage).

    J'essaye d'insérer dans la premiere ligne du tableau (donc dans les entetes) mes colonnes supplémentaires mais je n'y arrive pas, je ne sais pas comment faire.

    J'avoue que je tourne un peu en rond :s

  8. #8
    Membre Expert Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    novembre 2007
    Messages
    834
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : novembre 2007
    Messages : 834
    Points : 1 666
    Points
    1 666

    Par défaut

    Ajoute tes 2 colonnes en dur
    COL_Activer : interrupteur
    COL_Etat : Chaîne
    avant
    COL_1 : Chaîne

    Puis dans le code il faut tenir compte de ces 2 colonnes dans les colonnes à supprimer. Pour cela...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nNb_col_a_supprimer est un entier = TABLE_MaTable..NombreColonne - 2
    Ça devrait marcher...
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

  9. #9
    Futur Membre du Club
    Inscrit en
    septembre 2010
    Messages
    216
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 216
    Points : 16
    Points
    16

    Par défaut

    Oui j'ai fait un peu le même genre que ça et j'ai le même résultat, c'est à dire que la table est bien remplie mais le contenu ne correspond pas à la colonne.

    Le fait d'avoir 2 colonnes supplémentaire décale le chargement du contenu, j'ai essayé de rajouter +2 à nNbColonne mais j'ai une erreur.

  10. #10
    Membre Expert Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    novembre 2007
    Messages
    834
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : novembre 2007
    Messages : 834
    Points : 1 666
    Points
    1 666

    Par défaut

    Autant pour moi, il faut décaler le remplissage de la table avec 2 TAB

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // rempli la table
    POUR i = 2 A nNb_Ligne
    	sLigne_table = TAB + TAB
    	POUR j = 1 A nNb_Colonne
    		sLigne_table += tabMontableau[i,j] + TAB
    	FIN	
    	sLigne_table = Gauche(sLigne_table,Taille(sLigne_table)-1)
    	TableAjoute(TABLE_MaTable,sLigne_table)
    FIN
    En espérant que cette fois ce soit bon...
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

  11. #11
    Futur Membre du Club
    Inscrit en
    septembre 2010
    Messages
    216
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 216
    Points : 16
    Points
    16

    Par défaut

    Ha ba voila c'etait simple en fait

    Un grand MERCI, pour votre aide ça m'a vraiment aidé.
    C'est super sympa de faire partager votre experience

    Bonne soirée

Discussions similaires

  1. [WD15] Importer le contenu d'un fichier texte dans un champ table
    Par Menadel dans le forum WinDev
    Réponses: 6
    Dernier message: 21/08/2013, 15h00
  2. Importer csv dans une table sql via Python
    Par bacheld2 dans le forum Général Python
    Réponses: 6
    Dernier message: 22/04/2013, 23h01
  3. [Débutant] Import CSV dans Table MDB il me manque quelque chose
    Par progscoubi dans le forum C#
    Réponses: 5
    Dernier message: 02/11/2011, 11h00
  4. Importer CSV dans MySQL
    Par The_freeman dans le forum Administration
    Réponses: 6
    Dernier message: 14/02/2006, 22h18
  5. Recherche n'import où dans le champ
    Par Gnoutman dans le forum Access
    Réponses: 7
    Dernier message: 04/11/2005, 15h56

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