1.controller
@ApiOperation(value = "报表导出") @PostMapping("/exportNykTranTaskItem") public void exportNykTranTaskItemReport(@RequestBody NykTransTaskItemParam param, HttpServletResponse response) throws IOException { nykReportService.exportNykTranTaskItemReport(param,response); }
2.service
import javax.servlet.http.HttpServletResponse; import java.io.IOException; public interface INykReportService { void exportNykTranTaskItemReport(NykTransTaskItemParam param, HttpServletResponse response) throws IOException; }
3.impl
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.alibaba.excel.EasyExcel; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLEncoder; import java.util.List;
@Override public void exportNykTranTaskItemReport(NykTransTaskItemParam param, HttpServletResponse response) throws IOException { List<NykTranTaskItemVo> tranTaskItemVoList = nykReportMapper.nykTranTaskItemReport(param); response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); // 防止中文乱码 String fileName = URLEncoder.encode("运输任务明细报表", "UTF-8"); response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); EasyExcel.write(response.getOutputStream(), NykTranTaskItemVo.class).sheet("运输任务明细").doWrite(tranTaskItemVoList); }
4.NykTranTaskItemVo实体类
import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; @Data public class NykTranTaskItemVo { @ExcelProperty("运输任务单号") @ApiModelProperty(value = "运输任务单号") private String transShipNo; @ExcelProperty("发货计划单号") @ApiModelProperty("发货计划单号") private String deliveryShipNo; @ExcelProperty(value = "状态",converter = TransTaskStatusConverter.class) @ApiModelProperty(value = "运输单状态",example="0-新建,1-已派车,2-已发车,3-待收货,4-已签收,5-运输中,9-已删除") private String status; @ExcelProperty("发货日期") @ApiModelProperty("发货日期") private String deliveryDate;}//展示部分实体类字段(每个字段都要加@ExcelProperty注解)r入参:
@Data public class NykTransTaskItemParam { @ApiModelProperty("运输单号") private String transShipNo; @ApiModelProperty("合同号") private String contractNo; @ApiModelProperty("发货类型") private String deliveryType; @ApiModelProperty("客户名称") private String customerName; @ApiModelProperty("创单时间(开始)") private String startTime; @ApiModelProperty("创单时间(结束)") private String endTime; @ApiModelProperty("单据状态") private String status; @ApiModelProperty("设备号") private String equipmentNo; private int pageNum; private int pageSize; }
5.pom.xml
<!-- easyexcel--> <!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel --> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.1.1</version> </dependency> <!--easyexcel 2.1.1 对应 poi 3.17 --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version> </dependency>