Je peux changer la couleur de premier plan avec le code suivant dans Apache POI. Maintenant, je veux changer la couleur de la police d'une seule cellule.
CellStyle style = wb.createCellStyle();
style.setFillForegroundColor(IndexedColors.GREEN.getIndex());
style.setFillPattern(CellStyle.SOLID_FOREGROUND);
cell = rowxl.createCell((short) 7);
cell.setCellValue(" <<<<ONTRACK>>>>");
cell.setCellStyle(style);
rowxl.createCell(0).setCellValue(TEAM);
J'ai essayé mais cela ne change pas la couleur des deux premières colonnes
code:
public class fclr {
public static void main(String[] args) throws Exception {
InputStream inp = new FileInputStream("c:/workbook1.xls");
Workbook wb = WorkbookFactory.create(inp);
CreationHelper createHelper = wb.getCreationHelper();
Sheet sheet = wb.getSheetAt(0);
Row rowxl = sheet.createRow((short)0);
Cell cell = rowxl.createCell(0);
//apply some colors from the standard palette,
// as in the previous examples.
//we'll use red text on a Lime background
CellStyle style = wb.createCellStyle();
rowxl.createCell(1).setCellValue("ABC");
rowxl.createCell(2).setCellValue("aaa");
Font font = wb.createFont();
font.setColor(HSSFColor.BLACK.index);
style.setFont(font);
cell.setCellStyle(style);
FileOutputStream fileOut = new FileOutputStream("c:/workbook1.xls");
wb.write(fileOut);
fileOut.close();
}
}
Vous créez actuellement certaines de vos cellules deux fois, c'est pourquoi tout va mal
Tout d'abord, je vous suggère de déplacer la création de style de cellule vers le haut de votre code. N'oubliez pas - les styles de cellule sont limités à un classeur, alors n'en créez pas un par cellule!
CellStyle style = wb.createCellStyle();
Font font = wb.createFont();
font.setColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex());
style.setFont(font);
// Set more colours on the style as needed
// Set formatting rules on the style as needed
Maintenant, selon votre préférence, faites votre création de cellule comme ceci:
Cell cell;
cell = rowxl.createCell(0);
cell.setCellValue("ABC");
cell.setCellStyle(style);
cell = rowxl.createCell(1);
cell.setCellValue("aaa");
cell.setCellStyle(style);
Ou comme ça:
rowxl.createCell(1).setCellValue("ABC");
rowxl.createCell(2).setCellValue("aaa");
rowx1.getCell(1).setCellStyle(style);
rowx1.getCell(2).setCellStyle(style);
Ne faites pas cet hybride bizarre que vous avez en ce moment, car vous finissez par créer des cellules deux fois et vous manquez de style!