easyExcel 导出 自定义总标题有换行和每一列的小标题
要实现自定义总标题有换行和每一列的小标题,可以使用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处理。
这样,就可以实现自定义总标题有换行和每一列的小标题的效果了
原文地址: https://www.cveoy.top/t/topic/hOB3 著作权归作者所有。请勿转载和采集!