当前位置: 首页 > news >正文

【Java】批量生成Excel放入文件夹并打zip压缩包

本文展示了Java批量生成并下载Excel报表为ZIP文件的技术实现。

先看一下生成文件的效果示例:

直接上代码:

public void reportDownBatch(HttpServletResponse response) {// 设置响应的内容类型和头信息response.setContentType("application/zip");response.setHeader("Content-Disposition", "attachment; filename=\"" + "report" + "\"");// 获取输出流InputStream input = null;try (OutputStream outputStream = response.getOutputStream();ZipOutputStream zos = new ZipOutputStream(outputStream);) {String fileName;ZipEntry zipEntry;ZipEntry fileEntry;// 这里以月份作为示例,改为实际获取文件夹名称的方法List<String> list = Arrays.asList("2025-01", "2025-02", "2025-03");for (String month : list) {// 创建ZIP中的文件夹,改为实际文件夹名fileName = month + "/";zipEntry = new ZipEntry(fileName);zos.putNextEntry(zipEntry);zos.closeEntry();// 生成文件,改为实际的查询参数及方法input = exportFile(month);// 目录里层文件名(文件夹名+文件名),改为实际文件名fileEntry = new ZipEntry(fileName + month + "-28.xlsx");zos.putNextEntry(fileEntry);byte[] buffer = new byte[1024];int len;while ((len = input.read(buffer)) > 0) {zos.write(buffer, 0, len);}zos.closeEntry();input.close();}} catch (IOException e) {log.error(e.getMessage());e.printStackTrace();} finally {try {if (input != null) {input.close();}} catch (IOException e) {log.error("关闭输入流出错", e);}}}public InputStream exportFile(String month) {// 1.初始化FillConfig fillConfig = FillConfig.builder().build();ByteArrayOutputStream os = new ByteArrayOutputStream();// 2.获取表格模板,下面有模板示例(替换为真实的模板路径)InputStream inputStream = getClass().getResourceAsStream("/static/excelTemplate.xlsx");ExcelWriter excelWriter = EasyExcel.write().withTemplate(inputStream).excelType(ExcelTypeEnum.XLSX).file(os).build();// 3.获取模板第一个sheet页WriteSheet sheet = EasyExcel.writerSheet(0).build();// 4.填充表头参数(不需要的话可以直接删除)Map<String, Object> titleMap = new HashMap<>();titleMap.put("title", "标题");excelWriter.fill(titleMap, sheet);// 5.填充列表数据(替换为实际查询数据的方法)List<Report> reportList = mapper.getListByMonth(month);excelWriter.fill(new FillWrapper("reportList", reportList), fillConfig, sheet);// 如有其他sheet页重复步骤3-5// 6.结束填充excelWriter.finish();InputStream stream = new ByteArrayInputStream(os.toByteArray());return stream;}

excel模板示例:

注意参数名称和代码中一致。 

http://www.dtcms.com/a/306373.html

相关文章:

  • LangChain 完全入门:5分钟搭建你的第一个AI智能体
  • 河南萌新联赛2025第(三)场:河南理工大学【补题】
  • 氯碱废水除钙镁金属离子
  • 无人机在复杂气流中,IMU 如何精准捕捉姿态变化以维持稳定?
  • WPFC#超市管理系统(3)商品管理
  • 今日行情明日机会——20250730
  • 【LeetCode】链表反转实现与测试
  • ansible巡检脚本
  • 2025年7月28日–7月29日 · AI 今日头条
  • 串口接收数据包(协议带帧头帧尾)的编程实现方法:1、数据包格式定义结构体2、使用队列进行数据接收、校验解包
  • centos7 aarch64上安装PostgreSQL14.3
  • 如何在生成式引擎优化(GEO)中取得成功
  • Java:高频面试知识分享1
  • 比特币挖矿的能源消耗和环保问题
  • 【Linux】重生之从零开始学习运维之备份恢复
  • CONTRASTIVE-KAN:一种用于稀缺标记数据的网络安全半监督入侵检测框架
  • Apache Kafka核心组件详解
  • click和touch事件触发顺序 糊里糊涂解决的奇怪bug
  • 开源 Arkts 鸿蒙应用 开发(十二)传感器的使用
  • WiFi连接简单流程
  • Linux命令---服务管理类命令
  • EPOLL 的用法
  • 报考民航安检员证需要具备哪些条件?
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | VerifyAccountUi(验证码组件)
  • git本地仓库,工作区和暂存区的知识
  • SpringBoot之多环境配置全解析
  • 实现implements InitializingBean, DisposableBean 有什么用
  • AI 代码助手在大前端项目中的协作开发模式探索
  • 关于tresos Studio(EB)的MCAL配置之MCU
  • 商标注册后可以随意更改字体和颜色吗!