一:针对Excel导出如果导出的数据量较小,一般2w条左右(不定原因是由于js中var 变量的长度有限)

var str = "单元格1,单元格2,单元格3,单元格4,...";str += '\n';$.ajax({url: ".../downLoadToExcel",dataType: 'json',data: params,success: function (data) {for (var i = 0; i <data.length; i++) {for (var item in data[i]) {str += data[i][item] + '\t,';}str += '\n';}}});var uri = 'data:text/csv;charset=utf-8,\ufeff' + encodeURIComponent(str);//通过创建a标签实现var link = document.createElement("a");link.href = uri;//对下载的文件命名link.download = "导出Excel.csv";document.body.appendChild(link);link.click();document.body.removeChild(link);

二:通过前端请求由Java后端Poi技术导出(流导出,可以是很多格式,比如zip,或者xlsx,xls,csv等)

上代码:适用于大Excel导出

@RequestMapping(value = "downLoadToExcel")public void downLoadToExcel(User user, HttpServletRequest request, HttpServletResponse response) throws IOException {
//    ZipOutputStream zipOutputStream = new ZipOutputStream(out);ServletOutputStream out = response.getOutputStream();try {List<Map<String, Object>> list = testService.downLoadToExcel(user);request.setCharacterEncoding("UTF-8");//Excel的行对应的类型名String[] header = {"","","",""};double len = list.size();int ys = 0;if (len < 60000) {ys = 1;} else {ys = (int) Math.ceil(len / 60000);}Workbook wb = new SXSSFWorkbook();response.setContentType("application/octet-stream; charset=utf-8");response.setHeader("Content-Disposition", "attachment; filename=" + Encodes.urlEncode("表名.xlsx"));for (int i = 0; i < ys; i++) {List<Map<String, Object>> bllist = new ArrayList<>();double bllen = (i + 1) * 60000;if (bllen > len) {bllen = len;}for (int j = i * 60000; j < bllen; j++) {bllist.add(list.get(j));}Sheet sheet = wb.createSheet("sheet" + i);Row r = sheet.createRow(0);for (int z = 0; z < header.length; z++) {Cell cell = r.createCell(z);cell.setCellValue(header[z]);}int rownum = 1;for (Map info : bllist) {LinkedHashMap lmap = (LinkedHashMap) info;Row row = sheet.createRow(rownum++);int number = 0;for (Iterator it = lmap.entrySet().iterator(); it.hasNext(); ) {Map.Entry<String, Object> entry = (Map.Entry<String, Object>) it.next();Cell cell = row.createCell(number++);cell.setCellValue(entry.getValue().toString());}}}
//            ZipEntry z = new ZipEntry("Excel名称" + ".xslx");
//            zipOutputStream.putNextEntry(z);
//            wb.write(zipOutputStream);
//            zipOutputStream.flush();wb.write(out);out.flush();} catch (Exception e) {//logger.info("错误信息");} finally {//注意关闭顺序,否则可能文件错误
//            if (zipOutputStream != null) {
//                zipOutputStream.close();
//            }if (out != null) {out.close();}}return;}

  其中也可以选择使用Zip打包的方式写入流(注释代码便是)对应的前端可以使用 a标签下载,form表单提交,window.location.open等请求方式获取下载流。

        var link = document.createElement("a");link.href ="/downLoadToExcel?cs1=1&cs2=2";document.body.appendChild(link);link.click();document.body.removeChild(link);

  

 

转载于:https://www.cnblogs.com/flysdream/p/9877855.html

一次下载与导出的博弈相关推荐

  1. 得到app文稿导出_得到app的文稿怎么下载复制导出

    得到app的课程文稿怎么下载复制导出 决策的对错关系到战争的成败,所以<孙子兵法>强调 "知敌之情' 因为情报信息是决策的依据.作为一个企业决策者,其决策 也绝不能凭空臆断,而应 ...

  2. easyExcel下载或导出

    pom <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <ve ...

  3. vue中下载文件导出保存到本地

    vue中下载文件导出保存到本地 先分析如何下载:先有一个链接地址,然后使用 location.href或window.open()下载到本地 看看返回数据 res.config.url 中是下载链接地 ...

  4. 使用dumuz实现拼多多买家订单下载(批量导出)

    dumuz软件机器人实现拼多多买家订单下载(批量导出) 应用功能描述 模拟人工操作拼多多"个人中心-我的订单"订单网页,批量查询获取拼多多自己买的商品的订单数据. 操作步骤演示  ...

  5. 微信公众号历史文章批量下载保存导出方法

    微信公众号阅读成为许多人每天的日常习惯,相信在每天关注的微信公众号中,总会有一些作者在持续地输出优质内容.这些内容也许是你所处领域的精华,也许其中的观点启人深思,也许是单纯地喜欢上了某个大V的文字. ...

  6. koa实现下载和导出exsel表功能

    koa实现下载和导出exsel表功能 一. 下载实现 第一种是用koa自带的实现下载 const fs = require("fs") const Koa = require(&q ...

  7. 解决Java下载或导出的文件打不开的方法

    第一种情况:下载或导出的文件用Office和WPS都打不开: 解决方式:首先使用Postman下载或导出文件,如果无法打开,则在后端代码中寻找问题:若可以打开,则看前端调用的接口是否加了以下参数:re ...

  8. ScanNet数据集下载与导出颜色图、深度图、内参、位姿数据

    文章目录 0 介绍 (1)简介 (2)版本 1 申请与下载 1.1 申请 1.2 使用数据脚本下载指定序列 2 将下载的数据序列进行转化 (1)使用python2.7(ubuntu18.04自带环境) ...

  9. 文件上传下载导入导出

    ps: 代码已提交到gitee: https://gitee.com/Lazy_001/file-demo 文件上传下载导入导出 一.首先完成准备工作 1. 创建一个Springboot项目 < ...

最新文章

  1. jfinal获取url链接上面传来的string类型的值_每个公司都会用的短 URL 服务,怎么设计与实现?...
  2. c语言 五子棋 悔棋代码,跪求C语言五子棋悔棋部分实现
  3. MyBatis中的selectKey
  4. 序列化和反序列化的对单例破坏的防止及其原理
  5. matlab 二维高斯滤波 傅里叶_光电图像处理 | 傅里叶变换(二)
  6. 继承extends ,this super final 关键字,abstract抽象类,override方法重写
  7. 性能测试工具MultiMechanize的使用介绍
  8. 我写过最长的东西可能就是高考作文了
  9. DRUID连接池的使用
  10. 机器学习课程笔记【十二】- 主成分分析
  11. 剑指:合并两个排序的链表
  12. 自动化测试项目实战训练【广州8月】
  13. 第七周 项目4 - 队列数组
  14. HtmlHelp调用chm帮助文档使用
  15. c语言快排过程,快速排序(快排)C语言实现
  16. 今天我的app上线了庆祝一下
  17. 【牛客】矩阵幂(C++)
  18. python学习第一讲(基本的操作)
  19. STM32F103 PB3 作为 普通IO使用
  20. 转载:软件天才与技术民工

热门文章

  1. [收藏]为DataGrid添加CheckBox控件
  2. 支付宝支付 第十集:支付回调
  3. vue代理配置(vue+django前后端分离项目)
  4. buffer转int python_Python学习教程第23天numpy库(上)
  5. aws python lambda_AWS Lambda
  6. 论文翻译_做论文翻译需要知道哪些翻译技巧?知行翻译:这3个技巧
  7. 允许用户把多个作业同时提交给计算机,2005年7月操作系统试题和答案
  8. 情绪调节的自适应_情绪定律:你的情绪决定你的一切
  9. C++知识点49——类继承与类的构造、拷贝、operator=和析构函数
  10. sql 排序_SQL聚合与排序