百万级数据以Excel形式导出

news2024/11/16 12:25:25

 (1).主要考虑到两个方面,第一个方面是内存溢出问题,所以选用阿里的EasyExcel因为它对POI进行了封装功能强大;第二个方面是由于excel版本导致Sheet存储容量不一样,cexcel2003(.xls)每个Sheet只能存6万多条数据而cexcel2007(xlsx)能存100多万条数据;

(2).主要实现逻辑是先利用总条数计算出装这么多数据需要多少个Sheet,每个Sheet要进行几次分批插入才插满,然后使用两层for循环,外层for循环用来遍历创建Sheet个数,内存循环用于分页分批查询数据到集合中,每次查询20万左右写到同一个Sheet中,直到写满100万条为止才进行下一伦外循环,最后一个Sheet写完毕后放行下载;

(3).查询前要调用集合的clear()方法清空之前的数据触发GC实现垃圾回收;前端发起请求时需要将http的响应时间默认的1s撤销请求设置长一点,避免超时连接丢失;

  • 怎么知道当前Sheet写满了呢?详见下图,内层循环完毕表示当前sheet写满了;
  • 怎么知道是最后一页?见下图,外层循环完毕就表示最后一页写完了;
  • 因为根据数据总条数、每个sheet计划放多少条、每次往里放多少条数据来计算出用多少个sheet才能装下,每个sheet要循环多少次才能装满,如果最后一页数据写不完则加1次内层遍历次数;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/150795.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【自学Python】Python布尔型(bool)

Python布尔型(bool) Python布尔型(bool)教程 Python 布尔类型也叫 bool 类型,Python 布尔类型取值为 True 和 False。Python bool 类型的 True 表示条件为真, False 表示条件为假。 Python布尔型(bool) Python 中的布尔类型可以当做 整数 来对待&…

LeetCode 287. 寻找重复数难度中等2004

🌈🌈😄😄欢迎来到茶色岛独家岛屿,本期将为大家揭晓LeetCode 287. 寻找重复数难度中等2004,做好准备了么,那么开始吧。🌲🌲🐴🐴一、题目名称LeetCo…

怎么在Gitee(码云)上传一个项目(一分钟)

目录怎么在Gitee(码云)上传一个项目1、工具1.1、Git1.2、新建仓库2、上传流程3、回答上传项目流程中的几个疑问?怎么在Gitee(码云)上传一个项目 1、工具 1.1、Git 在Git官网或者利用镜像下载符合自己电脑操作系统版…

小众企业在选购低代码平台时需要注意什么

编者按:企业个性化定制需求如何实现?本文介绍了小众企业在选择低代码平台需要注意的点,帮助企业选出更合适得的软件平台。关键词:源码交付,数据整合,前后端分离,私有化部署,安全技术…

IB生物笔记:细胞学说

国际学校生物老师从0开始解读IB生物,感兴趣的同学记得收藏哦~IB生物分为SL(standard level)和HL(higher level)SL有6个topic∶细胞生物,分子生物,遗传学,生态学,物种进化以及多样性和人体生理。HL除了上述6个topic外还…

【pat】出租

下面是新浪微博上曾经很火的一张图:一时间网上一片求救声,急问这个怎么破。其实这段代码很简单,index数组就是arr数组的下标,index[0]2 对应 arr[2]1,index[1]0 对应 arr[0]8,index[2]3 对应 arr[3]0&#…

年底清货刻不容缓!3天清空库存的服装老板是怎么做到的?

春节气氛越来越浓厚, 服装人的心情却是越来越着急——眼看着要过年了,气候也马上回暖了,我店里的库存可咋办?做服装零售的老板都知道,大部分时候压垮服装店的不是淡季、不是租金、不是人工费,而是库存积压。…

Java IO流 - 对象序列化和对象反序列化

文章目录序列化对象对象序列化对象反序列化序列化对象 对象序列化 对象序列化概念: 作用:以内存为基准,把内存中的对象存储到磁盘文件中去,称为对象序列化。 使用到的流是对象字节输出流:ObjectOutputStream ObjectOutputStream构…

Navicat远程连接ubuntu数据库

关于这个问题,我看许多博主也给出了解答,但作者此次遇到的问题也是略微特殊,希望其他人遇到同样的问题能得到启发。 首先是MySQL的安装,我是用的是Xubuntu系统,按照ubuntu系统安装MySQL的步骤即可。如下: …

