首页> 中国专利> 将数据导出为Excel文档的方法及装置

将数据导出为Excel文档的方法及装置

摘要

本发明提供一种将数据导出为Excel文档的方法及装置,该方法包括:根据每片待导出数据的预设条数对待导出数据进行分片,获取当前分片的序号;将所述预设条数和当前分片的序号发送给服务端,以供所述服务端根据所述预设条数和当前分片的序号从数据库中检索出所述当前分片的待导出数据;接收所述服务端返回的当前分片的待导出数据,直到接收到所有分片的待导出数据;使用第三方扩展工具库根据所述所有分片的待导出数据生成Excel文档。本实施例保证了数据的完整性,准确性,客户端不易出现卡顿,且减轻服务器的压力。

著录项

  • 公开/公告号CN112784553A

    专利类型发明专利

  • 公开/公告日2021-05-11

    原文格式PDF

  • 申请/专利权人 语联网(武汉)信息技术有限公司;

    申请/专利号CN202011627385.6

  • 发明设计人 张鹏;

    申请日2020-12-31

  • 分类号G06F40/174(20200101);G06F16/242(20190101);

  • 代理机构11002 北京路浩知识产权代理有限公司;

  • 代理人李文清

  • 地址 430206 湖北省武汉市东湖新技术开发区高新大道999号未来科技城B2栋13楼1302室

  • 入库时间 2023-06-19 10:57:17

说明书

技术领域

本发明涉及大数据导出技术领域,尤其涉及一种将数据导出为Excel文档的方法及装置。

背景技术

在实际应用中,经常遇到需要将一个大数据导出为Excel文档。以前Excel文档的生成通常是由后端完成的。

由于个人电脑的性能有限,在数据量大的情况下,将所有数据一次性导出,生成Excel文档比较困难,耗时长,会造成客户端浏览器长时间的卡顿。

发明内容

本发明提供一种将数据导出为Excel文档的方法及装置,用以解决现有技术中客户端导出Excel文档耗时长,造成卡顿的缺陷,实现数据分批次导出后聚合生成Excel文档。

本发明提供一种将数据导出为Excel文档的方法,包括:

根据每片待导出数据的预设条数对待导出数据进行分片,获取当前分片的序号;

将所述预设条数和当前分片的序号发送给服务端,以供所述服务端根据所述预设条数和当前分片的序号从数据库中检索出所述当前分片的待导出数据;

接收所述服务端返回的当前分片的待导出数据,直到接收到所有分片的待导出数据;

使用第三方扩展工具库根据所述所有分片的待导出数据生成Excel文档。

根据本发明提供的一种将数据导出为Excel文档的方法,所述当前分片的待导出数据由所述服务端根据所述预设条数和当前分片的序号计算所述当前分片中首条待导出数据的索引,根据所述首条待导出数据的索引和所述预设条数检索出。

根据本发明提供的一种将数据导出为Excel文档的方法,所述接收所述服务端返回的当前分片的待导出数据,直到接收到所有分片的待导出数据,包括:

接收所述服务端返回的当前分片的待导出数据;

若所述当前分片的待导出数据的条数等于所述预设条数,则继续将所述预设条数和所述当前分片的下一个分片的序号发送给服务端,以供所述服务端根据所述预设条数和下一个分片的序号返回所述下一个分片的待导出数据;

若所述当前分片的待导出数据的条数不等于所述预设条数,则获知接收到所有分片的待导出数据。

根据本发明提供的一种将数据导出为Excel文档的方法,所述使用第三方扩展工具库根据所述所有分片的待导出数据生成Excel文档,包括:

若已知所述待导出数据的总条数,则根据所述预设条数和总条数,计算对所述待导出数据分片的总片数;

根据所述总片数对所述所有分片的待导出数据进行并行下载;

使用第三方扩展工具库根据下载的所有分片的待导出数据生成Excel文档。

根据本发明提供的一种将数据导出为Excel文档的方法,所述使用第三方扩展工具库根据所述所有分片的待导出数据生成Excel文档,包括:

对每个分片的待导出数据进行下载,若任一分片的待导出数据下载失败,则重新下载该分片的待导出数据;

使用第三方扩展工具库根据重新下载的分片的待导出数据生成Excel文档。

根据本发明提供的一种将数据导出为Excel文档的方法,所述使用第三方扩展工具库根据所述所有分片的待导出数据生成Excel文档,包括:

对每个分片的待导出数据进行校验,若任一分片的待导出数据异常,则将所述预设条数和该分片的序号发送给服务端,以供所述服务端根据所述预设条数和该分片的序号再次返回该分片的待导出数据;

使用第三方扩展工具库根据所述服务端再次返回的该分片的待导出数据生成Excel文档。

