Bonjour à tous, j'édite ma demande pour etre plus précis.

Je viens vous voir car j'ai un petit problème. Je construis des documents Excel en Java via POI.

La conception ne pose aucun problème mais quand je fais la mise en page, il se produit des bugs que je ne comprends pas...

Pour commencer voici le 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
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
 
 
org.apache.poi.hssf.usermodel.HSSFWorkbook wb = new org.apache.poi.hssf.usermodel.HSSFWorkbook();
org.apache.poi.hssf.usermodel.HSSFSheet sheet = wb.createSheet("ma feuille");
org.apache.poi.hssf.usermodel.HSSFRow row = null;
org.apache.poi.hssf.usermodel.HSSFCell cell = null;
org.apache.poi.hssf.usermodel.HSSFCellStyle cellStyle = null;
org.apache.poi.hssf.usermodel.HSSFDataFormat hssfDataFormat = null;
org.apache.poi.hssf.usermodel.HSSFFont fonte = wb.createFont();
 
//Si la periode n'est pas remplie
if (blocStatVente.getElement("QR_Periode").getAnswer().equals(""))
{
	JOptionPane.showMessageDialog(MainFrame.getInstance(), "Vous devez remplir la période", "ERREUR", JOptionPane.ERROR_MESSAGE);
	return;
}
//sinon
else
{
 
 
		//initialisation des variables dont nous avons besoin.
int i = 0;
int j = 0;
int nombreVendeur = 0;
int codeVendeur = 0;
int value = 0;
int resultInt = 0;
float resultFloat = 0; 
long resultLong = 0;
int ligne = 0;
String resultStr = null;
String ancienCodeVendeur = "a";
String nouveauCodeVendeur = null;
String strCountVendeur = null;
String strCodeVendeur = null;
String strCount = null;
String selectCountVendeur = null;
String SelectCodeVendeur = null;
String SelectDetail = null;
String SelectTotal = null;
String selectCount = null;
String selectCountVendeur = null;
java.sql.ResultSet resultSetCountVendeur = null;
java.sql.ResultSet resultSetCodeVendeur = null;
java.sql.ResultSet resultSetCount = null;
java.sql.ResultSet resultSetDetail = null;
java.sql.ResultSet resultSetTotal = null;
java.sql.Statement statementCountVendeur = DataBaseManager.getInstance().getConnection().createStatement();
java.sql.Statement statementCodeVendeur = DataBaseManager.getInstance().getConnection().createStatement();
java.sql.Statement statementCount = DataBaseManager.getInstance().getConnection().createStatement();
java.sql.Statement statementDetail = DataBaseManager.getInstance().getConnection().createStatement();
java.sql.Statement statementTotal = DataBaseManager.getInstance().getConnection().createStatement();
 
//On crée et remplit la variable pour la période et pour le nom de l'utilisateur qui seront utiles aux différentes requêtes.
int periode = Integer.parseInt(blocStatVente.getElement("QR_Periode").getAnswer());
String nomUtilisateur = ApplicationManager.getInstance().getCurrentUser().getLogin();
 
//On lance la procédure qui crée les données de Statistique Vente.
StatistiqueVenteBean.executerUneProcedure(nomUtilisateur, periode);
 
//commit
if(BWApplication.isModeConnected() == false) {
     DataBaseManager.getInstance().getConnection().commit();
} else {
     DataBaseManager.getInstance().commit(BWApplication.getActiveWizardId());
} 
 
//Compte le nombre de vendeur différent pour la periode afin de faire fonctionner la boucle principale.
selectCountVendeur = " select count(distinct code_vendeur) as nombreVendeur from paie_statistique_vente where periode = "+periode+" and nom_utilisateur = '"+nomUtilisateur+"'";
 
resultSetCountVendeur = statementCountVendeur.executeQuery(selectCountVendeur);
resultSetCountVendeur.next();
 
strCountVendeur = resultSetCountVendeur.getObject("nombreVendeur").toString();
nombreVendeur = Integer.parseInt(strCountVendeur);  
 
//on ferme le resultSet qui ne nous sert plus à rien.
resultSetCountVendeur.close();
 
//Cette requête permet de recupérer les données d'un vendeur (par vendeur). Il faut séparer cette requête car
//on veut une ligne par codeVendeur
selectCodeVendeur = "select distinct code_vendeur";
selectCodeVendeur += ", nom_vendeur, code_dr, nom_dr";
selectCodeVendeur += ", periode, date_cloture, taux_tva";
selectCodeVendeur += " from paie_statistique_vente";
selectCodeVendeur += " where periode = "+periode;
selectCodeVendeur += " and nom_utilisateur = '"+nomUtilisateur+"'";
selectCodeVendeur += " order by code_vendeur";	
 
resultSetCodeVendeur = statementCodeVendeur.executeQuery(selectCodeVendeur);
 
row = sheet.createRow(ligne);
ligne += 3;
 
 
fonte.setFontHeightInPoints((short) 18);
fonte.setBoldweight(org.apache.poi.hssf.usermodel.HSSFFont.BOLDWEIGHT_BOLD);
cell = row.createCell(0);
cell.setCellValue("Statistique Vente");
cellStyle = wb.createCellStyle();
cellStyle.setFont(fonte);
cellStyle.setAlignment(org.apache.poi.hssf.usermodel.HSSFCellStyle.ALIGN_CENTER);
cell.setCellStyle(cellStyle);
cellStyle = null;
fonte = null;
cell = null;
hssfDataFormat = null;
 
sheet.addMergedRegion(new org.apache.poi.hssf.util.Region(0,(short)0,0,(short)30));
 
for (i=1; i<=nombreVendeur; i++)
{
     resultSetCodeVendeur.next();
 
//On remplit nouveauCodeVendeur par le code vendeur actuel
     nouveauCodeVendeur = resultSetCodeVendeur.getObject("code_vendeur").toString();
 
// on compare le nouveau code vendeur avec l'ancien pour savoir
//si on doit ou non effectuer le traitement suivant. Cela permet, quand le code vendeur est différent
//de recommencer à mettre les informations uniques par vendeur : comme son code.
     if (!ancienCodeVendeur.equals(nouveauCodeVendeur))
          {
//On commence la construction du fichier Excel.
//On saute deux lignes pour séparer les différents vendeurs.
	row = null;
	row = sheet.createRow(ligne);
	ligne += 1;
 
	cell = row.createCell(0);
	cell.setCellValue("");
	cellStyle = wb.createCellStyle();
    	cellStyle.setBorderBottom(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_THIN);
    	cellStyle.setBorderLeft(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_MEDIUM);
    	cellStyle.setBorderTop(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_MEDIUM);
    	cellStyle.setBorderRight(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_NONE);
    	cell.setCellStyle(cellStyle);
	cellStyle = null;
	cell = null;
	hssfDataFormat = null;
 
	cell = row.createCell(1);
	cell.setCellValue("Vendeur");
 
	cellStyle = wb.createCellStyle();
    	cellStyle.setBorderBottom(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_THIN);
    	cellStyle.setBorderRight(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_THIN);
    	cellStyle.setBorderTop(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_MEDIUM);
    	cellStyle.setBorderLeft(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_NONE);
	cell.setCellStyle(cellStyle);
	cellStyle = null;
	cell = null;
	hssfDataFormat = null;
 
	resultStr = resultSetCodeVendeur.getObject("code_vendeur").toString();
	resultInt = Integer.parseInt(resultStr); 
	cell = row.createCell(2);
	cell.setCellValue(resultInt);
	cellStyle = wb.createCellStyle();
    	cellStyle.setBorderBottom(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_THIN);
    	cellStyle.setBorderLeft(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_THIN);
    	cellStyle.setBorderRight(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_THIN);
    	cellStyle.setBorderTop(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_MEDIUM);
    	cell.setCellStyle(cellStyle);
	cellStyle = null;
	cell = null;
	hssfDataFormat = null;
 
	cell = row.createCell(3);
	cellStyle = wb.createCellStyle();
	cell.setCellValue(resultSetCodeVendeur.getObject("nom_vendeur"));
	cellStyle.setBorderBottom(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_THIN);
    	cellStyle.setBorderLeft(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_THIN);
    	cellStyle.setBorderRight(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_MEDIUM);
    	cellStyle.setBorderTop(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_MEDIUM);
    	cell.setCellStyle(cellStyle);
	cellStyle = null;
	cell = null;
	hssfDataFormat = null;
 
	resultStr = resultSetCodeVendeur.getObject("taux_tva").toString();
	resultFloat = Float.parseFloat(resultStr); 
	cell = row.createCell(5);
	cell.setCellValue(resultFloat);
 
	cell = row.createCell(7);
	cell.setCellValue("Le");
	cellStyle = wb.createCellStyle();
	cellStyle.setBorderBottom(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_THIN);
    	cellStyle.setBorderLeft(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_MEDIUM);
    	cellStyle.setBorderTop(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_MEDIUM);
    	cellStyle.setBorderRight(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_NONE);
    	cell.setCellStyle(cellStyle);
	cellStyle = null;
	cell = null;
	hssfDataFormat = null;
 
	cell = row.createCell(8);
	cell.setCellValue(resultSetCodeVendeur.getObject("date_cloture"));
	cellStyle = wb.createCellStyle();
    	hssfDataFormat = wb.createDataFormat();
    	cellStyle.setDataFormat(hssfDataFormat.getFormat("dd/mm/yyyy"));
	cellStyle.setBorderBottom(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_THIN);
    	cellStyle.setBorderRight(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_MEDIUM);
    	cellStyle.setBorderTop(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_MEDIUM);
    	cellStyle.setBorderLeft(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_NONE);
    	cell.setCellStyle(cellStyle);
	cellStyle = null;
	cell = null;
	row = null;
	hssfDataFormat = null;
 
 
	row = sheet.createRow(ligne);
	ligne += 1;
 
	cell = row.createCell(0);
	cell.setCellValue("");
	cellStyle = wb.createCellStyle();
    	//hssfDataFormat = wb.createDataFormat();
    	//cellStyle.setDataFormat(hssfDataFormat.getFormat("General"));
    	cellStyle.setBorderBottom(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_MEDIUM);
    	cellStyle.setBorderLeft(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_MEDIUM);
    	cellStyle.setBorderTop(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_THIN);
    	cellStyle.setBorderRight(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_NONE);
    	cell.setCellStyle(cellStyle);
	cellStyle = null;
	cell = null;
	hssfDataFormat = null;
 
	cell = row.createCell(1);
	cell.setCellValue("Responsable régional");
	cellStyle = wb.createCellStyle();
	cellStyle.setBorderBottom(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_MEDIUM);
    	cellStyle.setBorderLeft(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_NONE);
    	cellStyle.setBorderTop(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_THIN);
    	cellStyle.setBorderRight(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_THIN);
    	cell.setCellStyle(cellStyle);
	cellStyle = null;
	cell = null;
	hssfDataFormat = null;
 
[...]
 
	strCodeVendeur= resultSetCodeVendeur.getObject("code_vendeur").toString();
	codeVendeur = Integer.parseInt(strCodeVendeur); 
 
	//Compte le nombre de ligne pour la periode pour le vendeur actif
	selectCount = " select count(*) as nombre from paie_statistique_vente where code_vendeur = "+codeVendeur+" and periode = "+periode+" and nom_utilisateur = '"+nomUtilisateur+"'";
	resultSetCount = statementCount.executeQuery(selectCount);
	resultSetCount.next();
 
	//met le nombre de ligne pour le vendeur dans la variable value.
	strCount= resultSetCount.getObject("nombre").toString();
	value = Integer.parseInt(strCount); 
 
	//On ferme le resultSet de la requete du dessus car on n'en a plus besoin pour le moment.
	resultSetCount.close();
 
	//Récupère les détails pour le vendeur selectionné 
	selectDetail = " select code_commande, nom_client, id_activite, montant_vente_ttc, frais_de_port_ttc, ca_total_ht";
	selectDetail += ", ca_cadre_ht, ca_empreinte_ht, ca_montre_ht, ca_travaux_ht, ca_foulard_ht, nombre_cadre, nombre_empreinte, nombre_montre, nombre_travaux";
	selectDetail += ", nombre_foulard, ca_lpa_photo_ttc, ca_lpa_20pc_ht, com_lpa_photo, client_avoir, client_recommande, ca_ht_mensuel_reco, nombre_abo_vip";
	selectDetail += ", reportage_invendu, nombre_client_ref, nombre_client_traite, nombre_client_hm, num_colis, id_etat_vente";
	selectDetail += ", idreportage, lieu_vente";
	selectDetail += " from paie_statistique_vente";
	selectDetail += " where periode = "+periode;
	selectDetail += " and code_vendeur = "+codeVendeur;			selectDetail += " and nom_utilisateur = '"+nomUtilisateur+"'";
	selectDetail += " order by code_vendeur, code_commande";
 
	resultSetDetail = statementDetail.executeQuery(selectDetail);
 
	//boucle sur le nombre de ligne pour le vendeur selectionne
	for (j=1; j<=value; j++)
	{
 
		resultSetDetail.next();
 
		//On prend comme reference le premier code vendeur pour pouvoir faire la comparaison avec le code vendeur suivant pour savoir si on saute
		// des lignes ou non.
		row = null;
		row = sheet.createRow(ligne);
		ligne += 1;
 
		resultStr = resultSetDetail.getObject("num_colis").toString();
		resultInt = Integer.parseInt(resultStr); 
		cell = row.createCell(0);
		cell.setCellValue(resultInt);
		cellStyle = wb.createCellStyle();
		cellStyle.setBorderBottom(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_THIN);
    		cellStyle.setBorderRight(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_THIN);
    		cellStyle.setBorderTop(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_THIN);
    		cellStyle.setBorderLeft(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_MEDIUM);
    		cell.setCellStyle(cellStyle);
		cellStyle = null;
		cell = null;
		hssfDataFormat = null;
 
		resultStr = resultSetDetail.getObject("idreportage").toString();
		resultInt = Integer.parseInt(resultStr); 
		cell = row.createCell(1);
		cell.setCellValue(resultInt);
		cellStyle = wb.createCellStyle();
		cellStyle.setBorderBottom(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_THIN);
    		cellStyle.setBorderRight(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_THIN);
    		cellStyle.setBorderTop(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_THIN);
    		cellStyle.setBorderLeft(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_THIN);
    		cell.setCellStyle(cellStyle);
		cellStyle = null;
		cell = null;
		hssfDataFormat = null;
 
		resultStr = resultSetDetail.getObject("code_commande").toString();
		resultInt = Integer.parseInt(resultStr); 
		cell = row.createCell(2);
		cell.setCellValue(resultInt);
		cellStyle = wb.createCellStyle();
		cellStyle.setBorderBottom(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_THIN);
    		cellStyle.setBorderRight(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_THIN);
    		cellStyle.setBorderTop(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_THIN);
    		cellStyle.setBorderLeft(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_THIN);
    		cell.setCellStyle(cellStyle);
		cellStyle = null;
		cell = null;
		hssfDataFormat = null;
 
[...]
 
	}//FIN DE LA BOUCLE PAR COMMANDE
 
	//Select qui permet de faire la somme de toutes les colonnes par vendeur
	selectTotal = "select nombre_client_hm, sum(montant_vente_ttc) as montant_vente_ttc, sum(frais_de_port_ttc) as frais_de_port_ttc, sum(ca_total_ht) as ca_total_ht";
	selectTotal += ", sum(ca_cadre_ht) as ca_cadre_ht, sum(ca_empreinte_ht) as ca_empreinte_ht, sum(ca_montre_ht) as ca_montre_ht, sum(ca_travaux_ht) as ca_travaux_ht, sum(ca_foulard_ht) as ca_foulard_ht";
	selectTotal += ", sum(nombre_cadre) as nombre_cadre, sum(nombre_empreinte) as nombre_empreinte, sum(nombre_montre) as nombre_montre, sum(nombre_travaux) as nombre_travaux";
	selectTotal += ", sum(nombre_foulard) as nombre_foulard, sum(ca_lpa_photo_ttc) as ca_lpa_photo_ttc, sum(ca_lpa_20pc_ht) as ca_lpa_20pc_ht, sum(com_lpa_photo) as com_lpa_photo";
	selectTotal += ", sum(client_avoir) as client_avoir, sum(client_recommande) as client_recommande, sum(ca_ht_mensuel_reco) as ca_ht_mensuel_reco, sum(nombre_abo_vip) as nombre_abo_vip";
	selectTotal += ", sum(reportage_invendu) as reportage_invendu, sum(nombre_client_ref) as nombre_client_ref, sum(nombre_client_traite) as nombre_client_traite";
	selectTotal += " from paie_statistique_vente";
	selectTotal += " where periode = "+periode;
	selectTotal += " and code_vendeur = "+codeVendeur;			selectTotal += " and nom_utilisateur = '"+nomUtilisateur+"'";
	selectTotal += " group by nombre_client_hm";
 
	resultSetTotal = statementTotal.executeQuery(selectTotal);
	resultSetTotal.next();
 
	row = null;
	row = sheet.createRow(ligne);
	ligne += 1;
	cell = row.createCell(0);
	cell.setCellValue("Total mois : ");
	cellStyle = wb.createCellStyle();
	cellStyle.setBorderBottom(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_THIN);
    	cellStyle.setBorderRight(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_NONE);
    	cellStyle.setBorderTop(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_MEDIUM);
    	cellStyle.setBorderLeft(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_MEDIUM);
    	cell.setCellStyle(cellStyle);
	cellStyle = null;
	cell = null;
	hssfDataFormat = null;
 
	cell = row.createCell(1);
	cell.setCellValue("Nombre de client référencés : ");
	cellStyle = wb.createCellStyle();
	cellStyle.setBorderBottom(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_THIN);
    	cellStyle.setBorderRight(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_NONE);
    	cellStyle.setBorderTop(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_MEDIUM);
    	cellStyle.setBorderLeft(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_NONE);
    	cell.setCellStyle(cellStyle);
	cellStyle = null;
	cell = null;
	hssfDataFormat = null;
 
 
	resultStr = resultSetTotal.getObject("nombre_client_ref").toString();
	resultInt = Integer.parseInt(resultStr);
	cell = row.createCell(2);
	cell.setCellValue(resultInt);
	cellStyle = wb.createCellStyle();
	cellStyle.setBorderBottom(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_THIN);
    	cellStyle.setBorderRight(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_MEDIUM);
    	cellStyle.setBorderTop(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_MEDIUM);
    	cellStyle.setBorderLeft(org.apache.poi.hssf.usermodel.HSSFCellStyle.BORDER_NONE);
    	cell.setCellStyle(cellStyle);
	cellStyle = null;
	cell = null;
	hssfDataFormat = null;
 
[...]
 
	resultSetTotal.close();
 
	ligne += 1;
 
//fin du if
	}
 
	ancienCodeVendeur = resultSetCodeVendeur.getObject("code_vendeur").toString();
 
	//fin boucle sur nombre de vendeur
}
 
FileOutputStream fileOut;
try {
fileOut = new FileOutputStream(System.getProperty("user.home") + "/Bureau/statistique_vente_"+periode+".xls");
wb.write(fileOut);
fileOut.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
 
//On ferme les objets restés ouverts.
resultSetCodeVendeur.close();
resultSetDetail.close();
 
}//fin du premier if (periode remplie ou non)
Voilà une bonne chose de faite.

J'ai mis des [...] dans le code pour eviter la répétition car j'ai pas mal de cellules et il n'y a pas d'erreurs dans les parties supprimées.

Mon problème est le suivant : J'ai pour chaque cellule un style (avec bordure la plupart du temps) donc je lance la création du document, il n'y a pas de problème et quand je l'ouvre j'ai deux messages d'Excel :
1) "Nombres de formats de cellules différents trop élevés"
2) "Excel a rencontré une erreur et à supprimé une partie de la mise en forme pour eviter d'endommager le classeur. Revérifier soigneusement votre mise en page"

Pour quoi ai-je ces messages? Cela veut dire que j'applique plusieurs Style pour UNE cellule ou trop de Style dans le document en général?

De plus une fois que j'ouvre le classeur et que je passe ces deu messages, je constate que les mises en forme se font bien dans les boucles mais au milieu d'une boucle, il n'y a plus de mises et en formes et beaucoup plus bas dans le document, la mise en forme repart à 0 et recommence.
J'explique : Dans mon document j'ai un titre que je fais en gras. il n'est dans aucune boucle pourtant en bas de mon document il met une cellule en gras puis refais la mise en forme dans l'ordre où je l'ai écrit et donc ça ne correspond pas aux bonnes cellules...

Aidez moi s'il vous plait je ne comprends plus rien là

Merci d'avance