|  |  | 
 |  |  | import org.springframework.core.io.ClassPathResource; | 
 |  |  |  | 
 |  |  | import java.awt.image.BufferedImage; | 
 |  |  | import java.io.File; | 
 |  |  | import java.io.IOException; | 
 |  |  | import java.io.*; | 
 |  |  | import java.net.URLEncoder; | 
 |  |  | import java.util.List; | 
 |  |  | import java.util.concurrent.ConcurrentHashMap; | 
 |  |  | 
 |  |  |     public static byte[] genQrCode(String code) throws IOException, WriterException { | 
 |  |  |         File logoFile = logoCache.computeIfAbsent(LOGO_PATH, key -> { | 
 |  |  |             try { | 
 |  |  |                 // 使用ClassPathResource获取资源的输入流 | 
 |  |  |                 ClassPathResource resource = new ClassPathResource(key); | 
 |  |  |                 return resource.getFile(); | 
 |  |  |                 // 创建一个临时文件来保存资源内容(避免处理嵌套jar文件时找不到文件) | 
 |  |  |                 File tempFile = File.createTempFile("logo", ".png"); | 
 |  |  |                 try (InputStream in = resource.getInputStream(); | 
 |  |  |                      OutputStream out = new FileOutputStream(tempFile)) { | 
 |  |  |                     // 从输入流复制到临时文件 | 
 |  |  |                     byte[] buffer = new byte[1024]; | 
 |  |  |                     int bytesRead; | 
 |  |  |                     while ((bytesRead = in.read(buffer)) != -1) { | 
 |  |  |                         out.write(buffer, 0, bytesRead); | 
 |  |  |                     } | 
 |  |  |                     // 返回临时文件 | 
 |  |  |                     tempFile.deleteOnExit(); // 自动删除临时文件(当JVM退出时) | 
 |  |  |                     return tempFile; | 
 |  |  |                 } | 
 |  |  |             } catch (IOException e) { | 
 |  |  |                 throw new RuntimeException("加载Logo图片失败", e); | 
 |  |  |             } | 
 |  |  | 
 |  |  |             response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); | 
 |  |  |             EasyExcel.write(response.getOutputStream(), list.get(0).getClass()).sheet(sheetName).doWrite(list); | 
 |  |  |         }catch (Exception e){ | 
 |  |  |             log.error("导出产品信息异常", e); | 
 |  |  |             log.error("导出{}异常",sheetName,e); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |     public static void downloadExcelSheets(HttpServletResponse response, String fileName, String sheetName, List<Converter> list){ | 
 |  |  |         if(CollectionUtils.isEmpty(list)){ | 
 |  |  |             return; | 
 |  |  |         } | 
 |  |  |         /*try(ExcelWriter excelWriter = EasyExcel.write(file).build()) { | 
 |  |  |             WriteSheet writeSheet; | 
 |  |  |             for (SheetInfoBean bean : sheetInfoList) { | 
 |  |  |                 // 构建sheet对象 | 
 |  |  |                 writeSheet = EasyExcel.writerSheet(bean.getSheetName()).head(bean.getHeadClass()).build(); | 
 |  |  |                 // 写出sheet数据 | 
 |  |  |                 excelWriter.write(bean.getDataList(), writeSheet); | 
 |  |  |             } | 
 |  |  |             // 关流 | 
 |  |  |             excelWriter.finish(); | 
 |  |  |         } catch (Exception e) { | 
 |  |  |             // do something you want | 
 |  |  |         }*/ | 
 |  |  |         try{ | 
 |  |  |             response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); | 
 |  |  |             response.setCharacterEncoding("utf-8"); | 
 |  |  |             fileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20"); | 
 |  |  |             response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); | 
 |  |  |             EasyExcel.write(response.getOutputStream(), list.get(0).getClass()).sheet(sheetName).doWrite(list); | 
 |  |  |         }catch (Exception e){ | 
 |  |  |             log.error("导出{}异常",sheetName,e); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  | } |