Bonjour à tous,

j'utilise poi pour pouvoir lire un fichier excel et générer des fichiers csv à partir des onglets. Donc c'est cool le programme marche mais depuis hier je suis confronté à un cas que je n'avais pas pensé celui des cellules qui contiennent des retours à la ligne (alt+enter sous excel).

Une fois le csv généré j'aperçois que cela provoque un retour à la ligne dans mon fichier.
Je me suis dit normal je n'ai pas géré le retour chariot, mais pourtant lorsque je récupère le contenu de la cellule dans ma chaîne depuis j'arrive pas à enlever le retour chariot.

voilà la partie du code (j'ai délimité avec des commentaires l'endroit précis :
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
public void genCSV(String cheminSortie, String NomOnglet, Vector Col,int debLigne, int finLigne) {
		CSVWriter writer = null; 
 
		//recupere l'onglet
		Sheet sheet = wb.getSheet(NomOnglet);
 
		try{ 
			writer = new CSVWriter(new FileWriter(cheminSortie), ';', NO_QUOTE_CHARACTER); 
 
			//pour chaque ligne
			for(int j=debLigne;j<finLigne;j++) 
			{ 
				//System.out.println("ligne : "+(j+1));
				//vecteur temporaire qui récupère les valeurs des cellules de la ligne j
				Vector temp = new Vector(); 
 
				//recupère la ligne 
				Row row = sheet.getRow(j);
				if (row!=null) {
					//pour chaque colonnes selectionnées
					for(short k=0;k<Col.size();k++) {
 
						if(row.getCell((Integer) Col.get(k)) != null) {
							System.out.println("la cellule n'est pas null");
							//recupere la cellule
							Cell cell = row.getCell((Integer) Col.get(k)); 
							String value = null; 
							//traitement selon le type de la cellule
							switch (cell.getCellType()) 
							{ 
								case Cell.CELL_TYPE_FORMULA : 
									double  p = Math.pow(10.0, 2);
									double val=0;
									val = Math.floor(cell.getNumericCellValue()*p)/p;
									value = ""+val;
									value.replaceAll(" ", "");
									if (value.substring(value.length()-2, value.length()).equals(".0")) {
										value=value.substring(0, value.length()-2);
									}
									System.out.println(value);
									temp.add(value);
								break; 
								case Cell.CELL_TYPE_NUMERIC : 
									if(DateUtil.isCellDateFormatted(cell)) {
										SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yy");
				                    	Date date = new Date(cell.getDateCellValue().getTime());
				                    	value = ""+sdf.format(date);
				                    }
									else if ("0%".equals( cell.getCellStyle().getDataFormatString() )) {
										double  round2 = Math.pow(10.0, 2);
										double val2=0;
										val2 = (Math.floor(cell.getNumericCellValue()*round2)/round2)*100;
										value = ""+val2;
										value.replaceAll(" ", "");
										if (value.substring(value.length()-2, value.length()).equals(".0")) {
											value=value.substring(0, value.length()-2);
										}
										System.out.println(value);
									}
									else {
										double  p2 = Math.pow(10.0, 2);
										double val2=0;
										val2 = Math.floor(cell.getNumericCellValue()*p2)/p2;
										value = ""+val2;
										value.replaceAll(" ", "");
										if (value.substring(value.length()-2, value.length()).equals(".0")) {
											value=value.substring(0, value.length()-2);
										}
										System.out.println(value);
									}
									temp.add(value); 
								break; 
/////////////////////////////////////////////////////////ICI traitement pour les chaines/////////////////////////////////////////////////////////////////
								case Cell.CELL_TYPE_STRING : 
 
									value = cell.getRichStringCellValue().getString(); 
									value.replaceAll("chr(10)", " ");
									value.replaceAll("
", " ");
									value.replaceAll("car(10)", " ");
									value.replaceAll("char(10)", " ");
									value.replaceAll("chr(13)", " ");
									value.replaceAll("
", "");
									value.replaceAll("car(13)", " ");
									value.replaceAll("char(13)", " ");
									String RC = System.getProperty("line.separator" ); 
									value.replaceAll(RC," " );
 
 
									System.out.println(value);
									temp.add(value); 
								break; 
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
								case Cell.CELL_TYPE_BLANK :
									value =""; 
									temp.add(value);
								break;
								default : value =""; temp.add(value);break;
							}
						}
						else if(row.getCell((Integer) Col.get(k)) == null) {
							System.out.println("la cellule est null");
							 String value = null; 
							  value ="";
							  System.out.println(value);
							  temp.add(value);
							}
					}
					//on ajoute la ligne au vecteur qui contient toutes les lignes
					this.lignes.add(temp);
				}
 
			}
 
			for(int i=0;i<this.lignes.size();i++) 
			{ 	
				System.out.println(this.lignes.size());
				Vector temp2 = new Vector((Vector)lignes.get(i)); 
				String[] tab = new String[temp2.size()]; 
				 for(int l=0;l<temp2.size();l++) { 
					tab[l] = (String)temp2.get(l); 
					System.out.println("insertion "+l+" : "+tab[l]); 
				} 
				 writer.writeNext(tab);
			} 
 
			writer.close(); 
		}
		catch(IOException ex) 
		{ 
			System.err.println("Erreur lors de l'écriture : "+ex.getMessage()); 
		} 
		lignes.removeAllElements();
	}
la partie du traitement des chaines :
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
/////////////////////////////////////////////////////////ICI traitement pour les chaines//////////
case Cell.CELL_TYPE_STRING : 
 
	value = cell.getRichStringCellValue().getString(); 
	value.replaceAll("chr(10)", " ");
	value.replaceAll("
", " ");
	value.replaceAll("car(10)", " ");
	value.replaceAll("char(10)", " ");
	value.replaceAll("chr(13)", " ");
	value.replaceAll("
", "");
	value.replaceAll("car(13)", " ");
	value.replaceAll("char(13)", " ");
	String RC = System.getProperty("line.separator" ); 
	value.replaceAll(RC," " );
 
 
	System.out.println(value);
	temp.add(value); 
	break; 
////////////////////////////////////////////////////////////////////////////////////////////////
J'ai cherché sur internet et sur les javadocs mais je n'ai rien trouvé qui m'aide.
Alors si vous avez une solution je suis preneurs!

merci d'avance pour votre aide!