【技术实现步骤摘要】
一种大数据量excel文件多线程异步导出方法及系统
[0001]本专利技术涉及数据导出
,具体涉及一种大数据量excel文件多线程异步导出方法及系统。
技术介绍
[0002]随着信息技术的发展,目前导出功能是各类信息系统提供的最为基本且频繁应用的功能,而处理大规模数据导出方案主要包括:使用 Apache 软件基金会开源的 Apache
‑
POI 套件库来完成表格文件的创建、解析及导出,常见格式为 xls、xlsx,都是二进制文件格式;以及导出纯文本格式CSV,导出过程皆由用户线程执行,并同步返回导出文件进行下载。上述两种方案存在一些缺陷,如基于Apache
‑
POI技术在实现导出时,由于其实现原理是在内存中一行一行的构建表格数据以及每个单元格的样式,因此在大数据量比如几十万,百万及以上规模的数据导出时会出现极高的内存占用以及长时间的执行时间,如果同时处理多个这样的任务可能会导致程序因过高的内存占用而崩溃;导出CSV的格式数据可以通过分批存盘的方式缓解内存占用,但在大数据量导出时由于需 ...
【技术保护点】
【技术特征摘要】
1.一种大数据量excel文件多线程异步导出方法,其特征在于,包括:接收客户端发送的Excel文件导出请求,并将所述Excel文件导出请求添加至任务队列;调度线程池按照“先入先出”的原则,从所述任务队列中逐个取出等候处理的任务;执行线程池对取出的所述任务执行导出操作;导出成功后,将所述Excel文件的下载地址发送至所述客户端以供所述客户端的用户根据所述下载地址下载所述Excel文件;其中,所述执行线程池对取出所述任务执行导出操作包括:预先设置存盘批次数值;遍历当前导出任务中的数据列表,解析每一条数据,提取要导出字段的名称和值,然后以逗号分隔的形式将值追加至文本缓冲区;每处理完一条数据后,立即释放该条数据所占的内存;当处理数据的数量达到所述存盘批次数值时,将所述文本缓冲区的文本内容追加至导出文件中,写入成功后立即清理所述文本缓冲区的内容空间;重复处理数据,直至所述任务中的所有数据处理完成。2.根据权利要求1所述的一种大数据量excel文件多线程异步导出方法,其特征在于,根据业务文件导出功能的触发频率以及服务器的内存大小设置所述任务队列容纳的任务数量;若达到所述任务数量,则拒绝接收所述Excel文件导出请求;若未达到所述任务数量,则添加至所述任务队列。3.根据权利要求1所述的一种大数据量excel文件多线程异步导出方法,其特征在于,所述调度线程池用于监听所述任务队列,且当有空闲线程则从所述任务队列中取出对应任务。4.一种采用权利要求1
‑
3任一所述的大数据量excel文件多线...
【专利技术属性】
技术研发人员:孙宝岳,闵刚,姚占龙,
申请(专利权)人:北京锐融天下科技股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。