public class ExcelRowColorHandler implements CellWriteHandler {

    private final Integer columnIndex;
    private final Set<Integer> redRowIndex;
    private final Set<Integer> yellowRowIndex;
    private final Set<Integer> greenRowIndex;

    public ExcelRowColorHandler(Integer columnIndex, Set<Integer> redRowIndex, Set<Integer> yellowRowIndex, Set<Integer> greenRowIndex) {
        this.columnIndex = columnIndex;
        this.redRowIndex = redRowIndex;
        this.yellowRowIndex = yellowRowIndex;
        this.greenRowIndex = greenRowIndex;
    }

    @Override
    public void beforeCellCreate(CellWriteHandlerContext context) {
        // Row in source code context to be optimized: supports parameter input to obtain the number of
        // occurrences of the required field and set the background color
        // to do:(row.getCell(columnIndex)lose efficacy)
    }

    @Override
    public void afterCellDispose(CellWriteHandlerContext context) {
        if (BooleanUtils.isNotTrue(context.getHead())) {
            Integer currentRowIndex = context.getRowIndex();
            Integer currentColumnIndex = context.getColumnIndex();
            //最后一列,(备注信息)设置颜色
            if (currentColumnIndex.equals(columnIndex - 1)) {
                WriteCellData<?> cellData = context.getFirstCellData();
                WriteCellStyle writeCellStyle = cellData.getOrCreateStyle();
                //根据数据内容,设置不同字体颜色
                if (!Objects.isNull(redRowIndex) && redRowIndex.contains(currentRowIndex)) {
                    WriteFont font = new WriteFont();
                    font.setColor(IndexedColors.RED.getIndex());
                    writeCellStyle.setWriteFont(font);
                } else if (!Objects.isNull(yellowRowIndex) && yellowRowIndex.contains(currentRowIndex)) {
                    WriteFont font = new WriteFont();
                    font.setColor(IndexedColors.YELLOW.getIndex());
                    writeCellStyle.setWriteFont(font);
                } else if (!Objects.isNull(greenRowIndex) && greenRowIndex.contains(currentRowIndex)) {
                    WriteFont font = new WriteFont();
                    font.setColor(IndexedColors.GREEN.getIndex());
                    writeCellStyle.setWriteFont(font);
                }
            }
        }
    }

}

 

posted on 2024-10-22 14:49  茫无所知  阅读(62)  评论(0编辑  收藏  举报