2013-03-31 13 views
19

Ön plan rengini aşağıdaki kodla birlikte apache POI'de değiştirebilirim. Şimdi tek bir hücrenin yazı tipi rengini değiştirmek istiyorum.Belirli bir hücre apache poi'nin yazı tipi rengi nasıl değiştirilir 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); 

Bunu denedim ama ilk iki sütun

rengini değiştirmez

kodu:

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 kılavuzunda Font.setColor'a baktınız mı? http://poi.apache.org/spreadsheet/quick-guide.html – MrSimpleMind

+1

Neden iki kez 0 hücresi oluşturuyorsunuz? Ve hücre stilini hücre 1'e atamadığınızı biliyor musunuz? – Gagravarr

+1

@Gagravarr evet, bu soruya cevap verdiğiniz ve çözdüğünüz yöntem 1 – H4SN

cevap

46

Şu anda iki kere hücrelerin bazı oluştururken, bu yüzden olduğu her şey yanlış gidiyor

Öncelikle, hücre stili oluşturmayı kodunuzun başına yaklaşacak şekilde taşımanızı öneririm. Unutmayın - hücre stilleri bir çalışma kitabına kapsamlıdır, bu yüzden hücre başına bir tane oluşturma!

 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 

Şimdi tercihinize bağlı olarak, bu gibi cep oluşturma yapmak ya:

 Cell cell; 

     cell = rowxl.createCell(0); 
     cell.setCellValue("ABC"); 
     cell.setCellStyle(style); 

     cell = rowxl.createCell(1); 
     cell.setCellValue("aaa"); 
     cell.setCellStyle(style); 

Ya da böyle:

rowxl.createCell(1).setCellValue("ABC"); 
    rowxl.createCell(2).setCellValue("aaa"); 
    rowx1.getCell(1).setCellStyle(style); 
    rowx1.getCell(2).setCellStyle(style); 

Sadece 'sana o garip melez yapmayın Ve şu anda var, iki kez hücreler oluştururken ve stilinizi kaçırırken!

+1

öğesinde bulamadığım belirli bir hücreye hücre modelinin nasıl atanacağını soruyor :) – H4SN

+1

HSSFColor.BLACK, bu kullanım yerine HSSFColor.HSSFColorPredefined olarak kullanımdan kaldırıldı. SİYAH –

İlgili konular