C++ - Importer Fichier CSV
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

C++ - Importer Fichier CSV



  1. #1
    Eroos

    Question C++ - Importer Fichier CSV


    ------

    Bonjour,

    Je suis actuellement en train de programmer une application en c++ sur le logiciel qtCreator permettant d'importer un fichier csv (séparateur: point-virgule). Ce fichier csv en question possède qu'une seule colonne mais plusieurs milliers de lignes, exemple sur 4 lignes de mon fichier csv (ouvert avec le bloc-notes) :
    0.039857388,-0.003738137,0.06250116,0.25656 67,-0.001272172,-0.01373339,1.02111,-21.17171,7.4605,-45.51118,992.6195
    0.059785843,0.1196105,-0.054944,0.07280188,-0.00516515,-0.01240508,1.026502,-21.54725,7.464026,-45.50937,992.6195
    0.079714298,-0.06540834,0.003764346,-0.04946759,0.001198196,-0.0152172,1.024932,-21.54725,7.464026,-45.50937,992.6161
    0.099642754,0.1195519,0.062362 03,-0.04940103,-0.001855387,-0.008762462,1.013986,-21.1812,7.841142,-45.96167,992.6161
    Chaque valeur est séparée par une "," et les valeurs qui m'intéresse dont la première et la seconde, le reste il ne faut pas que je le récupère.

    J'aimerais stocker la première valeur de la ligne dans une variable QVector <QString> intitulé "ValeurTemps" et la seconde dans une variable QVector <QString> intitulé "ValeurGyroX".
    Voici donc le code que j'ai réalisé :

    Code:
    void MainWindow::on_charge_clicked()
    {
        qDebug()<<"Bouton clické";
        table.clear();
        QString dossier=QFileDialog::getOpenFileName(this,tr("Open CSV"),"/",tr("CSV Files(*.csv)"));
    
        QFile file(dossier);
    
    
        if (!file.open(QIODevice::ReadOnly)){
            qDebug()<<file.errorString();
        }
    
    
        while(!file.atEnd()){
            line = file.readLine();
            table.append(line);
        }
    
    
        if(!table.isEmpty())
        {
            RecupValeur();
        }
    }
    
    
    void MainWindow::RecupValeur() {
        table.removeFirst();
        qDebug()<<"avant boucle";
        QStringList SplitTable;
        for(int i=0; i<table.size(); i++)
        {
            qDebug()<<"avant séparateur";
    
            SplitTable=line.split(",");
            ValeurTemps[i]=SplitTable.value(0);
            ValeurGyroX[i]=SplitTable.value(1);
    
            qDebug()<<ValeurTemps[i];
            qDebug()<<ValeurGyroX[i];
        }
    }
    Celui-ci ne me pose pas de problème lors de la compilation ni lorsque je lance mon programme. Mais sur ma fenêtre graphique j'ai donc un bouton charge qui me permet de récupérer le fichier csv en question (grâce au code ci-dessus) et lorsque j'essaie de charger un fichier csv, voici ce que j'ai d'indiquer dans ma sortie de l'application (qui m'indique également ou je me trouve dans mon code grâce aux qDebug) :


    Démarrage de C:\Users\Vincent\Documents\c++ \QCM\build-QCM_Serveur-Desktop_Qt_5_7_0_MinGW_32bit-Debug\debug\QCM_Serveur.exe...
    Bouton clické
    shell\comdlg32\fileopensave.cp p(14274)\comdlg32.dll!73CD2833 : (caller: 73D0211C) ReturnHr(1) tid(2bd4) 80004005 Erreur non spécifiée
    CallContext:[\PickerModalLoop]
    avant boucle
    avant séparateur
    ASSERT failure in QVector<T>:: operator[]: "index out of range", file C:\Qt\5.7\mingw53_32\include/QtCore/qvector.h, line 433
    C:\Users\Vincent\Documents\c++ \QCM\build-QCM_Serveur-Desktop_Qt_5_7_0_MinGW_32bit-Debug\debug\QCM_Serveur.exe s'est terminé avec le code 3

    Comment puis-je corriger mon code de façon à obtenir le résultat que je souhaite c'est-à-dire, enregistrer les deux premières valeurs de chaque ligne de mon fichier csv et ainsi à l'aide de mon QVector faire appel quand j'en ai besoin à la valeur qui se trouve à ValeurTemps[156] par exemple et pouvoir l'utiliser dans des calculs ?

    Merci d'avance pour vos réponses,
    Cordialement,
    Vincent DUGUET

    -----

  2. #2
    Bluedeep

    Re : C++ - Importer Fichier CSV

    Bonjour,
    Citation Envoyé par Eroos Voir le message

    Ce fichier csv en question possède qu'une seule colonne
    Désolé, mais je ne comprends pas : si il n'y a qu'une seule colonne à quoi sert le séparateur de colonne ? (le ";" ici).
    Par principe un fichier CSV est un fichier qui est structuré par un séparateur de colonne (";", ",", tabulation ou autre).
    Dernière modification par Bluedeep ; 16/05/2017 à 15h45.

  3. #3
    pm42

    Re : C++ - Importer Fichier CSV

    Et sinon, pourquoi tu mets des trucs dans ton vecteur avec xxx[i] = yyy ?
    Il est affecté à la bonne taille le vecteur ?
    Sinon tu remplis un truc qui n'existe pas. C'est que tu dis le message d'erreur. Et la doc de QVector.

  4. #4
    Eroos

    Re : C++ - Importer Fichier CSV

    Citation Envoyé par Bluedeep
    Désolé, mais je ne comprends pas : si il n'y a qu'une seule colonne à quoi sert le séparateur de colonne ? (le ";" ici).
    Par principe un fichier CSV est un fichier qui est structuré par un séparateur de colonne (";", ",", tabulation ou autre).
    Car je trouvais ça relativement simple de séparer les valeurs de ma seule colonne avec line.split(",") après je dis peut-être des bêtises...

    Sinon avez-vous une méthode permettant de séparer les valeurs de chaque ligne dans la première colonne ?...

    Citation Envoyé par pm42
    Et sinon, pourquoi tu mets des trucs dans ton vecteur avec xxx[i] = yyy ?
    Il est affecté à la bonne taille le vecteur ?
    Sinon tu remplis un truc qui n'existe pas. C'est que tu dis le message d'erreur. Et la doc de QVector.
    Oui je crois comprendre ce que vous voulez dire, je ne suis pas un professionnel en c++, mais l'erreur est que je ne descend pas dans mes lignes je stocke tout le temps les mêmes valeurs dans un tableau très très grand... C'est ça, non ?
    Mais je ne vois toujours pas comment régler ce problème non plus...

    Merci pour vos réponses !

  5. A voir en vidéo sur Futura
  6. #5
    Eroos

    Re : C++ - Importer Fichier CSV

    Fin j'ai compris que j'ai sans doute mal créé mon QVector mais en plus de cela il me semble que je ne descends pas dans la lecture de mes lignes...

Discussions similaires

  1. Importer fichier tableur dans Python
    Par Lynx83 dans le forum Programmation et langages, Algorithmique
    Réponses: 47
    Dernier message: 25/12/2015, 12h58
  2. Matlab: Importer certaines colonnes d'un fichier texte
    Par invite6d0ad495 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 11/02/2012, 10h11
  3. Altium designer 3D: importer fichier 3D sur Solid works ??
    Par totolelectro dans le forum Électronique
    Réponses: 2
    Dernier message: 08/12/2010, 14h33
  4. Macro: importer un fichier txt vers Excel
    Par AG664 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 16/02/2010, 13h31
  5. comment importer un fichier dans kcam 4
    Par invite7c424786 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 27/06/2008, 06h53