web-dev-qa-db-fra.com

Comment changer la couleur de police d'une cellule particulière Apache poi 3.9

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();



     }

} 
23
H4SN

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!

57
Gagravarr