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

C++Builder Discussion :

[CSV] Comment récupérer la 1ère ligne d'un fichier CSV


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 19
    Points : 19
    Points
    19
    Par défaut [CSV] Comment récupérer la 1ère ligne d'un fichier CSV
    Bonjour à tous!

    Est-ce que c'est possible de récupérer ligne par ligne un fichier CSV. Par exemple, j'aimerai bien de récupérer les lignes en indiquant le numéro de la ligne, puisk je peux extraire le numero de la colonne (recuperer la n=ème chaine de caractère à partir d'une autre apres avoir passé par n-1 points virgules ( ).
    mon fichier ne contient que des nombres de type "float" :

    exemple:

    161;200;216
    18,5;19;19,2
    10,1;9,55;9,28
    7,71;6,94;6,59
    6,61;5,79;5,41
    5,99;5,14;4,76
    5,59;4,74;4,35
    5,32;4,46;4,07
    5,12;4,26;3,86
    4,96;4,1;3,71
    4,84;3,98;3,59
    4,75;3,89;3,49
    4,67;3,81;3,41
    4,6;3,74;3,34

    donc si je veux récuperer l'élement se trouvant sur la 6ème ligne et la 2ème colonne, comment ferai-je?

    merci :

  2. #2
    Membre régulier Avatar de jehrikhan
    Inscrit en
    Mars 2008
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Points : 89
    Points
    89
    Par défaut
    Lire directement la ligne n n'est pas possible, pour ce faire il faut ouvrir le fichier en mode texte avec un fopen, et ensuite récupérer ligne par ligne a l'aide de la fonction fgets, et les traiter une par une.


    un petit exemple pour aller lire un fichier et traiter les lignes :

    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
     
      char Buffer[200]={0};
      AnsiString tmpStr;
     
      FILE* hFile= fopen("C:\\monfichier.txt","rt"); // ouverture du fichier
      if(hFile)
      {
        while(fgets(Buffer,200,hFile)) // tant qu'il existe des ligne
        {
          tmpStr = Buffer;
          //traitement 
         //
         //
        }
        fclose(hFile);
      }
      else
      {
        //le fichier n'a pas pu etre ouvert
      }
    Passer par un AnsiString permet de simplifier les traitements sur la ligne.
    Touours moins chiant que de s'embeter avec un tableau de char

  3. #3
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Utilise plutot TStringList :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    TStringList *list = new TStringList() ;
    list->LoadFromFile( "D:\\MonFichier.csv" ) ;
    //[...]
    //récupération de la Nième ligne du fichier :
    AnsiString ligne = list->Strings[N] ;
    AnsiString value = FindToken( ligne, 2, ';' ) ;
    //[...]
    delete list ;
    Et une fonction permettant de récupérer un élement dans la ligne :

    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
    AnsiString FindToken( AnsiString aSource, int aPosition, char aDelimiter )
    {
    /*
    aSource : la chaîne de caractère à découper
    aPosition: l'élément dans la chaîne que tu veux récupérer
    aDelimiter: le caractère de séparation
    */
      TStringList *tokenizer = new TStringList() ;
      tokenizer->Text = StringReplace(aSource, aDelimiter , "\n", TReplaceFlags()<< rfReplaceAll );
     
      AnsiString resultat = "" ;
      if( aPosition < tokenizer->Count )
        resultat = tokenizer->Strings[ aPosition ] ;
      delete tokenizer ;
      return( resultat );
    }
    Regarde ce post ou une question similaire était posée.

    Bon courage

    .

  4. #4
    Membre régulier Avatar de jehrikhan
    Inscrit en
    Mars 2008
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Points : 89
    Points
    89
    Par défaut
    Ha wi c'est pas bete la StringList

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 19
    Points : 19
    Points
    19
    Par défaut Re
    merci, mais je n'arrive pas à trouver "FindToken",

  6. #6
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Citation Envoyé par lolitta_dz Voir le message
    merci, mais je n'arrive pas à trouver "FindToken",
    FindToken c'est la fonction que je t'ai donné dans mon premier post!

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 19
    Points : 19
    Points
    19
    Par défaut Re
    Erreur: "Déclaration terminée incorrectement" avant try!

    TStringList *MyList = new TStringList();

    try
    {
    MyList->LoadFromFile( "D:\\StatTab.csv" ) ;
    Fichiers attachés Fichiers attachés

  8. #8
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Il faut que tu place ton code quelque part dans une fonction, sinon le compilateur va forcément ralé!

    Place un bouton sur ta fiche par exmeple et double-click dessus, tu aura une fonction qui apparaitra. Met y ensuite ton code. Celui-ci sera exécuté lorsque tu clique sur le bouton.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 19
    Points : 19
    Points
    19
    Par défaut Re
    merci! ça marche tres bien!

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

Discussions similaires

  1. [PowerShell] Comment afficher la dernière ligne d'un fichier CSV ?
    Par johnvlesk dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 09/11/2010, 21h47
  2. Réécrire la 1ère ligne d'un fichier csv
    Par drake56 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 03/06/2009, 18h53
  3. Réponses: 5
    Dernier message: 24/06/2008, 13h07
  4. [CSV] Comment récupérer la 1ère ligne d'un fichier CSV
    Par xianxian620 dans le forum Langage
    Réponses: 3
    Dernier message: 16/05/2008, 10h17
  5. [CSV] Ajouter et supprimer des ligne dans un fichier CSV
    Par gpsevasion dans le forum Langage
    Réponses: 3
    Dernier message: 28/02/2007, 17h00

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