Подтвердить что ты не робот

Как изменить цвет шрифта конкретной ячейки apache pois 3.9

Я могу изменить цвет переднего плана следующим кодом в POI apache. Теперь я хочу изменить цвет шрифта одной ячейки.

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

Я пробовал это, но он не меняет цвет первых двух столбцов

код:

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



     }

} 
4b9b3361

Ответ 1

В настоящее время вы создаете несколько своих ячеек, поэтому все идет не так.

Во-первых, я предлагаю вам переместить создание стиля ячейки ближе к верхней части вашего кода. Помните - стили ячеек привязаны к книге, поэтому не создавайте одну ячейку!

        CellStyle style = wb.createCellStyle();
        Font font = wb.createFont();
        font.setColor(HSSFColor.BLACK.index);
        style.setFont(font);
        // Set more colours on the style as needed
        // Set formatting rules on the style as needed

Теперь, в зависимости от ваших предпочтений, создайте свои ячейки следующим образом:

        Cell cell;

        cell = rowxl.createCell(0);
        cell.setCellValue("ABC");
        cell.setCellStyle(style);

        cell = rowxl.createCell(1);
        cell.setCellValue("aaa");
        cell.setCellStyle(style);

Или вот так:

    rowxl.createCell(1).setCellValue("ABC");
    rowxl.createCell(2).setCellValue("aaa");
    rowx1.getCell(1).setCellStyle(style);
    rowx1.getCell(2).setCellStyle(style);

Просто не делай этого странного гибрида, который у тебя есть на данный момент, так как вы в конечном итоге создаете ячейки дважды и упускаете стиль!