添加依赖

下面是 依赖代码片

       <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>3.0.3</version></dependency><dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-web</artifactId><version>3.0.3</version></dependency><dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-annotation</artifactId><version>3.0.3</version></dependency>

核心业务

  1. 前端页面
  2. 创建文件模板


    第一张图红色标记的地方,是我们需要后台填充的数据,第二张图是模板在项目里的存放路径,后面需要读取该路径。excel的语法具体可以参考利用模板语法快速生成 Excel 报表
  3. 导出至指定路径,并打包压缩的后台实现
public void createProjectMaterialVisible(Map<String, Object> params, HttpServletRequest request, HttpServletResponse response) throws FileNotFoundException, UnsupportedEncodingException {//创建存放模板数据的对象Map<String, Object> dataMap =new HashMap<>();//创建一个模板对象TemplateExportParams tempParams=null;String projectName = String.valueOf(params.get("projectName"));String projectNumber = String.valueOf(params.get("projectNumber"));//将数据存放到dataMap中,这里的key(projectName,projectNumber)要与模板中定义的名称保持一致,后面有更多的key也是一样dataMap.put("projectName", projectName);dataMap.put("projectNumber", projectNumber);//前端选择的文件String fileType = (String) params.get("fileType");String fileUrl=null;//定义一个文件导出存放的路径String excelPath="D:/"+projectName+"["+projectNumber+"]"+"项目资料";if (StringUtils.isNotBlank(fileType)) {String[] fileTypeArray = String.valueOf((String) params.get("fileType")).split(",");if (fileTypeArray.length > 0) {for(String x : fileTypeArray){List<FileDownloadHistoryExcel> dataList = Lists.newArrayList();if(x.equals("1")){//找到模板的存放路径tempParams= new TemplateExportParams("TemplateFiles/招标文件领取表.xls");//这边是业务需要的逻辑String url = interfaceUtil.getBaseUrl() + "/sys/fileDownloadHistory/getListByProjectId";JSONObject res = HttpsUtils.doGet(url, params);System.out.print("----------------------------" + res);if (null != res) {Map<String, String> resMap = CommenUtil.jsonStrToMap(res.toJSONString());JSONArray list = JSONArray.parseArray(resMap.get("data"));if (list.size() > 0) {//创建需要下载的excel对象FileDownloadHistoryExcel excel;for (int i = 0; i < list.size(); i++) {excel = new FileDownloadHistoryExcel();//将数据放入excel中excel.setProjectName(String.valueOf(list.getJSONObject(i).get("projectName")));excel.setProjectNumber(String.valueOf(list.getJSONObject(i).get("projectNumber")));excel.setSupplierName(String.valueOf(list.getJSONObject(i).get("supplierName")));excel.setProjectContacts(String.valueOf(list.getJSONObject(i).get("projectContacts")));excel.setContactInformation(String.valueOf(list.getJSONObject(i).get("contactInformation")));excel.setMailbox(String.valueOf(list.getJSONObject(i).get("mailbox")));excel.setDownloadTime(null == list.getJSONObject(i).get("downloadTime") ? null : String.valueOf(list.getJSONObject(i).get("downloadTime")));dataList.add(excel);}}}//将excel放入定义好的对象中dataMap.put("dataList", dataList);}else if(x.equals("2")){tempParams=new TemplateExportParams("TemplateFiles/投标文件送达登记表.xls");}else if(x.equals("3")){tempParams=new TemplateExportParams("TemplateFiles/现场承诺书.docx");}else if(x.equals("4")){tempParams=new TemplateExportParams("TemplateFiles/报价确认表.xls");}if(x.equals("2") || x.equals("4")){String url = interfaceUtil.getBaseUrl() + "/sys/HistoricalBidding/list";JSONObject res = HttpsUtils.doGet(url, params);JSONArray supplierArr = res.getJSONArray("data");FileDownloadHistoryExcel excel;if(supplierArr.size()>0){for (int j = 0; j < supplierArr.size(); j++) {excel = new FileDownloadHistoryExcel();String supplierName=supplierArr.getJSONObject(j).getString("supplierName");excel.setSupplierName(supplierName);dataList.add(excel);}dataMap.put("dataList", dataList);}}if(x.equals("3")){//这边是word的导出方法,也很简单,主要是定义一个XWPFDocument对象,再调用WordExportUtil.exportWord07()方法XWPFDocument doc = null;try {doc = WordExportUtil.exportWord07("TemplateFiles/现场承诺书.docx", dataMap);FileOutputStream fos = new FileOutputStream(excelPath+"/现场承诺书.docx");doc.write(fos);} catch (Exception e) {e.printStackTrace();}}else{//这里是将数据导入至excel模板中Workbook workbook = ExcelExportUtil.exportExcel(tempParams, dataMap);File savefile = new File(excelPath+"/");if (!savefile.exists()) {savefile.mkdirs();}//这是要保证你的文件路径的正确性,否则就会报错找不到该系统路径if(x.equals("1")){fileUrl=excelPath+"/招标文件领取表.xls";}else if(x.equals("2")){fileUrl=excelPath+"/投标文件送达登记表.xls";}else if(x.equals("4")){fileUrl=excelPath+"/报价确认表.xls";}FileOutputStream fos = new FileOutputStream(fileUrl);try {workbook.write(fos);fos.close();} catch (IOException e) {e.printStackTrace();}}}}//压缩4个附件ZipUtil.zip(excelPath);String zipFileName = excelPath+".zip";File zipFile = new File(zipFileName);BufferedInputStream bins=new BufferedInputStream(new FileInputStream(zipFile));response.setCharacterEncoding("UTF-8");response.setHeader("content-Type", "application/x-download");response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(zipFile.getName(), "UTF-8"));ServletOutputStream out1 = null;try {//这边直接压缩并且在浏览器下载out1 = response.getOutputStream();int bytesRead = 0;byte[] buffer = new byte[8192];while ((bytesRead = bins.read(buffer, 0, 8192)) != -1) {out1.write(buffer, 0, bytesRead);}out1.flush();bins.close();out1.close();} catch (IOException e) {e.printStackTrace();}}}
  1. 文件直接在浏览器端下载实现
  public void exportPromise(Map<String, Object> params, HttpServletRequest request, HttpServletResponse response) {ModelMap modelMap = new ModelMap();Map<String, Object> dataMap = Maps.newHashMap();//给模板填充内容,key与模板中定义的名称一样String projectName = String.valueOf(params.get("projectName"));String projectNumber = String.valueOf(params.get("projectNumber"));dataMap.put("projectName", projectName);dataMap.put("projectNumber", projectNumber);modelMap.put(TemplateWordConstants.FILE_NAME,"自定义的文件名");//找到自己的模板路径modelMap.put(TemplateWordConstants.URL,"TemplateFiles/promiseReport.docx");modelMap.put(TemplateWordConstants.MAP_DATA, dataMap);PoiBaseView view = new EasypoiTemplateWordView();try {//一行代码直接下载view.render(modelMap, request, response);} catch (Exception e) {e.printStackTrace();}}直接下载就超级简单,这边给的简单的模板,如果模板里是集合的话,就参照上面的excel的    数据添加部分。
导出excel和word的核心代码大致就是这些了,有问题欢迎提出来,一起探讨学习。喜欢的可以点赞收藏,哈哈哈,这是我继续更博的动力呀

使用EasyPoi实现文件批量下载,导出与压缩相关推荐

  1. 亿彩文件批量下载器 v3.0

    简介: 亿彩文件批量下载器,主要用于对已知的网络文件的Url,将其批量下载到本地上,并根据需要自动更名下载后的文件,功能丰富强大;支撑大容量几十万几百万条的下载,支持特殊网址的导入,支持保留网络路径结 ...

  2. java文件批量下载打包成zip

    1.首先html页面获取当前需要下载文件的id集合将转成字符串形式传递到后台. ................ 2 .下面就是获取字符串之后的批量下载/*** 多文件批量下载压缩成zip**root ...

  3. 【java】 文件批量下载并压缩为zip压缩包

    [java] 文件批量下载并压缩为zip压缩包 java常用的压缩技术 java中常见实现压缩与解压 业务场景 代码实现 注意点 java常用的压缩技术 常见的压缩格式有很多种,例如:zip.rar. ...

  4. 多文件批量下载打包成.zip

    多文件批量下载打包成.zip //下载文件打包成zip压缩包@GetMapping("/zip/{id}")public void zip(@PathVariable(" ...

  5. JavaScript (mp3、mp4、jpg、doc、txt、rar)单个、多文件批量下载

    JavaScript 多文件下载 HTML5中 a 标签新增了一个属性 download,一般情况下,用户点击a链接浏览器会打开对应的链接地址,如果链接地址是一个文件如(xxx.rar.xxx.jpg ...

  6. Java实现文件批量导入导出实例(兼容xls,xlsx)

    <link href="https://csdnimg.cn/public/favicon.ico" rel="SHORTCUT ICON"> &l ...

  7. react——利用jszip实现文件批量下载并打包成zip文件

    本文章主要记录利用jszip实现文件批量下载图片,文档.mp3,视频(MP4)等文件,一般而言前端实现下载功能一般都是通过a链,这在下载单个文件的场景很实用,但如果是批量下载很多个文件,同样也可以用a ...

  8. 文件批量下载方法 文件批量下载工具

    软件版本:Internet Download Manager 在当今数字化时代,我们日常使用电脑进行各种工作和娱乐活动.有时候,我们需要从互联网上下载大量文件,例如电影.音乐.文档等.在这种情况下,手 ...

  9. c# 多线程多文件批量下载

    https://www.cnblogs.com/jianzhan/p/7137485.html c# 多线程多文件批量下载 废话少说,先演示一张效果图 简单说下过程喽 开发过程中其实总是会碰到项目想应 ...

最新文章

  1. Yoshua Bengio首次中国演讲:深度学习通往人类水平AI的挑战
  2. 使用PXE+VNC方式安装CentOS 7
  3. xbox360fsd更新游戏封面_游戏类短视频创作指南
  4. 年轻人如何抵抗居高不下的房价?
  5. 基于 props 更新 state
  6. 滚动长截图,截取第三方应用,如微博、知乎、头条长图文...
  7. 大航海时代4+伙伴加入条件和港口一览
  8. PR转场预设 模仿纸张翻转特效PR视频转场PR预设
  9. windows 下杀手tomcat 进程
  10. lm曲线公式推导_高考圆锥曲线再难,也能用“8个”方法秒杀!不愧是清华学霸...
  11. 知识点滴 - 关于苹果认证MFI
  12. 如何搭建免费的个人网站
  13. ad软件one pin错误是啥意思_AD错误中英文对照
  14. Python爬取金山词霸每日一句,存储到MySQL中
  15. Java配置环境变量(Windows)
  16. java中json数据_Java中json的使用 解析json数据
  17. 企业信息化战略与实施(一)-信息化和战略方法论
  18. cc计算机什么专业简称,cs是什么专业的简称
  19. 计算机崩溃用英语怎么说,“崩溃”英语怎么说
  20. 如何以Java实现网页截图技术,根据URL得到网页快照

热门文章

  1. linux压缩命令大全
  2. BitDefender(比特梵德)特惠活动 免费获取9个月激活码
  3. Excel中 IFERROR 函数 可以错误值#N/A、#value变成空格
  4. 用于临床心理学和精神病学的机器学习方法
  5. 优品购电商3.0微服务商城项目实战小结
  6. 11.5项目小结(推箱子Unity导航系统)
  7. VLC播放器调试经验总结
  8. VLC播放器截图保存位置
  9. 战神快排教你网站长尾关键词SEO优化的方法
  10. SaltStack介绍及安装