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

Entrée/Sortie Java Discussion :

Afficher une colonne précise d'un fichier CSV


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 49
    Par défaut Afficher une colonne précise d'un fichier CSV
    Bonjour. Je viens d'ajouter la librairie OpenCSV et j'ai encore un peu de mal a comprendre comment elle fonctionne.
    Je voudrais que mon logiciel n'affiche que la 2e colonne de mon fichier CSV.
    J'ai trouvé un sujet sur internet pour m'aider mais le code donné ne fonctionne pas.
    Le code ajoute la ligne lue dans un tableau, puis affiche le 2e element du tableau. En l'occurence, le 2e element du tableau est sensé etre le contenue de la 2e colonne.
    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CSVReader reader = new CSVReader(new FileReader(fichier));
    	String [] nextLine;
    	 while ((nextLine = reader.readNext()) != null)
    	 	 {
    	 	  // Afficher la deuxième colonne de chaque ligne
          System.out.println (nextLine[1]);
                       }
    En lisant ceci, je pensais que readNext allait coupé la ligne tout seul afin de creer un element par colonne et les placer dans le tableau, mais en fait il ajoute toute la ligne dans le tableau. (NextLine[1] fait buger le programme, tandis que NextLine[0] affiche toute la ligne lue)

    Sinon existe-t-il des méthodes pour lire les colonnes d'un CSV ?

    Merci d'avance

  2. #2
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    Salut, ton fichier a-t il une entete:

    si oui tu peux proceder ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SVReader reader = new CSVReader(new FileReader(fichier));
     
    			reader.readHeaders();
     
    			while (reader.readRecord())
                            {
                              String productID = reader.get("nom de la colonne en question");
                            }
         reader.close();
    sinon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SVReader reader = new CSVReader(new FileReader(fichier));
     
     
    			while (reader.readRecord())
                            {
                              String productID = reader.get(1);
                            }
         reader.close();
    eric

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 49
    Par défaut
    Oui il possède une ligne d'en-tete.
    Je vais essayer ça, merci

    EDIT :

    Apres avoir essayer, j'ai 3 erreurs qui apparaissent :

    "the method readheaders() is undefined for the type CSVReader"
    "the method readRecord() is undefined for the type CSVReader"
    "the method get(String) is undefined for the type CSVReader"

  4. #4
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    tu as la mauvaise jar dans ta classpath,

    prends plutot celui de : javacsv.jar

    mais si tu veux a tout prix utiliser opencsv tu me fais signe.

    Eric

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par p4atch Voir le message
    En lisant ceci, je pensais que readNext allait coupé la ligne tout seul afin de creer un element par colonne et les placer dans le tableau, mais en fait il ajoute toute la ligne dans le tableau. (NextLine[1] fait buger le programme, tandis que NextLine[0] affiche toute la ligne lue)

    Merci d'avance
    OpenCSV va effectivement couper tout seul, pour autant qu'il y aie quelque chose à couper. Ton CSV ressemble à quoi? Il y a des constructeur avancés du reader qui permetten de préciser le séparateur, le caractère d'échappement et le nombre de lignes à sauter au début.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 49
    Par défaut
    j'ai essayé d'ajouter la librairie JavaCSV mais je n'y arrive plus. Il faut bien faire clic droit sur mon projet -> buildpath -> add external archive ?


    Nom : 1.png
Affichages : 1247
Taille : 16,1 Ko

    Et une fois la librairie javaCSV ajouté, quel "import" est ce que je dois faire ?
    De plus je ne sais pas si j'ai fait une fausse manip, mais le symbole de mon projet est devenu bizarre, j'ai un point d'exclamation rouge dessus maintenant :

    Nom : 2.png
Affichages : 1206
Taille : 4,6 Ko



    J'ai ensuite essayé de chercher de la doc sur openCSV, mais je ne comprends pas comment préciser le separateur a CSVReader

  7. #7
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    pour ajouter un autre separateur:
    ici : ";"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      CSVReader reader = new CSVReader(new FileReader(fichier), ';');
    Eric

  8. #8
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    fait un clic choisit dans ton menu :

    et regardes ce qui est en rouge la bas.

    Est ce que la compilation marche?

    Eric

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 49
    Par défaut
    Ah d'accord, c'est bien ce qui me semblait.. j'avais essayé entre "" et non entre ''
    Merci

  10. #10
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 49
    Par défaut
    Merci, le probleme était que j'avais un doublon de ma lib OpenCSV, le symbole a maintenant disparu.

  11. #11
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 49
    Par défaut
    Bonjour, je rouvre ce sujet car j'ai une derniere question a propos.


    Citation Envoyé par tchize_ Voir le message
    OpenCSV va effectivement couper tout seul, pour autant qu'il y aie quelque chose à couper. Ton CSV ressemble à quoi? Il y a des constructeur avancés du reader qui permetten de préciser le séparateur, le caractère d'échappement et le nombre de lignes à sauter au début.
    j'aimerais sauter la premiere ligne du fichier, du coup j'ai trouvé comment faire, mais il y a un constructeur avant : le caractere d'echapement
    est ce que je suis obligé de le preciser ou je peux direct indiquer le constructeur pour sauter les lignes ?
    En attendant j'ai mis un "?" comme caractere d'echapement car je pense ne pas en trouver dans mon fichier.

  12. #12
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Par défaut, le caractère d'échappement est \
    le quote par défaut est "
    le séparateur par défaut est ,


    il n'y a pas d'autre constructeur que ceux que tu vois dans la javadoc.

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

Discussions similaires

  1. [Débutant] Afficher dans une colonne précise
    Par heidi92 dans le forum VB.NET
    Réponses: 12
    Dernier message: 02/07/2014, 02h34
  2. [Débutant] Modifier une ligne prècise dans un fichier csv
    Par ganssy dans le forum VB.NET
    Réponses: 2
    Dernier message: 22/05/2012, 17h15
  3. [D7] StringGrid afficher une colonne comme 1e colonne visibl
    Par raoulmania dans le forum Composants VCL
    Réponses: 2
    Dernier message: 15/12/2005, 14h23
  4. aller à une position précise dans un fichier texte
    Par bassidi meryeme dans le forum Langage
    Réponses: 3
    Dernier message: 27/10/2005, 14h57
  5. Comment afficher une colonne text de SQL-server?
    Par oravelon dans le forum ASP
    Réponses: 2
    Dernier message: 18/08/2005, 09h11

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