java - 如何更改特定单元格apache poi 3.9的字体颜色

标签 java excel apache-poi xls

我可以在 apache POI 中使用以下代码更改前景色。现在我想改变单个单元格的字体颜色。

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



     }

} 

最佳答案

您目前正在创建一些单元格两次,这就是为什么一切都出错了

首先,我建议您将单元格样式创建移到靠近代码顶部的位置。请记住 - 单元格样式的范围仅限于工作簿,因此不要为每个单元格创建一个!

        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

现在,根据您的喜好,您可以像这样创建单元格:

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

只是不要做你目前拥有的那种奇怪的混合,因为你最终会创建两次单元格并错过样式!

关于java - 如何更改特定单元格apache poi 3.9的字体颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15730146/

相关文章:

java - 通过 java apache POI 在 excel 文件中追加新行

Java - Apache POI - 读/写 .xlsx 文件 - 文件损坏并变为空

java - 在它的抽象父类(super class)中使用子类的泛型类型?

java - Hibernate - 仅连接单个列而不是整个实体

java - 可执行 jar 中 Class.getResource() 和 ClassLoader.getResource() 的奇怪行为

java - 图形(2D)旋转: Rotate x Axis

vba - Excel VBA错误: The object invoked has disconnected from its clients

excel - 如何更改 Powerpoint 形状的图像?

excel - VBA 中的 UTF-8 字符 Shell_NotifyIconW

java - 如何使用 Apache POI 合并同一行中的单元格?