需要的依赖

<dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>easyexcel</artifactId>
     <version>2.1.6</version>
 </dependency>

 <dependency>
     <groupId>org.apache.poi</groupId>
     <artifactId>poi-ooxml</artifactId>
     <version>3.17</version>
 </dependency>

 <dependency>
     <groupId>org.apache.poi</groupId>
     <artifactId>poi-ooxml-schemas</artifactId>
     <version>3.17</version>
 </dependency>

 <dependency>
     <groupId>org.apche.poi</groupId>
     <artifactId>poi</artifactId>
     <version>3.17</version>
 </dependency>

代码,根据使用的类型和list导出

public ResponseEntity promotionMonitorListDownload(PromotionMonitorQueryDTO queryDTO) {
UserDTO currentUser = UserDTO.getCurrentUser();
try {
List<PromotionMonitorExcalInfo> list = promotionMonitorVOService.promotionMonitorListExcalDownload(currentUser, queryDTO);
Integer todayInt = ZonedDateUtil.todayInt(ZonedDateUtil.TIMEZONE_ASIN_SHANGHAI);
String fileName = new StringBuilder().append("deals管理_").append(todayInt).toString();
return buildExportResponse(fileName,PromotionMonitorExcalInfo.class,list);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(ResultBean.fail("系统错误"));
}

}


//excal导出 private <T> ResponseEntity buildExportResponse(String fileName, Class<T> clazz, List<T> list) throws Exception { ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); EasyExcel.write(outputStream,clazz).excelType(ExcelTypeEnum.XLSX).sheet(fileName).doWrite(list); String contentDisposition = "attachment;filename=".concat(URLEncoder.encode(fileName, "UTF-8")).concat(".xlsx"); Resource resource = genResource(outputStream); return ResponseEntity.status(HttpStatus.OK) .header(HttpHeaders.CONTENT_DISPOSITION, contentDisposition) .header(HttpHeaders.CONTENT_LENGTH, String.valueOf(resource.contentLength())) .contentType(MediaType.APPLICATION_OCTET_STREAM) .body(resource); } private Resource genResource(ByteArrayOutputStream outputStream) { Resource resource = null; try { resource = new ByteArrayResource(outputStream.toByteArray()); } finally { IOUtils.closeQuietly(outputStream); return resource; } }



使用的实体类上打好注解作为表头部分,例如

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class PromotionMonitorExcalInfo {

    @ExcelProperty("Deal ID")
    @ApiModelProperty(value = "Deal ID")
    private String dealID;private String dealPrice;
    @ExcelProperty("时间")
    @ApiModelProperty(value = "时间")
    private String ntime;
    @ExcelProperty("Sales")
    @ApiModelProperty(value = "Sales")
    private String trustee;
    @ExcelProperty("创建时间")
    @ApiModelProperty(value = "创建时间")
    private String createTimeFormat;

}