需求:一次请求,导出多个excel
思路:
1.java servlet一个请求,只能返回一个输出流,所以一次只能导出一个excel;
2.如果一次需要导出多个excel,可以在本地生成多个excel,然后压缩成压缩包,然后下载压缩包;
步骤:
1.在本地创建一个零时文件夹,将多个excel生成到该文件夹下;
2.将该文件夹压缩,导出;
3.将该文件夹删除;

上代码:

//以模板形式生成excel
@RequestMapping(value = "映射路径")
public void exportDetail(HttpServletResponse response, HttpServletRequest request)throws ParseException, ParsePropertyException, InvalidFormatException, IOException {// 模板在项目存放位置String fileRootPath = request.getSession().getServletContext().getRealPath("/templates");// 模板文件名称String fileName = "";// 将excel导出的文件位置String filePath = 在本地创建好的文件夹路径 + File.separator;// 得到此路径下文件File fileDir = new File(filePath);//创建文件夹if (!fileDir.exists() && !fileDir.isDirectory()) {fileDir.mkdirs();}// 用于存放生成的excel文件名称List<String> fileNames = new ArrayList<String>();// 导出Excel文件路径String fullFilePath = "";//输入流InputStream in = null;//输出流FileOutputStream os = null;//循环导出excel到临时文件夹中for (int i = 0; 根据需求亲确定导出几次; i++) {// 往excel填入内容Map<String, Object> bean = new HashMap<String, Object>();bean.put("需要遍历的内容", xxxx);//每次导出的excel的文件名String fileNameS = "xxxxx.xls";if (bean != null) {//XLSTransformer生成excel文件XLSTransformer transformer = new XLSTransformer();in = new FileInputStream(new File(fileRootPath + File.separator + fileName));HSSFWorkbook workbook;// 设置sheet页名称String sheetName = "详细";workbook = (HSSFWorkbook) transformer.transformXLS(in, bean);// 设置sheet页名称workbook.setSheetName(0, sheetName);// 导出excel的全路径fullFilePath = filePath + File.separator + fileNameS;fileNames.add(fullFilePath);os = new FileOutputStream(fullFilePath);// 写文件workbook.write(os);}//清空流缓冲区数据os.flush();//关闭流os.close();in.close();os = null;}//导出压缩文件的全路径  String zipFilePath = filePath + "压缩文件名"+".zip";//导出zipFile zip = new File(zipFilePath);//将excel文件生成压缩文件  File srcfile[] = new File[fileNames.size()];    for (int j = 0, n1 = fileNames.size(); j < n1; j++) {    srcfile[j] = new File(fileNames.get(j));    }    ZipFiles(srcfile, zip);response.setContentType("application/zip");response.setHeader("Location",zip.getName());response.setHeader("Content-Disposition", "attachment; filename=" + zip.getName());  OutputStream outputStream = response.getOutputStream();InputStream inputStream = new FileInputStream(zipFilePath);byte[] buffer = new byte[1024];int i = -1;while ((i = inputStream.read(buffer)) != -1) {outputStream.write(buffer, 0, i);}outputStream.flush();outputStream.close();inputStream.close();outputStream = null;try {  delAllFile(filePath); // 删除完里面所有内容  filePath = filePath.toString();  java.io.File myFilePath = new java.io.File(filePath);  myFilePath.delete(); // 删除空文件夹  } catch (Exception e) {  e.printStackTrace();  }  }//压缩文件    public void ZipFiles(File[] srcfile, File zipfile) {    byte[] buf = new byte[1024];    try {    ZipOutputStream out = new ZipOutputStream(new FileOutputStream(    zipfile));    for (int i = 0; i < srcfile.length; i++) {    FileInputStream in = new FileInputStream(srcfile[i]);    out.putNextEntry(new ZipEntry(srcfile[i].getName()));    int len;    while ((len = in.read(buf)) > 0) {    out.write(buf, 0, len);    }    out.closeEntry();    in.close();    }    out.close();    } catch (IOException e) {    e.printStackTrace();    }    }  /*** * 删除指定文件夹下所有文件 *  * @param path 文件夹完整绝对路径 * @return */  public static  boolean delAllFile(String path) {  boolean flag = false;  File file = new File(path);  if (!file.exists()) {  return flag;  }  if (!file.isDirectory()) {  return flag;  }  String[] tempList = file.list();  File temp = null;  for (int i = 0; i < tempList.length; i++) {  if (path.endsWith(File.separator)) {  temp = new File(path + tempList[i]);  } else {  temp = new File(path + File.separator + tempList[i]);  }  if (temp.isFile()) {  temp.delete();  }  if (temp.isDirectory()) {  delAllFile(path + "/" + tempList[i]);// 先删除文件夹里面的文件  flag = true;  }  }  return flag;  }  

搞定!

java导出多个excel,以压缩包下载相关推荐

  1. Java导出多个excel并压缩下载

    //导出 @RequestMapping(value = "/export") public void poizip(HttpServletResponse response,Ht ...

  2. Java导出多个excel压缩成zip下载

    Java导出多个excel压缩成zip下载 maven <!--hutoos工具类根据需要可以导入不同的模块,我这里是导入全部的模块--><dependency><gro ...

  3. easypoi导出多个Excel压缩zip下载

    easypoi导出多个Excel压缩zip下载 maven <!-- 导入和导出--><dependency><groupId>cn.afterturn</g ...

  4. Java导出数据到Excel文件

    Java导出数据到Excel文件 前言 如何导出 导出的基本流程 测试结果 测试数据及结果 测试代码 ExcelExportUtil.class 遇到的问题 lombok的问题 解决 Cell.set ...

  5. java导出数据到excel模板_springboot+jxls 根据Excel模板 填写数据并导出

    项目结构 pom.xml net.sf.jxls jxls-core 1.0.6compile 学生信息表模板: ExcelUtiles package cn.bdqn.utils;import ne ...

  6. 使用Java导出数据到Excel

    一.excel数据导出限制 1. Excel 2003及以下的版本.一张表最大支持**65536**行数据,256列.也就是说excel2003完全不可能满足百万数据导出的需求. 2. Excel 2 ...

  7. Java 导出CSV文件及实现web下载CSV

    本文主要介绍Java 导出CSV文件到本地及实现web下载CSV. 1.Java 导出CSV文件到本地 csvWriter: package com.csvio;import java.io.Buff ...

  8. java导出数据到excel表格的最简单实现

    导出excel整理 开发中难免会遇到要导出数据到excel的,网上有很多方法,但是看起来都很复杂的样子,写得又非常多代码,让人望而止步.我做一个简单的导出excel表格功能.这是我在工作上用到的. 1 ...

  9. java导出大数据excel表格,导出数据

    常规的java导出excel表格最大的数据量是65535行. package com.sf.module.timeManagement.biz; import java.io.ByteArrayInp ...

  10. java导出多个excel并打成zip包

    这里主要是要针对数据量过大,通过生成多个excel文件并打成一个zip压缩包提供下载. 压缩excel的类  ZipUtil: Java代码   import java.io.*; import ja ...

最新文章

  1. 苏教版四下用计算机计算,苏教版四年级下册数学单元测试-4.用计算器计算 (含答案)...
  2. python实现vlookup功能_干货一:怎么在python里面实现vlookup
  3. python用编程软件_Python编程工具pycharm的使用
  4. 使用js实现时钟效果
  5. Couldn't find leader offsets for Set([smt,0], [smt,1], [smt,2])
  6. zabbix 3.2.1 安装 graphtree3.0.4 或 graphtree3.2.x
  7. 三天打鱼两天晒网python程序设计_Python经常会遇到三天的笔试题:钓鱼和两天的晒网:,之,三天打鱼,两天晒网...
  8. 续《用最简单的例子实现jQuery图片即时上传》之多图上传实现
  9. 欧几里德算法(模板)
  10. 【2022年Spring全家桶】Spring5.x 框架详解
  11. everedit 格式化json_[原创]Everedit的试用限制绕过
  12. 安装ssd后不识别网卡_安装固态硬盘后读不出来,怎么解决?
  13. macbook android 热点,Mac_mac如何做热点?mac创建wifi热点方法介绍,  如果是家里有路由器的, - phpStudy...
  14. 大话西游2同一个账号同一个服务器,大话西游2:服务器合并你是否支持?老玩家告诉你合服后的影响!...
  15. 房租租赁租房系统都包含哪些功能?
  16. 【汽车制造业】“新三化+新能源”蓝海,加速车企数字化转型进入“深水区”
  17. c语言程序设计拉丁方阵结构图,C语言实例:拉丁方阵
  18. 一文搞懂秒杀系统,欢迎参与开源,提交PR,提高竞争力。早日上岸,升职加薪。
  19. 【开关电源】基于Simplis的开关电源仿真设计
  20. Android 自定义日期段选择控件,开始日期-结束日期。

热门文章

  1. 通过一道ARM PWN题引发的思考:jarvisOJ_typo
  2. python中eval什么意思_python中eval函数作用
  3. 嵌入式技术可以做哪些产品
  4. css动画小案例(太阳地球月球运动轨迹)
  5. iOS UIWebView的基本用法
  6. 超时任务总结(tradingTask)
  7. java 利用Future做超时任务处理
  8. 特征图注意力_深度学习入门之注意力机制
  9. oracle数据库教程ppt,Oracle 数据库入门教程 PPT
  10. 【操作系统】为什么 0.1 + 0.2 不等于 0.3 ?