[alibaba/easyexcel]模板列表填充,格式覆盖问题

2024-05-17 958 views
0

模板列表填充,模板Excel有设定的格式,每行不一样,但是填充后全是按照第一行的格式往下复制,怎么办? 试了使用afterCellDispose,只设置了cell.setCellStyle(style),但是其他的cell全变成这样了

@Override
    public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List<CellData> cellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) {
        CellStyle style = cell.getCellStyle();
        //设置边框样式
        if(StringUtils.isNotBlank(cell.getStringCellValue())) {
            style.setBorderLeft(BorderStyle.THICK);
            // contentWriteCellStyle.setBottomBorderColor(IndexedColors.BLUE.getIndex()); //颜色
            style.setBorderRight(BorderStyle.THICK);
            style.setBorderBottom(BorderStyle.THIN);
            cell.setCellStyle(style);
        }
    }

image

回答

3

使用 POI提供的方法 - cloneStyleFrom 来克隆一个 style 出来专门为这个 cell 来设置 style。 CellStyle style = cell.getRow().getSheet().getWorkbook().createCellStyle(); style.cloneStyleFrom(cell.getCellStyle()); // 克隆出一个 style 针对style设置就可以解决这个问题 style.setBorderRight(BorderStyle.THICK); style.setBorderBottom(BorderStyle.THIN); cell.setCellStyle(style);

3

老哥问题怎么解决的

4

我是批量填充单元格,当前单元格的格式不一定和哪个固定的单元格格式相同,所以不好克隆style。我需要的是填充的时候只是替换掉值,而单元格格式不变

1

老哥把原来这里的代码删掉,就可以使用模板原来各自单元格的格式了,没必要都跟第一行的单元格格式一样,

0

已经在3.0.0-beta1 版本修复,beta版本会在一个月内升级成正式版。 FillConfig新增参数:autoStyle 设置成false即可