Bonjour à tous, c'est la première fois que je poste sur un forum, merci d'être indulgent.
Je cherche à importer des données CSV dans l'ERP de mon entreprise et j'ai besoin de les mettre en forme. En effet, des sauts de ligne présents dans les champs texte sont interprétés comme des sauts de ligne du tableau.
J'ai déjà pas mal cherché de solution et j'ai écris un programme :
Le problème est que je retrouve mes , séparatrices en sortie et je ne vois pas comment faire autrement pour ne pas les avoir.
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 import java.io.FileWriter; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; public class test { public static void main(String[] args) throws IOException { String dataOld = new String(Files.readAllBytes(Paths.get("c:\\test.csv"))); //System.out.println(dataOld); int nbCara=dataOld.length(); //System.out.println(nbCara); int i=0,j=0,k=0; while (i < nbCara-2) //Tant que le pointeur n'est pas à la fin du String (-1) { j=dataOld.indexOf((char)34,i); //Recherche le début du champ texte " à partir du caractère n° i //System.out.print("j :"); //System.out.println(j); k=dataOld.indexOf((char)34,j+1); //Recherche la fin du champ texte " à partir du début de ce champ //System.out.print("k :"); //System.out.println(k); String champ = dataOld.substring(j,k+1); //Extrait les caractères du champ texte //System.out.println(champ); if (champ.contains("[\r\n]+")) //Si le champ contient un saut de ligne { champ = champ.replaceAll("[\r\n]+"," "); // Remplacer le saut de ligne par un espace } FileWriter fw = new FileWriter("c:\\test1.csv",true); //écris dans un autre fichier fw.write(champ+';'); //Le champ + le séparateur fw.close(); i=k+1; //On incrémente le pointeur de la position de fin du champ +1 //System.out.println(i); } } }
Merci beaucoup pour votre aide.
Partager