POIを使用して、JavaでExcelスプレッドシートを作成しています。ヘッダー行の作成に使用される次のコードがあります。
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("Report");
// some more code
HSSFRow row = sheet.createRow(0);
HSSFCell cell = row.createCell(cellNumber);
HSSFCellStyle cellStyle = wb.createCellStyle();
cellStyle.setFillBackgroundColor(HSSFColor.GREY_25_PERCENT.index);
cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
HSSFFont font = wb.createFont();
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
font.setColor(HSSFColor.WHITE.index);
cellStyle.setFont(font);
cell.setCellStyle(cellStyle);
私が抱えている問題は、セルの塗りつぶし背景色を設定すると、選択した色に関係なく常に黒になることです。何が間違っていますか? 「setFillPattern」行を使用しない場合、色がまったく表示されません。
これが機能するようになりました。背景色を機能させるには、前景色を設定する必要がありました(??)。
だから私は変更しました:
cellStyle.setFillBackgroundColor(HSSFColor.GREY_25_PERCENT.index);
に:
cellStyle.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);
そしてそれは働いた!
前景色を設定している場合は、
cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
背景色を設定する場合は、
style.setFillPattern(FillPatternType.THICK_BACKWARD_DIAG);
または
style.setFillPattern(FillPatternType.THIN_BACKWARD_DIAG);
背景の塗りつぶしパターンの前に前景の塗りつぶしパターンを設定すると、前景と背景の色は「スタック」(赤+青=紫)のように見えますが、逆ではありません。選択可能な他の塗りつぶしパターンがいくつかあります。デフォルトの塗りつぶしパターンを変更しない場合、色は適用されないことに注意してください。
CellStyle.SOLID_FOREGROUND
は、バージョン3.15以降では非推奨です。使用する FillPatternType.SOLID_FOREGROUND
代わりに。