背景色塗りつぶしメソッド
/**
* 背景色塗りつぶしメソッド
*
* @param sheet シート
* @param cellRangeAddress 塗りつぶす対象のセル範囲
*/
private void fillBackground(XSSFWorkbook wb, XSSFSheet sheet, String cellRangeAddress) {
XSSFCellStyle cellStyle;
// 塗りつぶしの処理
CellRangeAddress range = CellRangeAddress.valueOf(cellRangeAddress);
// 塗りつぶす
for (int r = range.getFirstRow(); r <= range.getLastRow(); r++) {
for (int c = range.getFirstColumn(); c <= range.getLastColumn(); c++) {
cellStyle = getCell(sheet, r, c).getCellStyle();
XSSFCellStyle newCellStyle = wb.createCellStyle();
newCellStyle.cloneStyleFrom(cellStyle);
newCellStyle.setFillForegroundColor(new XSSFColor(new java.awt.Color(216, 216, 216)));
newCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); // 塗りつぶし
getCell(sheet, r, c).setCellStyle(newCellStyle);
}
}
}
17行目のXSSFCellStyle newCellStyle = wb.createCellStyle(); で新しいインスタンスを作ってしまっている。
作れるインスタンスには上限があるので、 CellUtil.setCellStyleProperty() で実装できるのがベスト