呆萌小狼君 2021-06-19 10:01 采纳率: 0%
浏览 2011

阿里开源工具easyexcel怎么设置填充内容的自定义行高

在生成excel文件的时候,使用list填充表格内容,但是,出现了内容行高不一致的问题,出现的问题如下图所示

第一行是填充模板设置的行高(35),第二,第三行是自动生成的行高(35.1),没办法改变,第四行到下边的所有行行高都为(21),现在想让所有行都和第一行高度一致,怎么解决?求助!

首先,试验了工具注解@ContentRowHeight(value = 35),但是没有生效。

然后,百度搜索资料查到了如下内容设置策略,

// 内容的策略
        WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
// 这里需要指定 FillPatternType 为FillPatternType.SOLID_FOREGROUND 不然无法显示背景颜色.头默认了 FillPatternType所以可以不指定
        contentWriteCellStyle.setWrapped(true);
// 这个策略是 头是头的样式 内容是内容的样式 其他的策略可以自己实现
        HorizontalCellStyleStrategy horizontalCellStyleStrategy =
                new HorizontalCellStyleStrategy(null, contentWriteCellStyle);
        ExcelWriter excelWriter = EasyExcel.write(fileName).registerWriteHandler(horizontalCellStyleStrategy).withTemplate(templateFileName).build();

发现加上后,连文件都无法生成,报空指针异常。

最后,试验了百度搜到的自定义样式类,发现不适用。

 

  • 写回答

4条回答 默认 最新

  • GreedyNoob 2023-01-30 18:32
    关注

    通过设置写入的处理器可以指定行高,进行列表填充时,自动生成的行都是统一的高度:
    处理器:

    @Component
    public class CostomCellWriteHeightHandler extends AbstractColumnWidthStyleStrategy {
    
        @Override
        protected void setColumnWidth(WriteSheetHolder writeSheetHolder, List<CellData> cellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) {
            cell.getRow().setHeightInPoints(40f);
        }
    }
    

    在获取ExcelWriter时使用:

    ExcelWriter excelWriter = EasyExcelFactory.write(outputStream)
                        .withTemplate(classPathResource.getInputStream())
                        .excelType(ExcelTypeEnum.XLS)
                        .registerWriteHandler(costomCellWriteHeightHandler).build();
    
    
    评论

报告相同问题?