关系运算符shell

关系运算符只支持数字,不支持字符串,除非字符串的值是数字。下表列出了常用的关系运算符,假定变量 a 为 10,变量 b 为 20:运算符说明举例-eq检测两个数是否相等,相等返回 true。[ $a -eq $b ] 返回 false。…

Mask RCNN网络源码解读(Ⅲ) --- FCN网络

目录 1.FCN网络简介 2.FCN-32S 3.FCN-16S 4.FCN-8S 5.膨胀卷积(空洞卷积) 6.pytorch中FCN的实现 6.1 代码地址 1.FCN网络简介 首个端对端的针对像素级预测的全卷积网络。全卷积网络即将分类网络中的全连接层全部替换为卷积层。 从数据可以看出…

微服务自动化管理【etcd快速集群】

概述 1.etcd构建自身高可用集群主要有三种形式: 静态发现 预先已知etcd集群中有哪些节点,在启动时通过–initial-cluster参数直接指定好etcd的各个节点地址 etcd动态发现 静态配置前提是在搭建集群之前已经提前知道各节点的信息,而实际应用中…

使用VS Code创建第一个Flutter工程

一、前言 你可以使用任意文本编辑器,再结合命令行工具来开发 Flutter 应用。然而,我们推荐使用本文接下来介绍的编辑器插件以获取更好的开发体验。这些插件提供了代码补全、代码高亮、widget 辅助编辑的功能,以及为项目的运行和调试提供支持…

【Denial-of-Service on FPGA-based Cloud Infrastructures论文笔记】

基于FPGA的云基础设施拒绝服务摘要引言背景FPGA TechnologyFPGA设计的实现用户设计在AWS的注册用户设计在AWS上的部署基于FPGA的系统攻击与对策客户端的FPGA使用基于云的fpga的使用信息泄露错误注入攻击对策云FPGA上的拒绝服务攻击攻击模型AWS FPGA安全架构AWS EC2 F1强力锤击攻…

@Validated+循环依赖报错

目录 测试demo 回顾下三级缓存 循环依赖bean实例化初始化过程​​​​​​​ 源码解读 实例化myZmTest1 myZmTest1依赖myZmTest2,实例化2去注入 myZmTest2依赖myZmTest1,获取myZmTest1去注入 获取到myZmTest1,继续myZmTest2初始化 m…

TCP协议的三次握手与四次挥手(附带常见面试题)

目录 一.TCP/UDP的区别 二.三次握手 三.四次挥手 四.常见面试题 一.TCP/UDP的区别 TCP:TCP协议是面向连接,连接稳定可靠适用于网络连接连接较高的场景,可以准确无误的把数据传递给对方,但传输速度上可能会存在一定的延迟。TCP…

Leetcode.32 最长有效括号

题目链接 Leetcode.32 最长有效括号 题目描述 给你一个只包含 (和 )的字符串,找出最长有效(格式正确且连续)括号子串的长度。 示例 1: 输入:s “(()” 输出:2 解释:最长有效括号子串是 “()”…

【报表设计器ActiveReportsJS(二)】第一个 ActiveReportsJS 报表设计器项目,本地化

上一篇:【Vue集成在线报表设计器ActiveReportsJS(一)】前言,ActiveReportsJS介绍, 在 Vue 框架中集成纯前端报表设计器 本篇将介绍如何使用ActiveReportsJS创建第一个web前端报表设计器 1. 创建 Vue应用 创建 Vue …

GNN笔记系列 5

GNN笔记系列 51.Permutation Equivariance of Graph Filters2.Lipschitz and Integral Lipschitz Filters3.Stability of Graph Filters to Scaling4.Stability of Graph Neural Networks to Scaling1.Permutation Equivariance of Graph Filters 图滤波器的置换等价性 引入置…

【ROS】—— ROS常用组件_TF坐标变换_静态坐标变换与动态坐标变换(十)

文章目录前言1. 坐标msg消息1.1 geometry_msgs/TransformStamped1.2 geometry_msgs/PointStamped2. 静态坐标变换2.1 C实现2.1.1 发布方2.1.2 订阅方2.2 python实现2.2.1 发布方2.2.2 订阅方2.3 补充3. 动态坐标变换3.1 C实现3.1.1 发布方3.1.2 订阅方3.2 python实现3.2.1 发布…