根据本发明提供的一种将数据导出为Excel文档的方法,所述使用第三方扩展工具库根据所述所有分片的待导出数据生成Excel文档,包括:

若在所述分片的待导出数据的下载过程中获取到用户的暂停操作,则暂停对所述分片的待导出数据进行下载;

若获取到用户对暂停下载的所述待导出数据的启动下载操作,则从暂停下载的所述分片的待导出数据开始继续下载;

使用第三方扩展工具库根据所有下载的分片的待导出数据生成Excel文档。

本发明还提供一种将数据导出为Excel文档的装置,包括:

分片模块,用于根据每片待导出数据的预设条数对待导出数据进行分片,获取当前分片的序号;

发送模块,用于将所述预设条数和当前分片的序号发送给服务端,以供所述服务端根据所述预设条数和当前分片的序号从数据库中检索出所述当前分片的待导出数据;

接收模块,用于接收所述服务端返回的当前分片的待导出数据,直到接收到所有分片的待导出数据;

生成模块,用于使用第三方扩展工具库根据所述所有分片的待导出数据生成Excel文档。

本发明还提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述任一种所述将数据导出为Excel文档的方法的步骤。

本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述将数据导出为Excel文档的方法的步骤。

本发明提供的将数据导出为Excel文档的方法及装置,通过将待导出数据按照一定的大小进行分片后导出,数据全部导出后再由客户端对所有的分片进行汇总整合成Excel文档,保证了数据的完整性,准确性;利用客户端的处理能力,结合分片导出数据,自动整合数据生成Excel文档,客户端不易出现卡顿,且减轻服务器的压力。

附图说明

为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明提供的将数据导出为Excel文档的方法流程示意图;

图2是本发明提供的将数据导出为Excel文档的装置结构示意图;

图3是本发明提供的电子设备的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

下面结合图1描述本发明的一种将数据导出为Excel文档的方法,包括:步骤101,根据每片待导出数据的预设条数对待导出数据进行分片,获取当前分片的序号;

其中,待导出数据为需要导出为Excel文档的数据,为当前Web页面中带分页的表格中的数据。使用JavaScript获取并存储表格的标题,用作Excel的表头标题行dataTitle,同时定义表体数组dataMain。向表体dataMain数组的开头添加dataTitle表头标题行。

客户端对待导出数据从前到后依次进行分片,使得每个分片中待导出数据的条数等于预设条数。根据每个分片中待导出数据在表格中的先后顺序对每个分片进行编号。例如,若将待导出数据分为30片,则分片的序号依次为1至30。

步骤102,将所述预设条数和当前分片的序号发送给服务端,以供所述服务端根据所述预设条数和当前分片的序号从数据库中检索出所述当前分片的待导出数据;

客户端依次将每个分片的序号和预设条数发送给服务端。定义每个分片中待导出数据的条数为预设条数limit,当前分片的序号为page。将limit和page发送到服务端当前页面表格的接口地址。服务端根据limit和page使用SQL(Structured Query Language,结构化查询语言)查询语句从数据库中检索出当前分片的待导出数据返回给客户端。

步骤103,接收所述服务端返回的当前分片的待导出数据,直到接收到所有分片的待导出数据;

客户端接收成功返回的当前分片的待导出数据returnData后,循环push到表体数组dataMain存储起来。然后继续将++page和limit继续发送到服务端,直到接收到所有分片的待导出数据。

步骤104,使用第三方扩展工具库根据所述所有分片的待导出数据生成Excel文档。

通过第三方扩展工具库如SheetJS将已经是完整Excel数据的表体数组dataMain生成Excel文档,执行后就会弹出下载框。同时释放删除dataMain里的数据。

本实施例通过将待导出数据按照一定的大小进行分片后导出,数据全部导出后再由客户端对所有的分片进行汇总整合成Excel文档,保证了数据的完整性,准确性;利用客户端的处理能力,结合分片导出数据,自动整合数据生成Excel文档,客户端不易出现卡顿,且减轻服务器的压力。

在上述实施例的基础上,本实施例中所述当前分片的待导出数据由所述服务端根据所述预设条数和当前分片的序号计算所述当前分片中首条待导出数据的索引,根据所述首条待导出数据的索引和所述预设条数检索出。

具体地,服务端接收客户端的数据请求后查询表格中的数据。在对数据库查询时,将SQL查询语句中的limit和page参数替换为接收的limit和page。SQL查询语句根据预设条数limit和当前分片的序号page计算当前分片中首条待导出数据的索引为(page-1)*limit,根据(page-1)*limit和limit检索出当前分片的待导出数据。并将检索到的当前分片的待导出数据返回给客户端。

