KeisukeYamazaki
10/6/2019 - 5:32 AM

背景色塗りつぶしメソッド

背景色塗りつぶしメソッド

/**
     * 背景色塗りつぶしメソッド
     *
     * @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() で実装できるのがベスト