2017-08-06 32 views
2

私はスタックオーバーフローをすべて見て、XSSF Excelセルの背景色を埋めるために自分のJavaコードを取得できなかったようです。他の人からは、左上隅のセルが黄色になるはずです: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を使用しています。

ありがとうございます!

+0

)(workbook.close 'ので、出力ストリームを閉じに関する追加postscriptum以外のすべての真のあなたの' '出力 –

答えて

2

CellStyleの特性は、セルが満たされている方法を決定:

  • のFillPattern
  • FillForegroundColor
  • FillBackgroundColor

ほとんどFillPatternType.BIG_SPOTSのようなパターンは両方の色を使用して記入してください。 FillForegroundColorの名前は誤解を招くものですが、わかりやすいものです。まだセルの背景にある塗りつぶしパターンの前景色です。

セルを1色で塗りつぶすには、foregroundという色を使用するFillPatternType.SOLID_FOREGROUNDを使用する必要があります。次のようにだからあなたはあなたのコードを変更する必要があります。

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

を閉じ;'すでにこれをやっています。 –

+0

ありがとう、それを知らなかった、私はpostscriptumを削除しました。 – r0the

+0

答えは完璧でした。ありがとうございました。 – Ibrahim

関連する問題