有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何更改特定单元格ApachePOI3.9的字体颜色

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

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) 个答案

  1. # 1 楼答案

    你目前正在两次创建你的一些细胞,这就是为什么它都出了问题

    首先,我建议您将单元格样式的创建移到更靠近代码顶部的位置。记住——单元格样式的范围是工作簿,所以不要为每个单元格创建一个样式

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

    只是不要做你现在拥有的那种奇怪的混合体,因为你最终会创建两次细胞,并错过造型