Bonjour
J'ai cherché mais je ne trouve pas la solution pour ouvrir un ficheir csv, lire les données contenues puis les dupliquer en remplaçant au passage quelques une d'entre elles.
Qui peut me donner une solution je galére.
merci
Bonjour
J'ai cherché mais je ne trouve pas la solution pour ouvrir un ficheir csv, lire les données contenues puis les dupliquer en remplaçant au passage quelques une d'entre elles.
Qui peut me donner une solution je galére.
merci
Salut,
Voici ce que j'aurais fait pour lire et écrire des fichiers *.csv. Par exemple, si tu veux modifier le fichier test.csv, tu doit faire : java CSV test.csv test2.csv. J'espère t'avoir aidé.
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99 import java.io.*; import java.util.*; public class CSV { // Fichier CSV. public String fichier; // Cellules du fichiers à la suite. public LinkedList liste; // Cellules du fichiers dans un tableau. public String[][] cellules; public CSV(String fichier) { this.fichier = fichier; liste = new LinkedList(); } public void read() { int max, nbLignes; max = nbLignes = 0; LinkedList lMax = new LinkedList(); try { BufferedReader flotFiltre = new BufferedReader(new FileReader(fichier)); String ligne; String[] contenu; while((ligne = flotFiltre.readLine()) != null) { contenu = ligne.split(";"); for(int i = 0; i < contenu.length; ++i) liste.add(contenu[i]); lMax.add(contenu.length); max = Math.max(max,contenu.length); ++nbLignes; } flotFiltre.close(); } catch(IOException ex){} int c = 0; cellules = new String[nbLignes][max]; for(int j = 0; j < lMax.size(); ++j) { int n = (Integer)lMax.get(j); for(int k = 0; k < max; ++k) { if(k < n) cellules[j][k] = (String)liste.get(c++); else cellules[j][k] = ""; } } } public void write(String destination) { try { BufferedWriter flotFiltre = new BufferedWriter(new FileWriter(destination)); String ligne; // C'est ici qu'il faut que tu fasses tes modifs. // Exemple : cellules[2][3] = "Hello"; for(int i = 0; i < cellules.length; ++i) { ligne = ""; for(int j = 0; j < cellules[0].length; ++j) { ligne += cellules[i][j]; if(j < cellules[0].length - 1) ligne += ";"; } flotFiltre.write(ligne + "\n"); } flotFiltre.close(); } catch(IOException ex){} } public static void main(String[] args) { CSV csv = new CSV(args[0]); csv.read(); csv.write(args[1]); } }
Je te remercie mais finalement je l'ai résolu d'une maniére plus simple à laquelle je n'avais même pas songé la voici. Puis que je n'ai pas besoin de lire juste écrire avce les donées que je veux je fige celles qui ne changent pas et je remplace les autres que je veux remplacer
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
44
45
46
47
48
49
50
51 package test; import java.io.FileWriter; import java.io.IOException; public class TestCsv { public static void main(String args[]){ FileWriter fileWriter=null; String delimiter=";"; String[] extension={"OFE","OFI","ATE","RFE","FDS","TGR"}; String[] firstLineRequest ={"","A","B","C","3"}; String[] secondLineRequest ={"D","E","M","","5"}; String[] thridLineRequest ={"X","GEDS","2","EFR"}; String[] lineSeparator ={"","","",""}; String lineSeparatorTemplate=lineSeparator[0]+delimiter+lineSeparator[1]+delimiter+lineSeparator[2]+delimiter+lineSeparator[3]+"\n"; String thridLineRequestTemplate=thridLineRequest[0]+delimiter+thridLineRequest[1]+delimiter+thridLineRequest[2]+delimiter+thridLineRequest[3]+"\n"; String file="C:\\Test.csv"; try { //fileWriter= new FileWriter(file,true); fileWriter= new FileWriter(file); for (int i = 0; i < extension.length; i++) { firstLineRequest[0]=extension[i]; secondLineRequest[3]=extension[i]; String firstLineRequestTemplate=firstLineRequest[0]+delimiter+firstLineRequest[1]+delimiter+firstLineRequest[2]+delimiter+firstLineRequest[3]+"\n"; String secondLineRequestTemplate=secondLineRequest[0]+delimiter+secondLineRequest[1]+delimiter+secondLineRequest[2]+delimiter+secondLineRequest[3]+"\n"; fileWriter.write(firstLineRequestTemplate); fileWriter.write(secondLineRequestTemplate); fileWriter.write(thridLineRequestTemplate); fileWriter.write(lineSeparatorTemplate); } } catch (IOException e) { e.printStackTrace(); } finally{ if(fileWriter != null){ try { fileWriter.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
Partager