
EasyExcel 自定义表头
效果展示:
关键代码:
导出代码
// 第一行表头
String enterpriseTitle = brandName + " " + seriesName + " " + vehicleName;
// 开始导出
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
String fileName = URLEncoder.encode(enterpriseTitle, "UTF-8");
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
EasyExcel.write(response.getOutputStream(), CarPartVO.class)
.registerWriteHandler(new ImplProgressReportSheetWriteHandler(enterpriseTitle)) // 第一行的注册合并策略
.sheet(enterpriseTitle) // sheet名
.relativeHeadRowIndex(2) // *表头行数 默认表头从第二行开始写入
.registerWriteHandler(new HorizontalCellStyleStrategy(getHeadWriteCellStyle(), getContentWriteCellStyle()))
.registerWriteHandler(new ExcelCellWidthStyleStrategy())
.doWrite(exList);
第一行表头
package com.adc.da.jydata.util;
import com.alibaba.excel.write.handler.SheetWriteHandler;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
public class ImplProgressReportSheetWriteHandler implements SheetWriteHandler {
private final String reportTitle; // 新增标题字段
// 添加带参构造器
public ImplProgressReportSheetWriteHandler(String reportTitle) {
this.reportTitle = reportTitle;
}
@Override
public void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {}
@Override
public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
Workbook workbook = writeWorkbookHolder.getWorkbook();
Sheet sheet = workbook.getSheetAt(0);
Row row1 = sheet.createRow(0);
row1.setHeight((short) 100);
Cell row1Cell1 = row1.createCell(0);
// 使用传入的标题参数
row1Cell1.setCellValue(this.reportTitle); // 标题由参数带入;当然下面的也可以设计成参数,需要的话自己实现
CellStyle row1CellStyle = workbook.createCellStyle();
row1CellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
row1CellStyle.setAlignment(HorizontalAlignment.CENTER);
Font row1Font = workbook.createFont();
row1Font.setBold(true);
row1Font.setFontName("宋体");
row1Font.setFontHeightInPoints((short) 12);// 标题字号
row1CellStyle.setFont(row1Font);
row1Cell1.setCellStyle(row1CellStyle);
sheet.addMergedRegionUnsafe(new CellRangeAddress(0, 1, 0, 10));// 共11列, 11-1=10
}
}
第二行表头
@Data
@ApiModel(value="CarPartVO 对象", description="导出车辆零部件信息表")
public class CarPartVO {
@ExcelProperty(value = "零部件分级-一级")
private String partLevel1;
// ... 省略掉中间字段
@ExcelIgnore
private String level;
}
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果