2013-03-31 117 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。黑色 –

相關問題