没看源码,仅仅会用
先是在需要导出的实体类上添加若依自带的@Excel的注解,注解中主要的两个参数一个是name用于生成excel中的字段名,一个是sort用于在excel中字段的排序
@Excel(name = "车辆id",cellType = Excel.ColumnType.NUMERIC,sort = 1) private Integer id; @Excel(name = "在线状态",sort = 2) private Boolean online; @Excel(name = "终端条形码",sort = 3) private String terminalBarcode; @Excel(name = "终端编码",sort = 4) private String terminalCode;
实体类标注完毕后先进行需要导出的数据的查询以及使用若依生成excel文件(文件地址在配置文件里修改)
@PostMapping("exportExcle") private void download(@RequestBody VehicleInfo VehicleInfo, HttpServletResponse response){
//查询需要导出的数据 List<VehicleInfo> list = vehicleManageService.exportVehicleInfo(VehicleInfo); //根据生成的数据生成excel表格
ExcelUtil<VehicleInfo> util = new ExcelUtil<VehicleInfo>(VehicleInfo.class);
//这里修改了若依自带的ExcelUtil方法让其返回文件的完整路径而是不是原先的AjaxResult String filePath = util.exportExcel(list,"车辆列表");
//调用了通用下载方法进行文件下载 download(filePath,response); }
通用文件下载方法
@PostMapping("excleDownload") public void download(String filePath, HttpServletResponse response) {
//调用通用自定义的通用下载方法 FileUtils.download(filePath, Boolean.TRUE, response); }
文件下载的实现
public static void download(String filePath, Boolean delete, HttpServletResponse response) { //重新设置文件名 年月日时分秒_表格名称 String responseFileName = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss").format(LocalDateTime.now())+"_"+filePath.substring(filePath.length()-9); try { File file = new File(filePath); //判断文件是否存在 if (file.exists()) { //让浏览器认识 response.setHeader("Access-Control-Expose-Headers", "Content-Disposition"); response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); //返回相应流以及文件名 FileUtils.setAttachmentResponseHeader(response, responseFileName); //获取文件并输出流 FileUtils.writeBytes(filePath, response.getOutputStream()); //输出完毕后删除服务器端文件 if (delete){ deleteFile(filePath); } } } catch (Exception e) { log.error("下载文件失败", e); } }
标签:文件,String,filePath,实现,Excel,excel,list,response From: https://www.cnblogs.com/jdearfaust/p/16661595.html