在上述实施例的基础上,本实施例中所述接收所述服务端返回的当前分片的待导出数据,直到接收到所有分片的待导出数据,包括:接收所述服务端返回的当前分片的待导出数据;若所述当前分片的待导出数据的条数等于所述预设条数,则继续将所述预设条数和所述当前分片的下一个分片的序号发送给服务端,以供所述服务端根据所述预设条数和下一个分片的序号返回所述下一个分片的待导出数据;若所述当前分片的待导出数据的条数不等于所述预设条数,则获知接收到所有分片的待导出数据。

具体地,若服务端返回的当前分片中待导出数据returnData的条数等于limit时,将++page和limit继续发送到服务端。直到判断returnData的数据条度不等于limit时,获知已经拉取完所有待导出数据。

在上述实施例的基础上,本实施例中所述使用第三方扩展工具库根据所述所有分片的待导出数据生成Excel文档,包括:若所述待导出数据的总条数确定,则根据所述预设条数和总条数,计算对所述待导出数据分片的总片数;根据所述总片数对所述所有分片的待导出数据进行并行下载;使用第三方扩展工具库根据下载的所有分片的待导出数据生成Excel文档。

具体地,当客户端已知待导出数据的总条数时,计算待导出数据分片的总片数totalPages=totalNum%limit==0?(totalNum/limit):(totalNum/limit)+1。此时开启并行下载,使用多个线程并行发送totalPages,请求并行下载。在数据量较大时,并行下载多个分片以加快下载。客户端没开启并行下载时,采用的是流式下载。此时不确定待导出数据的总条数。

本实施例通过多线程对不同的分片进行并行下载,提高下载效率,降低下载的时间。

在上述各实施例的基础上,本实施例中所述使用第三方扩展工具库根据所述所有分片的待导出数据生成Excel文档,包括:对每个分片的待导出数据进行下载,若任一分片的待导出数据下载失败,则重新下载该分片的待导出数据;使用第三方扩展工具库根据重新下载的分片的待导出数据生成Excel文档。

具体地,现有的Excel导出方法由于数据量大、网络波动、中途断连和链接超时等原因,导致需要从数据起始位置进行下载。而本申请在出现分片的待导出数据下载失败时,可以根据用户的自主选择对已获取到的dataMain数据中的单个分片进行独立的重试,而不需要重新下载其他的分片。

本实施例减少了导出大数据时由于网络原因等造成各种数据导出失败的情况,节省了大量的资源和时间成本,提高了大数据导出的速度和质量。

在上述各实施例的基础上,本实施例中所述使用第三方扩展工具库根据所述所有分片的待导出数据生成Excel文档,包括:对每个分片的待导出数据进行校验,若任一分片的待导出数据异常,则将所述预设条数和该分片的序号发送给服务端,以供所述服务端根据所述预设条数和该分片的序号再次返回该分片的待导出数据;使用第三方扩展工具库根据所述服务端再次返回的该分片的待导出数据生成Excel文档。

具体地,如果某个分片的待导出数据由于网络等原因出错,通过对每个分片的待导出数据进行校验获知数据异常,则继续将异常分片的预设条数和序号发送给服务端,以重新导出异常分片。

在上述各实施例的基础上,本实施例中所述使用第三方扩展工具库根据所述所有分片的待导出数据生成Excel文档,包括:若在所述分片的待导出数据的下载过程中获取到用户的暂停操作,则暂停对所述分片的待导出数据进行下载;若获取到用户对暂停下载的所述待导出数据的启动下载操作,则从暂停下载的所述分片的待导出数据开始继续下载;使用第三方扩展工具库根据所有下载的分片的待导出数据生成Excel文档。

具体地,若在分片的下载过程的中途暂停,则可以从暂停下载的分片的位置继续进行下载。

下面对本发明提供的将数据导出为Excel文档的装置进行描述,下文描述的将数据导出为Excel文档的装置与上文描述的将数据导出为Excel文档的方法可相互对应参照。

如图2所示,该装置包括分片模块201、发送模块202、接收模块203和生成模块204;其中:

分片模块201用于根据每片待导出数据的预设条数对待导出数据进行分片,获取当前分片的序号;

客户端对待导出数据从前到后依次进行分片,使得每个分片中待导出数据的条数等于预设条数。根据每个分片中待导出数据在表格中的先后顺序对每个分片进行编号。

发送模块202用于将所述预设条数和当前分片的序号发送给服务端,以供所述服务端根据所述预设条数和当前分片的序号从数据库中检索出所述当前分片的待导出数据;

客户端依次将每个分片的序号和预设条数发送给服务端。定义每个分片中待导出数据的条数为预设条数limit,当前分片的序号为page。将limit和page发送到服务端当前页面表格的接口地址。服务端根据limit和page使用SQL查询语句从数据库中检索出当前分片的待导出数据返回给客户端。

接收模块203用于接收所述服务端返回的当前分片的待导出数据,直到接收到所有分片的待导出数据;

