Bonjour
voila, je récupère les données d'un fichier .csv dans un Vector et je voudrais savoir comment récupérer par exemple la 2eme colonne du vecteur?
merci d'avance
Bonjour
voila, je récupère les données d'un fichier .csv dans un Vector et je voudrais savoir comment récupérer par exemple la 2eme colonne du vecteur?
merci d'avance
Bonjour jacko2,
Tu as un Vector<String> contenant toutes les lignes de ton fichier ?
Si c'est le cas, la notion de colonne n'existe pas dans ton Vector.
Il vaudrait mieux alors que tu alimentes un Vector<String[]> ou String[] représente le tableau des colonnes de ton CSV, que tu as alimenté parEnsuite pour récupérer la nième colonne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part String[] s = ligne.split(";")
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Vector<String> getColonne(int index) { Vector<String> out = new Vector<String>(); for (String[] ligne : this.monVector.values()) out.add(ligne[index]); return out; }
j'ai essayer avec le SPLIT mais il n'est pas dispo
voila la parite de mon code
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 private void readFromLine(String tempLine) { if (tempLine == null) { return; } Vector currentLine = new Vector(); Iterator iter = currentLine.listIterator(); m_fileContent.add(currentLine); m_rowsCount++; if (tempLine.trim().length() == 0) { return; } int colCount = 0; int cursorBegin = 0; int cursorEnd = tempLine.indexOf(CELL_SEPARATOR); while (cursorBegin > -1) { if (cursorEnd == -1) { currentLine.add(tempLine.substring(cursorBegin)); cursorBegin = cursorEnd; } else { currentLine.add(tempLine.substring(cursorBegin, cursorEnd)); cursorBegin = cursorEnd + 1; } cursorEnd = tempLine.indexOf(CELL_SEPARATOR, cursorBegin); colCount++; System.out.println(currentLine + "\n"); } if (colCount > getColsCount()) { setColsCount(Math.max(getColsCount(), colCount)); } }
Je crois que j'avais mal capté ce que tu voulais faire.
Si tu veux récupérer le 2ème élément de ton Vector, tu fais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 String s2 = monVector.get(1); // retourne le 2ème élément String s3 = monVector.get(2); // retourne le 3ème élément ...
j'obtiens une erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 1 at java.util.Vector.get(Unknown Source)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 if (monVector.size() >= 2) String s2 = monVector.get(1); // retourne le 2ème élément else System.out.println("ZUT !!! mon Vector a moins de 2 éléments");![]()
voici le message d'erreur :
pour ces 2 lignes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 java.lang.ArrayIndexOutOfBoundsException: 1 traitements.CreationFichier.creationFichier(CreationFichier.java:41) CategoriesProblemes.doGet(CategoriesProblemes.java:40) javax.servlet.http.HttpServlet.service(HttpServlet.java:690) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
traitements.CreationFichier.creationFichier(CreationFichier.java:41)
CategoriesProblemes.doGet(CategoriesProblemes.java:40)
ce n'est pas de là que vient l'erreur, car cela fonctionne avec un fichier plus petit
je ne comprends pas, parce que mon fichier CSV fait 22 Mo et je n'ai pas cette erreur alors que mon fichier texte ne fait que 7,5 Mo et j'ai l'erreur![]()
Cela ne doit pas venir de la taille de ton fichier.
Tu peux donner l'instruction dadns CreationFichier.java à la ligne 41 ?
voici ma ligne 41
mais je doute que ca vienne de là
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 writer.ecrireFichier(val + " " + tab2[0] + " " + tab2[1] + " " + tab2[3] + " " + tab2[15] + " " + tab2[16] + "\n");
effectivement, après un test, j'ai remarqué qu'il y avait 3 records dont un champ était vide, j'ai donc supprimé ces 3 lignes et ce la fonctionne nikel![]()
Bonjour,
j'ai suivi vos conseils pour moi lire un fichier .csv mais est-ce la meme procédure pour lire un fichier excel ?
parce que j'ai essayé, ca fonctionne sauf que ca affiche des caractères illisibles. J'ai meme convertit le fichier XLS en fichier texte et j'ai le meme problème alors que quand on ouvre le fichier avec un éditeur, c'est tout à fait lisible
Merci d'avance.
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
36
37
38
39
40
41
42
43 private void readFromFile(String reader) { File nom = new File(reader); BufferedReader buffReader; try { buffReader = new BufferedReader(new FileReader(nom)); if (buffReader != null) { try { String tempLine; tempLine = buffReader.readLine(); tampon = new StringBuffer(); while (tempLine != null) { currentLine = new Vector<String>(); currentLine.add(tempLine); String texte = "" + currentLine; //texte = texte.substring(1, (texte.length() - 1)); tampon.append("" + texte + "<br>"); System.out.println(tampon.toString() + "\n"); tempLine = buffReader.readLine(); } } catch (IOException e) { System.err.println("Erreur lecture fichier CSV: " + e.toString()); } finally { try { buffReader.close(); } catch (IOException e) { System.err.println("Erreur fermeture fichier CSV: " + e.toString()); } } } } catch (FileNotFoundException e1) { e1.printStackTrace(); } System.runFinalization(); System.gc(); }
hello,
j'ai un probleme dans mon vecteur,
mon probleme si j'ai 80 personne, je dois ecrire 80 fois la methode de l'ajout
addElement(objet);
voilà mon code source:
Stagiaire stg=new Stagiaire();
Stagiaire stg1=new Stagiaire();
Passrelle p=new Passrelle();
Vector<Object> v=new Vector<Object>();
stg.saisire();
p.saisir();
stg1.saisire();
v.addElement("Lundi");
v.addElement(stg);
v.addElement(p);
v.add(3,stg1);
for(int i=0;i<v.size();i++)
System.out.println("element N°"+i+":"+ (v.elementAt(i)));
C'est quoi une passrelle ?
Je ne vois pas bien ce que tu veux faire, si tu veux saisir 80 personnes bah tu fais ça :
Tu as plutôt 80 colonnes dans ton fichier de types différents, non ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 for (int i=0; i<80; i++) { Stagiaire stg = new Stagiaire(); stg.saisire(); v.addElement(stg); }
Dans ce cas tu vas bien être obligé de dire quelque part :
champ1 est de type String
champ2 est de type Stagiaire
champ3 est de type Number
champ4 est de type Stagiaire
...
* 80
A quoi ressemble ton fichier ? Je pense que tu es sur une mauvaise piste...
Supposons que tu ais un fichier de personnes avec la structure suivante :
NOM | PRENOM | AGE
Alors ce que je ferai c'est créer un objet Java Personne :
Personne
+ nom
+ prenom
+ age
et créer une nouvelle personne pour chaque ligne du fichier pour alimenter une : List<Personne>
Ensuite si tu veux par exemple jouer sur les "colonnes" comme calculer l'âge moyen, tu boucles sur les personnes et le tour est joué.
Partager