2013-03-31 51 views
19

Tôi có thể thay đổi màu nền trước bằng mã sau trong apache POI. Bây giờ tôi muốn thay đổi màu chữ của một ô duy nhất.Làm thế nào để thay đổi màu phông chữ của apache poi cụ thể di động 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); 

Tôi đã cố gắng này, nhưng nó không thay đổi màu sắc của hai cột đầu tiên

mã:

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

bạn có nhìn vào Font.setColor trong hướng dẫn poi không? http://poi.apache.org/spreadsheet/quick-guide.html – MrSimpleMind

+1

Tại sao bạn tạo ô 0 lần? Và bạn có nhận ra rằng bạn không chỉ định kiểu ô cho ô 1? – Gagravarr

+1

@Gagravarr có thats câu hỏi làm thế nào để gán kiểu dáng cho một tế bào cụ thể tôi đã không tìm thấy nó trong hướng dẫn – H4SN

Trả lời

46

Bạn đang tạo ra một số tế bào của bạn hai lần, đó là lý do nó tất cả sẽ sai

Thứ nhất, tôi khuyên bạn nên di chuyển việc tạo kiểu ô đến gần đầu mã của bạn hơn. Hãy nhớ - các kiểu ô được sắp xếp theo một sổ làm việc, vì vậy đừng tạo một kiểu cho mỗi ô!

 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 

Bây giờ, tùy thuộc vào sở thích của bạn, hoặc làm sáng tạo di động của bạn như thế này:

 Cell cell; 

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

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

Hoặc như thế này:

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

Chỉ cần đừng làm điều đó lai kỳ lạ bạn' đã có tại thời điểm này, khi bạn kết thúc việc tạo ra các tế bào hai lần và bỏ lỡ phong cách!

+1

đã làm phương pháp whith 1 bạn đã đề cập và giải quyết :) – H4SN

+1

HSSFColor.BLACK không được dùng thay vì sử dụng này HSSFColor.HSSFColorPredefined. ĐEN –