客户端接收成功返回的当前分片的待导出数据returnData后,循环push到表体数组dataMain存储起来。然后继续将++page和limit继续发送到服务端,直到接收到所有分片的待导出数据。

生成模块204用于使用第三方扩展工具库根据所述所有分片的待导出数据生成Excel文档。

通过第三方扩展工具库如SheetJS将已经是完整Excel数据的表体数组dataMain生成Excel文档,执行后就会弹出下载框。同时释放删除dataMain里的数据。

本实施例通过将待导出数据按照一定的大小进行分片后导出,数据全部导出后再由客户端对所有的分片进行汇总整合成Excel文档,保证了数据的完整性,准确性;利用客户端的处理能力,结合分片导出数据,自动整合数据生成Excel文档,客户端不易出现卡顿,且减轻服务器的压力。

在上述实施例的基础上,本实施例中所述当前分片的待导出数据由所述服务端根据所述预设条数和当前分片的序号计算所述当前分片中首条待导出数据的索引,根据所述首条待导出数据的索引和所述预设条数检索出。

在上述实施例的基础上,本实施例中接收模块用于:接收所述服务端返回的当前分片的待导出数据;若所述当前分片的待导出数据的条数等于所述预设条数,则继续将所述预设条数和所述当前分片的下一个分片的序号发送给服务端,以供所述服务端根据所述预设条数和下一个分片的序号返回所述下一个分片的待导出数据;若所述当前分片的待导出数据的条数不等于所述预设条数,则获知接收到所有分片的待导出数据。

在上述实施例的基础上,本实施例中生成模块用于:若所述待导出数据的总条数确定,则根据所述预设条数和总条数,计算对所述待导出数据分片的总片数;根据所述总片数对所述所有分片的待导出数据进行并行下载;使用第三方扩展工具库根据下载的所有分片的待导出数据生成Excel文档。

在上述各实施例的基础上,本实施例中生成模块用于:对每个分片的待导出数据进行下载,若任一分片的待导出数据下载失败,则重新下载该分片的待导出数据;使用第三方扩展工具库根据重新下载的分片的待导出数据生成Excel文档。

在上述各实施例的基础上,本实施例中生成模块用于:对每个分片的待导出数据进行校验,若任一分片的待导出数据异常,则将所述预设条数和该分片的序号发送给服务端,以供所述服务端根据所述预设条数和该分片的序号再次返回该分片的待导出数据;使用第三方扩展工具库根据所述服务端再次返回的该分片的待导出数据生成Excel文档。

在上述各实施例的基础上,本实施例中生成模块用于:若在所述分片的待导出数据的下载过程中获取到用户的暂停操作,则暂停对所述分片的待导出数据进行下载;若获取到用户对暂停下载的所述待导出数据的启动下载操作,则从暂停下载的所述分片的待导出数据开始继续下载;使用第三方扩展工具库根据所有下载的分片的待导出数据生成Excel文档。

图3示例了一种电子设备的实体结构示意图,如图3所示,该电子设备可以包括:处理器(processor)310、通信接口(Communications Interface)320、存储器(memory)330和通信总线340,其中,处理器310,通信接口320,存储器330通过通信总线340完成相互间的通信。处理器310可以调用存储器330中的逻辑指令,以执行将数据导出为Excel文档的方法,该方法包括:根据每片待导出数据的预设条数对待导出数据进行分片,获取当前分片的序号;将所述预设条数和当前分片的序号发送给服务端,以供所述服务端根据所述预设条数和当前分片的序号从数据库中检索出所述当前分片的待导出数据;接收所述服务端返回的当前分片的待导出数据,直到接收到所有分片的待导出数据;使用第三方扩展工具库根据所述所有分片的待导出数据生成Excel文档。

此外,上述的存储器330中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的将数据导出为Excel文档的方法,该方法包括:根据每片待导出数据的预设条数对待导出数据进行分片,获取当前分片的序号;将所述预设条数和当前分片的序号发送给服务端,以供所述服务端根据所述预设条数和当前分片的序号从数据库中检索出所述当前分片的待导出数据;接收所述服务端返回的当前分片的待导出数据,直到接收到所有分片的待导出数据;使用第三方扩展工具库根据所述所有分片的待导出数据生成Excel文档。

又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的将数据导出为Excel文档的方法,该方法包括:根据每片待导出数据的预设条数对待导出数据进行分片,获取当前分片的序号;将所述预设条数和当前分片的序号发送给服务端,以供所述服务端根据所述预设条数和当前分片的序号从数据库中检索出所述当前分片的待导出数据;接收所述服务端返回的当前分片的待导出数据,直到接收到所有分片的待导出数据;使用第三方扩展工具库根据所述所有分片的待导出数据生成Excel文档。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号