2017-08-06 78 views
2

我已經看過遍佈堆棧溢出,並且似乎無法讓我的java代碼填充XSSF excel單元格的背景顏色。從別人所說的話,這應該使左上角的單元格變成黃色:Java Apache POI - XSSFCell setFillBackgroundColor沒有影響

// Example Code 
try { 

    // prepare 
    FileInputStream resource = new FileInputStream(FILEPATH + FILENAME); 
    XSSFWorkbook workbook = new XSSFWorkbook(resource); 
    XSSFSheet sheet = workbook.createSheet("Example Sheet"); 

    // create 
    XSSFRow row = sheet.createRow(0); 
    XSSFCell cell = row.createCell(0); 
    XSSFCellStyle style = workbook.createCellStyle(); 
    XSSFColor color = new XSSFColor(Color.YELLOW); 

    // stylize 
    style.setFillBackgroundColor(color); 
    cell.setCellStyle(style); 

    // finalize 
    FileOutputStream output = new FileOutputStream("Example Workbook.xlsx"); 
    workbook.write(output); 
    workbook.close(); 

} catch (Exception e) { 

    // error 
    e.printStackTrace(); 

} 

......但事實並非如此。有人能讓我知道我做錯了什麼嗎?順便說一下,我使用Apache POI版本3.16。

謝謝!的CellStyle

+0

閉上你的''輸出所有 –

回答

2

三個屬性決定細胞的填充方式:

  • FillPattern
  • FillForegroundColor
  • FillBackgroundColor

大部分填補像FillPatternType.BIG_SPOTS使用兩種顏色的圖案。名稱FillForegroundColor具有誤導性,但可以理解。這是填充圖案的前景色,它仍然在單元格的背景中。

要用一種顏色填充單元格,您需要使用FillPatternType.SOLID_FOREGROUND,它使用前景顏色。所以,你需要改變你的代碼如下:

// stylize 
style.setFillForegroundColor(color); 
style.setFillPattern(FillPatternType.SOLID_FOREGROUND); 
cell.setCellStyle(style); 
+0

真除附加postscriptum關於關閉輸出流,因爲'workbook.close();'已經在這樣做。 –

+0

謝謝,不知道,我刪除了postscriptum。 – r0the

+0

你的答案完美無缺,謝謝。 – Ibrahim