要实现自定义总标题有换行和每一列的小标题,可以使用easyExcel提供的StyleStrategy接口来实现。

首先,创建一个继承自DefaultStyleStrategy的自定义样式策略类,例如CustomStyleStrategy:

public class CustomStyleStrategy extends DefaultStyleStrategy {
    @Override
    public TableStyle getTableStyle(Integer sheetNo, Boolean isHead, List<List<String>> head, List<List<String>> content, ExcelWriter excelWriter) {
        TableStyle tableStyle = super.getTableStyle(sheetNo, isHead, head, content, excelWriter);
        
        // 设置总标题样式(换行)
        Font totalTitleFont = excelWriter.createFont();
        totalTitleFont.setFontHeightInPoints((short) 16);
        totalTitleFont.setBold(true);
        totalTitleFont.setColor(Font.COLOR_NORMAL);
        CellStyle totalTitleCellStyle = excelWriter.getWorkbook().createCellStyle();
        totalTitleCellStyle.setFont(totalTitleFont);
        totalTitleCellStyle.setAlignment(HorizontalAlignment.CENTER);
        totalTitleCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
        totalTitleCellStyle.setWrapText(true);
        tableStyle.setTableHeadTextStyle(totalTitleCellStyle);
        
        // 设置小标题样式
        Font subTitleFont = excelWriter.createFont();
        subTitleFont.setFontHeightInPoints((short) 12);
        subTitleFont.setBold(true);
        subTitleFont.setColor(Font.COLOR_NORMAL);
        CellStyle subTitleCellStyle = excelWriter.getWorkbook().createCellStyle();
        subTitleCellStyle.setFont(subTitleFont);
        subTitleCellStyle.setAlignment(HorizontalAlignment.CENTER);
        subTitleCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
        tableStyle.setTableHeadTextStyle(subTitleCellStyle);
        
        return tableStyle;
    }
}

然后,在导出Excel时,使用自定义的样式策略类:

public void exportExcel() {
    // 创建ExcelWriter对象
    ExcelWriter excelWriter = EasyExcel.write("output.xlsx").build();
    
    // 设置自定义样式策略
    CustomStyleStrategy styleStrategy = new CustomStyleStrategy();
    excelWriter.setTableStyleStrategy(styleStrategy);
    
    // 写入数据
    WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").build();
    excelWriter.write(dataList, writeSheet);
    
    // 关闭ExcelWriter对象
    excelWriter.finish();
}

以上代码中,CustomStyleStrategy类重写了getTableStyle方法,可以根据isHead参数判断当前是总标题还是小标题,然后设置不同的样式。在getTableStyle方法中,使用EasyExcel提供的API创建Font和CellStyle,并设置相关样式属性,最后将样式设置到TableStyle中,返回给EasyExcel处理。

这样,就可以实现自定义总标题有换行和每一列的小标题的效果了

easyExcel 导出 自定义总标题有换行和每一列的小标题

原文地址: https://www.cveoy.top/t/topic/hOB3 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录