2013-03-31 61 views
19

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

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



    } 

} 
+0

你看了poi指南中的Font.setColor吗? http://poi.apache.org/spreadsheet/quick-guide.html – MrSimpleMind

+1

为什么你创建单元格0两次?你是否意识到你没有将单元格样式分配给单元格1? – Gagravarr

+1

@Gagravarr是的多数民众赞成thats问题如何将cellstyle分配给特定的单元格我没有发现它在教程 – H4SN

回答

46

您目前正在制作一些你的细胞的两倍,这就是为什么它是所有出错

首先,我建议你将单元格样式创建移动到更接近代码的顶部。请记住 - 单元格样式被限定为一个工作簿,所以不要为每个单元格创建一个!现在

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

只是不要做奇怪的混合你”目前,当你最终创建细胞两次,错过了造型!

+1

已经完成whith方法1您提到并解决:) – H4SN

+1

HSSFColor.BLACK已被弃用,而不是使用HSSFColor.HSSFColorPredefined。黑色 –

相关问题