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

Discussion :

Récupérer le contenu d'un fichier CSV

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 65
    Par défaut Récupérer le contenu d'un fichier CSV
    Bonjour à tous,

    J’essaie de récupérer le contenu d'un fichier csv.
    J'ai par exemple en A1 :le nom b1 le prénom

    J'aimerais faire ouvrir ce fichier et récupérer les élément et puis immédiatement les insérer dans une table

    Par exemple :

    Nicolas Dupont
    Stephane Delamare
    Marty Delin

    Il faudrait donc que je récupère ces donnée et que je fasse un insert pour chaque ligne.
    Nous aurions donc ici 3 insert à faire...

    Auriez vous une petite idée pour me permettre d'avancer cela ?
    J'attends avec impatience vote retour ;=)

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 118
    Par défaut
    Lis la doc QT sur la classe QFile : http://qt-project.org/doc/qt-4.8/qfile.html
    ou la doc STL sur la classe fstream http://www.cplusplus.com/reference/iostream/fstream/
    ou l'entrée de la FAQ sur les fichiers http://cpp.developpez.com/faq/cpp/?page=fichiers
    ou même les 3 pour comparer.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 65
    Par défaut
    Salut,

    Merci pour ta réponse, mais j'avais vu ces tutos mais je n'arrive pas à m'en sortir pour autant

  4. #4
    Membre averti
    Inscrit en
    Juin 2011
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2011
    Messages : 45
    Par défaut
    Bonjour,

    A priori, un fichier CSV est un fichier texte avec ";" comme séparateur.

    Donc tu peut gérer ça avec QTextStream.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    QTextStream Flux(ton fichier);
    QString donnee;
    Flux>>donnee;
    QListString listLigne=donnee.split("/n")
     
    QListString ligne=listLigne.value(i).split(";");
    Avec ça, tu aura la valeur du premier champs dans ligne.value(0);
    la valeur du secondchamps dans ligne.value(1);
    ....

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 65
    Par défaut
    Salut,
    Merci pour la réponse mais pour le moment j'ai cela qui me permet d'ouvrir et de lire mon fichier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
       string chemin =  "C:/Users/nikkyb/Desktop/version.txt";
        ifstream monFlux(chemin.c_str());
        if(monFlux){
            cout <<" OK pour ouverture";
            string ligne;
            while (getline(monFlux,ligne)){
              cout << ligne;
     
            }
     
        }else{
            cout <<"Erreur d'ouverture";
        }
    Dans la console il me donne :
    OK pour ouverture1.0 ; 2.03.0 ; 4.0
    Alors que dans le fichier il y a
    1.0 ; 2.0
    3.0 ; 4.0

    1 - Savez vous comment je pourrais ajouter les sauts à la ligne
    2 - Comment je peux récupérer les valeurs pour les réutiliser avec un insert par la suite

    Dans cette exemple, j'aurais 2 insert avec 2 valeur par insert

    Merci par avance à tous

  6. #6
    Membre émérite
    Avatar de mitkl
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2010
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2010
    Messages : 364
    Par défaut
    cout << ligne << endl;

  7. #7
    Membre confirmé
    Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Janvier 2011
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2011
    Messages : 114
    Par défaut
    Citation Envoyé par ccfconsulting Voir le message
    Bonjour à tous,

    J’essaie de récupérer le contenu d'un fichier csv.
    Voilà une fonction qui marche assez bien :
    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
     
    struct Donnees{
        int colonne0;
        double colonne1;
        QString colonne2;
    };
     
    void LireFichierDonnees(QVector<Donnees>& tableau)
    {
        Donnees data;
     
        QString chemin = "donnees.csv" ;
     
        QFile fichier(chemin);
        QMessageBox messageAlert;
        if (!fichier.open(QFile::ReadOnly)) {
            messageAlert.setWindowTitle("Attention !");
            messageAlert.setIcon(QMessageBox::Warning);
            messageAlert.setText(QString::fromUtf8("Problème non critique !"));
            messageAlert.setInformativeText(QString::fromUtf8("<center><big>Le fichier :</big> \"<b>%1</b>\" <big>est absent du serveur!</big></center>").arg(chemin));
            messageAlert.exec();
        }
     
        QTextStream flux(&fichier);
        while(!flux.atEnd()){
            QString ligne = flux.readLine();
            QStringList champ = ligne.split(";");
            data.colonne0 = champ.at(0).toInt();  // pour des entiers
            data.colonne1 = champ.at(1).toDouble(); // pour des réels
            data.colonne2 = champ.at(2); // pour du texte
            // etc...
     
            tableau.push_back(data);
        }
    }
    Tu envoies à la fonction, par référence, un QVector qui a la structure des données du fichier .csv, que tu retouveras complété à la fin de la fonction.

    Le séparateur est ici le ';' mais peut être modifié si nécessaire (ligne 27).

    Ne pas oublier le constructeur et le destructeur de la 'struct'

    Bon courage

Discussions similaires

  1. [File] récupérer le contenu d'un fichier
    Par kendras dans le forum C
    Réponses: 31
    Dernier message: 19/06/2006, 12h33
  2. Réponses: 5
    Dernier message: 10/04/2006, 12h07
  3. Aide : Décoder, récupérer le contenu d'un fichier .pst
    Par ATTIA dans le forum API, COM et SDKs
    Réponses: 10
    Dernier message: 23/03/2006, 16h11
  4. Comment récupérer le contenu de plusieurs fichiers textes ?
    Par calimero2611 dans le forum Langage
    Réponses: 9
    Dernier message: 19/02/2006, 15h45
  5. [ethereal] récupérer le contenu d'un fichier envoyé ?
    Par in dans le forum Développement
    Réponses: 1
    Dernier message: 19/06/2005, 15h44

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