Bonjour à tous,
J'utilise Apache POI 3.10. Je lis un fichier Excel 2010 et je recopie son contenu dans un nouveau fichier. Au passage, je voudrais colorier le fond des cases d'une ligne sur deux. Mais ça ne fonctionne pas... Voici mon code de test :
Ca me donne la capture 01 :
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 @Test public void testAjoutPrix() throws Exception { log.debug("testAjoutPrix"); final File file1 = new File(fileName1); // Lecture fichier original final Workbook workbook = WorkbookFactory.create(file1); final Sheet sheet = workbook.getSheet("Feuil1"); // Ajout d'une cellule final Row titreRow = sheet.getRow(0); final Cell nomCell = titreRow.getCell(0); final CellStyle nomCellStyle = nomCell.getCellStyle(); // Ajout du titre "Prix" dans le meme style que les autres titres final Cell prixTitreCell = titreRow.createCell(6); prixTitreCell.setCellValue("Prix"); prixTitreCell.setCellStyle(nomCellStyle); // Style final CellStyle s = workbook.createCellStyle(); s.setFillBackgroundColor(IndexedColors.YELLOW.getIndex()); //s.setFillPattern(CellStyle.SOLID_FOREGROUND); //s.setFillPattern(CellStyle.FINE_DOTS); // s.setFillPattern(CellStyle.NO_FILL); // Modifications int index = 1; Row row = sheet.getRow(index++); while (row != null) { final Cell prixCell = row.createCell(6); prixCell.setCellValue(123.45); // Coloriage d'une ligne sur deux if (index % 2 == 0) { for (int i = 0; i < 7; i++) { row.getCell(i).setCellStyle(s); } } row = sheet.getRow(index++); } // Ecriture dans un autre fichier final File file2 = new File(fileName2); // Comme je lance le test plusieurs fois, je repart d'une copie blanche à chaque fois. if (file2.exists()) { file2.delete(); } final FileOutputStream fos = new FileOutputStream(file2); workbook.write(fos); fos.close(); }
J'ai essayé en mettant :
Ca me donne la capture 02 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 s.setFillPattern(CellStyle.FINE_DOTS);
et avec :
Ca me donne la capture 03 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 s.setFillPattern(CellStyle.SOLID_FOREGROUND);
Je ne comprend pas ce qui se passe...
Partager