如何更改特定单元格的颜色apache poi 3.9

我可以在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(); } } 

你目前正在创build一些细胞两次,这就是为什么它出错了

首先,我build议你将单元格样式创build移动到距离代码最近的地方。 请记住 – 单元格样式的范围是一个工作簿,所以不要为每个单元格创build一个!

  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 

现在,根据您的喜好,或者像这样做你的单元格创build:

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

只是不要做那种奇怪的混合,因为你最终创造了两次细胞,错过了造型!