Bonjour,
Voici une opération qui renvoie le style de la cellule.
En paramètre j'ai :
. le classeur
. 1 tableau en int contenant toujours que 3 occurrences et qui peremettra de définir la couleur de la cellule
. et le libellé du type de ligne qui sera "ENTETE" de l'onglet Excel ou "CORPS" du fichier Excel
Pour simplifier et faire un focus sur le problème, j'ai rajouter au début de l'opération dans le cas de l'entête de remplir le tableau des couleurs RGB, pour que chaque champs de l'entête soit toujours de couleur VERT.
Toutes les cellules CORPS seront toujours coloré comme il se doit. Par contre les cellules entêtes reste toujours en blanc, ce qui n'est pas normal, car elles devrait être de couleur verte. Je ne comprends pas pourquoi. Est ce que quelqu'un aurait une idée ?
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 // Opération qui en fonction des codes couleur RGB données en int, va donner en sortie le style de cellule public XSSFCellStyle styleDynamique(XSSFWorkbook e_classeur, int[] e_tableauCodeCouleurRGBFondDeCellule, String e_libelleTypeDeLigne) { // declaration des varibales locales XSSFCellStyle s_styleDeLaCellule = null; Color l_couleur = null; IndexedColorMap l_indexedColorMap = null; XSSFColor l_xSSFCouleur = null; Font l_police = null; // Code mis pour test if ("ENTETE".equals(e_libelleTypeDeLigne)) { // Coloration en vert e_tableauCodeCouleurRGBFondDeCellule[0] = 76; e_tableauCodeCouleurRGBFondDeCellule[1] = 153; e_tableauCodeCouleurRGBFondDeCellule[2] = 0; } // Positionnement de la couleur de l'onglet en fonction des codes couleur reçu en entrée - palette de couleur RGB l_couleur = new Color(e_tableauCodeCouleurRGBFondDeCellule[0], e_tableauCodeCouleurRGBFondDeCellule[1], e_tableauCodeCouleurRGBFondDeCellule[2]); l_indexedColorMap = e_classeur.getStylesSource().getIndexedColors(); l_xSSFCouleur = new XSSFColor(l_couleur, l_indexedColorMap); s_styleDeLaCellule = e_classeur.createCellStyle(); // attribution de la couleur en fond de cellule s_styleDeLaCellule.setFillForegroundColor(l_xSSFCouleur); s_styleDeLaCellule.setFillPattern(FillPatternType.SOLID_FOREGROUND); // s_styleDeLaCellule.setFillPattern(FillPatternType.FINE_DOTS); // s_styleDeLaCellule.setFillPattern(FillPatternType.BIG_SPOTS); // s_styleDeLaCellule.setFillBackgroundColor(IndexedColors.YELLOW.getIndex()); // s_styleDeLaCellule.setFillPattern(FillPatternType.SOLID_FOREGROUND); // Rajout de bordures Fines pour chaque cellule s_styleDeLaCellule.setBorderBottom(BorderStyle.THIN); s_styleDeLaCellule.setBorderLeft(BorderStyle.THIN); s_styleDeLaCellule.setBorderRight(BorderStyle.THIN); s_styleDeLaCellule.setBorderTop(BorderStyle.THIN); // attribution de la couleur noire pour les bordures s_styleDeLaCellule.setBottomBorderColor(IndexedColors.BLACK.getIndex()); s_styleDeLaCellule.setLeftBorderColor(IndexedColors.BLACK.getIndex()); s_styleDeLaCellule.setRightBorderColor(IndexedColors.BLACK.getIndex()); s_styleDeLaCellule.setTopBorderColor(IndexedColors.BLACK.getIndex()); // changer la couleur de la police si Entete l_police = e_classeur.createFont(); if ("ENTETE".equals(e_libelleTypeDeLigne)) { l_police.setColor(IndexedColors.WHITE.getIndex()); } else { l_police.setColor(IndexedColors.BLACK.getIndex()); } s_styleDeLaCellule.setFont(l_police); return s_styleDeLaCellule; }
Voici une copie d'ecran du fichier en sortie :
Par avance merci.
Bien à vous.
Partager