将web页面上显示的报表导出到excel文件里是一种很常见的需求。润乾报表的类excel模型,支持excel文件数据无失真的导入导出,使用起来非常的方便。然而,当数据量较大的情况下,excel本身的支持最多65535行数据的问题便凸显出来。下面就给出大数据量导出到excel的解决方案。

首先,对于数据超过了65535行的问题,很自然的就会想到将整个数据分块,利用excel的多sheet页的功能,将超出65535行后的数据写入到下一个sheet页中,即通过多sheet页的方式,突破了最高65535行数据的限定。

具体做法就是:

单独做一个链接,使用JSP导出,在JSP上通过程序判断报表行数,超过65535行后分SHEET写入。这样这个问题就得以解决了。

更进一步地说,在这种大数据量的报表生成和导出中,要占用大量的内存,尤其是在使用TOMCAT的情况下,JVM最高只能支持到2G内存,则会发生内存溢出的情况。此时的内存开销主要是两部分,一部分是该报表生成时的开销,另一部分是该报表生成后写入一个EXCEL时的开销。由于JVM的GC机制是不能强制回收的,因此,对于此种情形,我们给出一个变通的解决方案。

首先,将该报表设置起始行和结束行参数,在API生成报表的过程中,分步计算报表,比如一张20万行数据的报表,在生成过程中,可通过起始行和结束行分4-5次进行。这样,就降低了报表生成时的内存占用,在后面报表生成的过程中,如果发现内存不够,即可自动启动JVM的GC机制,回收前面报表的缓存。

导出EXCEL的过程,放在每段生成报表之后立即进行,改多个SHEET页为多个EXCEL,即在分步生成报表的同时分步生成EXCEL,则通过POI包生成EXCEL的内存消耗也得以降低。通过多次生成,同样可以在后面EXCEL生成所需要的内存不足时,有效回收前面生成EXCEL时占用的内存。

再使用文件操作,对每个客户端的导出请求在服务器端根据SESSIONID和登陆时间生成唯一的临时目录,用来放置所生成的多个EXCEL,然后调用系统控制台,打包多个EXCEL为RAR或者JAR方式,最终反馈给用户一个RAR包或者JAR包,响应客户请求后,再次调用控制台删除该临时目录。

使用这种方法,首先是通过分段运算和生成,有效降低了报表从生成结果到生成EXCEL的内存开销。其次是通过使用压缩包,响应给用户的生成文件体积大大缩小,降低了多用户并发访问时服务器下载文件的负担,有效减少多个用户导出下载时服务器端的流量,从而达到进一步减轻服务器负载的效果。

大数据导出excel大小限制_EXCEL大数据量导出的解决方案相关推荐

  1. 大数据导出excel大小限制_大数据量导出Excel的方案

    测试共同条件: 数据总数为110011条,每条数据条数为19个字段. 电脑配置为:P4 2.67GHz,1G内存. 一.POI.JXL.FastExcel比较 POI.JXL.FastExcel均为j ...

  2. Pandas如何读取和导出 Excel、CSV、JSON 数据?

    转载自:Pandas如何读取和导出 Excel.CSV.JSON 数据? - 知乎 导入pandas等包 import pandas as pd import numpy as np import m ...

  3. EasyExcel导入导出excel 复杂表头 表头校验 数据校验

    目录 EasyExcel特点 一.导入excel案例 二.读取excel的相关技术点 1.读取excel的方式 2.读取sheet数量 3.指定从第几行开始读数据 三.导出excel 1.前端发起请求 ...

  4. xlsx表格怎么筛选重复数据_excel表格如何筛选重复数据 在Excel表格的两列数据中提取不重复值的四种方法...

    excel表格如何筛选重复数据 在Excel表格的两列数据中提取不重复值的四种方法,最近到了季度汇报的时候,掌握一手excel技能在此刻显得多么重要,为了是你的excel看起来更高大上,今天教大家设置 ...

  5. php导出数字成科学计数法,php导出excel长数字显示成科学计数法格式的解决方案...

    php导出excel长数字显示成科学计数法格式的解决方案 首先,我们了解一下excel从web页面上导出的原理.当我们把这些数据发送到客户端时,我们想让客户端程序(浏览器)以excel的格式读取它,所 ...

  6. R语言ggplot2可视化:可视化箱图、在箱图中添加抖动数据点(Dot + Box Plot)、自定义抖动数据点的大小、颜色、数据点分布在箱图中间、添加主标题、副标题、题注信息

    R语言ggplot2可视化:可视化箱图.在箱图中添加抖动数据点(Dot + Box Plot).自定义抖动数据点的大小.颜色.数据点分布在箱图中间.添加主标题.副标题.题注信息 目录

  7. Jsoup:使用Java将爬虫得到的数据写入Excel,Jsoup得到的数据进行持久化,爬虫数据保存到本地Excel中

    Jsoup:使用Java将爬虫得到的数据写入Excel,Jsoup得到的数据进行持久化,爬虫数据保存到本地Excel中 一.资源 EasyExcel使用教程 Jsoup爬虫教程 二.代码 xml依赖 ...

  8. bootstraptable导出excel独立使用_使用 EasyPOI 优雅导出Excel模板数据(含图片)

    EasyPOI功能如同名字Easy,主打的功能就是容易,让一个没接触过POI的人员可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出.通过简单的注解和模板语言(熟悉的表 ...

  9. 基于poi的动态导出excel表头以及统计行列数据(全网最全)

    引入依赖 <!-- excel导入导出 --><dependency><groupId>com.github.stupdit1t</groupId>&l ...

最新文章

  1. 数字图像处理之图像几何变换
  2. 第97:一文读懂协方差与协方差矩阵
  3. 【算法分析与设计】埃氏筛素数算法
  4. 四川长虹招聘机器视觉、图像识别工程师
  5. 零基础学Python--------第3章 流程控制语句
  6. 百度员工离职总结:如何做个好员工?(转)
  7. linux安装最新php版本下载地址,服务器配置-使用Linux编译安装PHP指定版本
  8. mysql 保存emoji 4字节宽度字符串
  9. WPS检测到字体缺失Windows字体包方正字体库
  10. wpsmac历史版本_WPS Office 2019 1.2.0(1574) Mac中文正式版
  11. 重磅:Mobileye官宣推迟IPO,营收增速放缓、市场竞争加剧
  12. c语言十进制转ieee754代码,C#IEEE754到十进制(C# IEEE754 to decimal)
  13. Hadoop的fsck工具
  14. 2021Matlab项目课题推荐
  15. DC基础学习(二)Synthesis Flow1
  16. SQL*Plus中 Set timing on的时间显示单位
  17. android MVP——mvp架构的应用和优化
  18. python 读取pdf cid_记一次为解决Python读取PDF文件的Shell操作
  19. G120系列变频器进行参数备份(上传或下载)的2种基本方法介绍(Startdrive+SD卡)
  20. 多台以太网交换机怎么连接?

热门文章

  1. 中文繁体和简体相互转换simplified.txt文件
  2. python字符串转日期函数
  3. java取得输入的运算符_java第三天(运算符、键盘录入和控制语句)
  4. jQuery-锚点动画
  5. 程序员怎么凭一己之力搞垮项目?
  6. 3.搭建Vue开发环境
  7. linux中将一个文件或文件夹移动、复制到另一个文件夹的方法
  8. Cadence OrCAD Capture复用参考设计时保持参考设计编号不变的情况下自动编号的方法
  9. Excel 搜索替换 软换行符
  10. CAD关于文字样式得到所有文字样式操作(com接口c#语言)