日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringBoot动态生成多个Excel文件以压缩包.zip格式下载

發布時間:2025/3/20 javascript 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot动态生成多个Excel文件以压缩包.zip格式下载 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
點擊上方?好好學java?,選擇?星標?公眾號 重磅資訊,干貨,第一時間送達 今日推薦:推薦19個github超牛逼項目!個人原創100W +訪問量博客:點擊前往,查看更多

來源:blog.csdn.net/qq_40437152/article/details/111411364

前言

文件下載的場景很多(還不是需求豐富嘛~),那么什么是動態生成文件呢,就是用戶選擇文件內容,服務器端根據選擇的數據生成某個格式的文件然后下載到客戶端。單個嘛直接下載,多個打包下載咯!

項目場景

項目中有個數據導出excel的需求,而且是批量,那么就要打包咯

解決步驟

基本實現如下:

  • 生成文件

  • 保存到臨時目錄 || 緩存到內存中

  • 將文件打包下載

  • 我不想廢話了,上代碼:

    直接把文件輸出流放到壓縮流ZipOutputStream

    ?List<String>?fields?=?new?ArrayList<>();fields.add("字段1");fields.add("字段2");fields.add("字段3");HSSFWorkbook?workbook?=?excelUtil.getNewExcel("壓縮文件測試",?fields);try?{response.setContentType("application/zip;?charset=UTF-8");//返回客戶端瀏覽器的版本號、類型String?agent?=?request.getHeader("USER-AGENT");String?downloadName?=?"壓縮文件測試.zip";//針對IE或者以IE為內核的瀏覽器:if?(agent.contains("MSIE")?||?agent.contains("Trident"))?{downloadName?=?java.net.URLEncoder.encode(downloadName,?"UTF-8");}?else?{downloadName?=?new?String(downloadName.getBytes("UTF-8"),?"ISO-8859-1");}response.setHeader("Content-disposition",?"attachment;filename="?+?downloadName);ZipOutputStream?zipOutputStream?=?new?ZipOutputStream(response.getOutputStream());//多個從這里就可遍歷了//?--startZipEntry?entry?=?new?ZipEntry("第一個文件名.xls");zipOutputStream.putNextEntry(entry);ByteOutputStream?byteOutputStream?=?new?ByteOutputStream();workbook.write(byteOutputStream);byteOutputStream.writeTo(zipOutputStream); //????????????zipOutputStream.write(workbook.getBytes());byteOutputStream.close();zipOutputStream.closeEntry();//?--endzipOutputStream.close();}?catch?(IOException?e)?{e.printStackTrace();}

    生成excel文件也貼一下,如下:

    public?static?HSSFWorkbook?getNewExcel(String?formName,?List<String>?fields)?{//新建excel對象HSSFWorkbook?workbook?=?new?HSSFWorkbook();//新建工作表HSSFSheet?sheet?=?workbook.createSheet(formName);//?設置表格默認列寬度為20個字節sheet.setDefaultColumnWidth((short)?20);//?生成一個樣式HSSFCellStyle?style?=?workbook.createCellStyle();//?生成一個字體HSSFFont?font?=?workbook.createFont();font.setFontHeightInPoints((short)?12);//字體應用到當前樣式style.setFont(font);//創建表格行HSSFRow?row?=?sheet.createRow(0);//設置表單名稱row.createCell(0).setCellValue(formName);if?(fields.size()?-?1?>?0)?{//合并單元格sheet.addMergedRegion(new?CellRangeAddress(0,?0,?0,?fields.size()?-?1));}HSSFRow?row1?=?sheet.createRow(sheet.getLastRowNum()?+?1);//設置列標題行for?(int?i?=?0;?i?<?fields.size();?i++)?{row1.createCell(i).setCellValue(fields.get(i));}return?workbook;}

    一些實踐總結,歡迎指正!

    推薦文章
    • 2021 最新版 Spring Boot 速記教程

    • 2W 字你全面認識 Nginx

    • 47K Star 的SpringBoot+MyBatis+docker電商項目,附帶超詳細的文檔!

    • 寫博客能月入10K?

    • 一款基于 Spring Boot 的現代化社區(論壇/問答/社交網絡/博客)

    更多項目源碼
    • 這或許是最美的Vue+Element開源后臺管理UI

    • 推薦一款高顏值的 Spring Boot 快速開發框架

    • 一款基于 Spring Boot 的現代化社區(論壇/問答/社交網絡/博客)

    • 13K點贊都基于 Vue+Spring 前后端分離管理系統ELAdmin,大愛

    • 想接私活時薪再翻一倍,建議根據這幾個開源的SpringBoot項目

    總結

    以上是生活随笔為你收集整理的SpringBoot动态生成多个Excel文件以压缩包.zip格式下载的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。