2013-03-31 18 views
19

Mogę zmienić kolor pierwszego planu za pomocą następującego kodu w apache POI. Teraz chcę zmienić kolor czcionki pojedynczej komórki.Jak zmienić kolor czcionki konkretnej komórki 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); 

Próbowałem tego, ale to nie zmienia koloru pierwszych dwóch kolumnach

Kod:

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

czy spojrzałeś na Font.setColor w przewodniku poi? http://poi.apache.org/spreadsheet/quick-guide.html – MrSimpleMind

+1

Dlaczego dwa razy tworzysz komórkę 0? Czy zdajesz sobie sprawę, że nie przypisujesz stylu komórki do komórki 1? – Gagravarr

+1

@Gagravarr Tak, to jest pytanie, jak przypisać styl do konkretnej komórki i nie znalazłem tego w tutorialu – H4SN

Odpowiedz

46

Aktualnie tworzenie niektóre komórki dwukrotnie, dlatego to wszystko pójdzie nie tak

Po pierwsze, proponuję przenieść tworzenie stylu komórki bliżej początku kodu. Pamiętaj - style komórek są ograniczone do skoroszytu, więc nie twórz po jednej na komórkę!

 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 

Teraz, w zależności od upodobań, albo wykonać tworzenie komórek tak:

 Cell cell; 

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

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

Lub tak:

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

Tylko nie rób tego dziwną hybrydę ci” W tej chwili w końcu tworzymy komórki i tracimy styl!

+1

już zrobione przy pomocy metody 1, o której wspomniałeś i rozwiązałeś :) – H4SN

+1

HSSFColor.BLACK jest przestarzałe zamiast tego użyć HSSFColor.HSSFColorPredefined. CZARNY –

Powiązane problemy