效果展示:关键代码:导出代码 // 第一行表头 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);Java第一行表头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 } }Java第二行表头@Data @ApiModel(value="CarPartVO 对象", description="导出车辆零部件信息表") public class CarPartVO { @ExcelProperty(value = "零部件分级-一级") private String partLevel1; // ... 省略掉中间字段 @ExcelIgnore private String level; } Java