| | |
| | | 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); |
| | | } |
| | | } |
| | | |
| | | |
| | | } |