Как изменить цвет шрифта конкретной ячейки 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();
}
}
Ответы
Ответ 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);
Просто не делай этого странного гибрида, который у тебя есть на данный момент, так как вы в конечном итоге создаете ячейки дважды и упускаете стиль!