2013-03-31 15 views
19

Ich kann Vordergrundfarbe mit dem folgenden Code in Apache POI ändern. Jetzt möchte ich die Schriftfarbe einer einzelnen Zelle ändern.So ändern Sie die Schriftfarbe bestimmter Zelle 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); 

Ich habe dies versucht, aber es die Farbe der ersten beiden Spalten nicht

Code ändern:

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

hast du dir die Font.setColor im Poi Guide angesehen? http://poi.apache.org/spreadsheet/quick-guide.html – MrSimpleMind

+1

Warum erstellen Sie Zelle 0 zweimal? Und weißt du, dass du Zelle 1 den Zellenstil nicht zuordnest? – Gagravarr

+1

@Gagravarr Ja, das ist die Frage, wie Cellstyle einer bestimmten Zelle zuweisen Ich fand es nicht in der Übung – H4SN

Antwort

46

Sie sind zur Zeit einige Ihrer Zellen zu schaffen, die doppelt so groß ist, warum es alles läuft schief

Erstens würde ich vorschlagen, dass Sie die Zellstil-Erstellung an den oberen Rand Ihres Codes verschieben. Denken Sie daran - Zellstile sind auf eine Arbeitsmappe beschränkt, also erstellen Sie keine pro Zelle!

 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 

nun je nach Wunsch, entweder wie dies Ihr Zelle Schöpfung tun:

 Cell cell; 

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

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

Oder wie folgt aus:

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

Nur tun Sie das nicht seltsam hybride Sie‘ Im Moment hast du es, wenn du zwei mal Zellen erstellst und das Styling verpasst!

+1

bereits mit Methode 1 Sie erwähnt und gelöst :) – H4SN

+1

HSSFColor.BLACK ist veraltet anstelle dieser Verwendung HSSFColor.HSSFColorPredefined. SCHWARZ –