一种Excel文件分布式导出方法和装置与流程

文档序号:29034237发布日期:2022-02-25 17:07阅读:237来源:国知局
一种Excel文件分布式导出方法和装置与流程
一种excel文件分布式导出方法和装置
技术领域
1.本发明涉及计算机技术领域,尤其涉及一种excel文件分布式导出方法和装置。


背景技术:

2.在现有技术中对于excel文件都是通过单服务器进行导出,当excel文件包含多个sheet(工作表)页时,使用一台服务器进行导出的效率通常很低,而当每个sheet页包含的数据量巨大时,导出就要花费大量时间,可能还会造成服务器故障。


技术实现要素:

3.有鉴于此,本发明实施例提供一种excel文件分布式导出方法和装置,能够大大提升包括大量数据的多sheet页的excel文件的导出效率,显著缩短导出时间。
4.为实现上述目的,根据本发明实施例的一个方面,提供了一种excel文件分布式导出方法,其特征在于,包括:
5.将待导出的excel文件的导出总任务拆分为多个主任务,并且标识每个所述主任务的任务属性;
6.使用包括多个服务器的服务器集群处理所述多个主任务,使得每个所述服务器处理任意一个所述主任务;以及
7.根据每个所述主任务的所述任务属性还原所述主任务在所述excel文件中的位置,从而将处理完成后的所述多个主任务合并以生成所述excel文件。
8.根据本发明实施例的一个方面,优选地,其中,
9.将待导出的excel文件的导出总任务拆分为多个主任务具体包括:将所述excel文件的所述导出总任务拆分为与所述excel文件包括的多个sheet页分别对应的所述多个主任务,并且
10.其中,所述任务属性包括任务id,所述任务id为所述主任务对应的所述sheet页在所述excel文件中的索引。
11.根据本发明实施例的一个方面,优选地,其中,
12.将待导出的excel文件的导出总任务拆分为多个主任务还包括:
13.将任意的一个以上的所述主任务分别拆分为多个子任务,以及
14.标识每个所述子任务的子任务属性,使得能够根据所述子任务属性还原所述子任务在相应的所述主任务中的位置。
15.根据本发明实施例的一个方面,优选地,其中,
16.所述主任务属性包括子任务数量和子任务状态;并且
17.所述子任务属性包括所属的所述主任务的任务id、起始数据id和结束数据id。
18.根据本发明实施例的一个方面,优选地,其中,
19.根据所述主任务和所述子任务的总数对所述服务器集群进行调用,使得每个所述服务器处理任意一个所述主任务或任意一个所述子任务。
20.根据本发明实施例的一个方面,优选地,其中,
21.根据每个所述子任务的所述子任务属性和每个所述主任务的所述任务属性进行所述多个子任务以及所述多个主任务的合并处理以生成所述excel文件。
22.根据本发明实施例的一个方面,优选地,其中,
23.根据所述子任务的所述子任务属性将同属于一个所述主任务的所述子任务合并以生成excel子文件,根据所述主任务的任务属性合并多个所述excel子文件以生成所述excel文件。
24.根据本发明实施例的另一方面,提供一种excel文件分布式导出装置,其特征在于,包括:
25.任务拆分单元,将待导出的excel文件的导出总任务拆分为多个主任务,并且标识每个所述主任务的任务属性;
26.任务处理单元,该任务处理单元使用包括多个服务器的服务器集群处理所述多个主任务,使得每个所述服务器处理任意一个所述主任务;以及
27.数据合并单元,该数据合并单元根据每个所述主任务的所述任务属性还原所述主任务在所述excel文件中的位置,从而将处理完成后的所述多个主任务合并以生成所述excel文件。
28.根据本发明实施例的另一方面,优选地,其中,
29.所述任务拆分单元将所述excel文件的所述导出总任务拆分为与所述excel文件包括的多个sheet页分别对应的所述多个主任务,并且
30.其中,所述任务属性包括任务id,所述任务id为所述主任务对应的所述sheet页在所述excel文件中的索引。
31.根据本发明实施例的另一方面,优选地,其中,
32.所述任务拆分单元将任意的一个以上的所述主任务分别拆分为多个子任务,并且标识每个所述子任务的子任务属性,使得能够根据所述子任务属性还原所述子任务在相应的所述主任务中的位置。
33.根据本发明实施例的另一方面,优选地,其中,
34.所述主任务属性包括子任务数量和子任务状态;并且所述子任务属性包括所属的所述主任务的任务id、起始数据id和结束数据id。
35.根据本发明实施例的另一方面,优选地,其中,
36.任务处理单元根据所述主任务和所述子任务的总数对所述服务器集群进行调用,使得每个所述服务器处理任意一个所述主任务或任意一个所述子任务。
37.根据本发明实施例的另一方面,优选地,其中,
38.所述数据合并单元根据每个所述子任务的所述子任务属性和每个所述主任务的所述任务属性进行所述多个子任务以及所述多个主任务的合并处理以生成所述excel文件。
39.根据本发明实施例的另一方面,优选地,其中,
40.所述数据合并单元根据所述子任务的所述子任务属性将同属于一个所述主任务的所述子任务合并以生成excel子文件,根据所述主任务的任务属性合并多个所述excel子文件以生成所述excel文件。
41.根据本发明实施例的又一方面,提供一种用于excel文件分布式导出的电子设备,其特征在于,包括:
42.一个或多个处理器;以及
43.存储装置,用于存储一个或多个程序,
44.当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如根据本发明实施例的一个方面的任一项所述的方法。
45.根据本发明实施例的再一方面,提供一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如根据本发明实施例的一个方面的任一项所述的方法。
46.上述发明中的一个实施例具有如下优点或有益效果:因为采用将待导出的excel文件拆分为多个任务,包括例如根据sheet页拆分的主任务和对主任务进一步拆分而得到的子任务,并且利用服务器集群分布式处理子任务这样的技术手段,所以克服了导出数据量大时导出时间长、导出效率低的技术问题,而且,通过标识多个主任务和子任务以得到多个无状态任务以分配到任意服务器进行处理,确保了导出过程的稳定可靠,进而达到节省处理时间、提高处理效率和稳定性并且降低处理成本的技术效果。
47.上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
48.附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
49.图1是根据本发明实施例的excel文件分布式导出方法的主要流程的示意图;
50.图2示出excel文件的部分拆分结果的一个实例;
51.图3是根据本发明实施例的excel文件分布式导出装置的主要模块的示意图;
52.图4是本发明实施例可以应用于其中的示例性系统架构图;
53.图5是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
54.以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
55.图1是根据本发明实施例的excel文件分布式导出方法的主要流程,如图1所示,根据本发明实施例的excel文件分布式导出方法主要包括:步骤s101,将待导出的excel文件的导出总任务拆分为多个主任务,并且标识每个所述主任务的任务属性;步骤s102,使用包括多个服务器的服务器集群处理所述多个主任务,使得每个所述服务器处理任意一个所述主任务;以及步骤s103,根据每个所述主任务的所述任务属性还原所述主任务在所述excel文件中的位置,从而将处理完成后的所述多个主任务合并以生成所述excel文件。
56.下面参考图1-2详细说明各个步骤。
57.步骤s101:任务拆分
58.本发明实施例的方法支持对excel文件的数据的多维度多粒度的拆分。其中,多维度指的是能够根据不同的属性对excel文件进行拆分,例如根据sheet页的数量和类型将一个excel文件拆分为多个主任务;多粒度指的是能够根据需要以不同的数据量为标准对excel文件进行拆分。
59.进行任务拆分时首先计算需要拆分的主任务的总数,这里主任务的总数可以是要导出的excel文件所包含的sheet页的数量。然后根据主任务的总数拆分主任务并且生成主任务数据。这里需要注意的是,需要设置主任务的属性,例如要将每个主任务属于哪个sheet页,即sheet页的索引标识清楚,使得可以根据主任务的属性还原主任务在excel文件中的具体位置,从而能够将任意一个主任务分配给任意一个服务器进行处理,而不影响后续的数据合并。换句话说,通过标识主任务的属性,使每个主任务能够被无状态化。
60.当主任务数据量大时,还可以继续将主任务拆分为多个子任务。这里同样需要标识每个子任务的属性,例如任务id、任务起始数据id、任务结束数据id和所属的主任务的sheet页的索引,以根据子任务的属性还原子任务在其所属的主任务中的位置。通过为每个子任务标识这样的关键属性,能够同样将子任务无状态化,使得能够将任意一个子任务分配给任意一个服务器进行处理,而不影响子任务的数据合并。
61.此外,通过如上所述地将主任务和子任务无状态化以将它们分配给任意服务器执行,当某个任务执行失败时,能够自动更换任意服务器以重新执行任务,从而保证系统的高度的可用性,进而保证每个任务都能被成功执行,确保了稳定可靠地导出数据。
62.对于任务起始数据id、任务结束数据id,例如,拆分出的一个主任务包括100条数据并且进一步被拆分为3个子任务,每个子任务数据范围可以分别是从1到33、34到66以及67到100,这里,“1”和“33”即可作为第一个子任务的任务起始数据id和任务结束数据id。如果在实际操作中这样的id不符合要求,也可以用时间来标记,如起始时间和结束时间。即,根据实际需要设定任务起始数据id和任务结束数据id。
63.注意,由于可能会被拆分为一个或多个子任务,所以主任务的属性还可以包括例如用户信息、子任务数量、子任务状态和请求来源等。另外,子任务的属性还可以包括数据查询条件等。
64.子任务还可以被继续拆分为次级子任务,并且还能够对次级子任务进行进一步拆分。以最小单位的子任务的大小作为拆分细粒度,根据需要通过设置拆分细粒度而对excel文件进行拆分,以得到适当数量和大小的子任务去进行处理。拆分细粒度可以根据实际需要而人为地设置,也可以设定为根据服务器的性能而综合评估出的一个具体的数据。
65.拆分结果如图2所示,图2示出excel文件的部分拆分结果的一个实例,其中excel文件根据sheet页数量被拆分为n个主任务,如sheet2页的sheet2-1,每个主任务又被拆分为多个子任务,如sheet2-1子任务1至sheet2-1子任务n,而其中sheet1页的两个子任务sheet1-1和sheet1-2又被进一步拆分为多个次级子任务,如sheet1-1子任务1至sheet1-1子任务n。
66.步骤s102:任务处理
67.任务拆分完成后,将拆分出的所有任务分配给后端的服务器集群进行处理。服务器集群是共同处理同一种服务的很多服务器的集合,可以大规模地处理子任务,即使任务
量巨大也能够保证任务的处理效率。在本发明实施例中,由于子任务都是无状态的,所以每个服务器都可以处理任意一个子任务,而如果服务器数量不够,则可以进行动态调整,即根据主任务和子任务的总数量调用服务器,使得理论上有多少个需要处理的任务就可以调用多少服务器进行同时处理。
68.步骤s103:数据合并
69.当子任务处理完成后,后文将描述的数据合并单元实时接收后文将描述的任务处理单元发来的消息,并进行数据合并处理。具体地,数据合并单元会读取每个子任务的属性,获取子任务所属的主任务以及该主任务的属性,并且计算该主任务的返回的子任务是否等于其子任务的总量,当一个主任务的返回的子任务的数量等于该主任务的子任务的总数时,该主任务的所有子任务处理完成,当返回的子任务的数量等于所有主任务的所有子任务的总数时,所有子任务处理完成。
70.然后,根据子任务的属性对同一个主任务的子任务进行合并以生成对应于同一个sheet页的excel子文件,当与主任务对应的所有sheet页下的子任务合并完成后,根据主任务的属性合并excel子文件,并且最终生成完整的excel文件。
71.最后,将最终生成的excel文件上传到云存储,支持用户进行下载。
72.以上说明了根据本发明一个实施例的excel文件分布式导出方法。本发明不限于上述实施例。例如,在上述实施例中,列举了根据sheet页和拆分细粒度对excel文件进行拆分的实例,然而本发明不限于此。例如,可以采用大数据技术对excel文件进行拆分。
73.下面参考图3说明执行根据本发明实施例的excel文件分布式导出方法的根据本发明实施例的excel文件分布式导出装置200。根据本发明实施例的excel文件分布式导出装置200包括:
74.任务拆分单元201,该任务拆分单元201执行上文所述的任务拆分的过程,即步骤s101,将待导出的excel文件的导出总任务拆分为多个主任务,并且标识每个所述主任务的任务属性;
75.任务处理单元202,该任务处理单元202执行上文所述的任务处理的过程,即步骤s102,使用包括多个服务器的服务器集群处理所述多个主任务,使得每个所述服务器处理任意一个所述主任务;以及
76.数据合并单元203,该数据合并单元203执行上文所述的数据合并的过程,即步骤s103,根据每个所述主任务的所述任务属性还原所述主任务在所述excel文件中的位置,从而将处理完成后的所述多个主任务合并以生成所述excel文件。
77.上文描述了根据本发明实施例的excel文件分布式导出方法和excel文件分布式导出装置。通过使用根据本发明实施例的excel文件分布式导出方法和excel文件分布式导出装置,通过将待导出的excel文件拆分为多个任务,包括例如根据sheet页拆分的主任务和对主任务进一步拆分而得到的子任务,并且利用服务器集群分布式处理子任务这样的技术手段,克服了导出数据量大时导出时间长、导出效率低的技术问题,而且,通过标识多个主任务和子任务的关键属性以得到多个无状态任务从而能够将任意任务分配到任意服务器进行处理,确保了导出过程的稳定可靠,进而达到节省处理时间、提高处理效率和稳定性并且降低处理成本的技术效果。
78.图4示出了可以应用本发明实施例的excel文件分布式导出方法或excel文件分布
式导出装置的示例性系统架构400。
79.如图4所示,系统架构400可以包括终端设备401、402、403,网络404和服务器405。网络404用以在终端设备401、402、403和服务器405之间提供通信链路的介质。网络404可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
80.用户可以使用终端设备401、402、403通过网络404与服务器405交互,以接收或发送消息等。终端设备401、402、403上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
81.终端设备401、402、403可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
82.服务器405可以是提供各种服务的服务器,例如对用户利用终端设备401、402、403所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息
‑‑
仅为示例)反馈给终端设备。
83.需要说明的是,本发明实施例所提供的excel文件分布式导出方法一般由服务器405执行,相应地,excel文件分布式导出装置一般设置于服务器405中。
84.应该理解,图4中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
85.下面参考图5,其示出了适于用来实现本发明实施例的终端设备的计算机系统500的结构示意图。图5示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
86.如图5所示,计算机系统500包括中央处理单元(cpu)501,其可以根据存储在只读存储器(rom)502中的程序或者从存储部分508加载到随机访问存储器(ram)503中的程序而执行各种适当的动作和处理。在ram 503中,还存储有系统500操作所需的各种程序和数据。cpu 501、rom 502以及ram 503通过总线504彼此相连。输入/输出(i/o)接口505也连接至总线504。
87.以下部件连接至i/o接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至i/o接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
88.特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(cpu)501执行时,执行本发明的系统中限定的上述功能。
89.需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不
限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。
90.附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
91.描述于本发明实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括任务拆分单元、任务处理单元和数据合并单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
92.作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:将待导出的excel文件的导出总任务拆分为多个主任务,并且标识每个所述主任务的任务属性;使用包括多个服务器的服务器集群处理所述多个主任务,使得每个所述服务器处理任意一个所述主任务;以及根据每个所述主任务的所述任务属性还原所述主任务在所述excel文件中的位置,从而将处理完成后的所述多个主任务合并以生成所述excel文件。
93.根据本发明实施例的技术方案,通过将待导出的excel文件拆分为多个任务,包括例如根据sheet页拆分的主任务和对主任务进一步拆分而得到的子任务,并且利用服务器集群分布式处理子任务这样的技术手段,克服了导出数据量大时导出时间长、导出效率低的技术问题,而且,通过标识多个主任务和子任务的关键属性以得到多个无状态任务从而能够将任意任务分配到任意服务器进行处理,确保了导出过程的稳定可靠,进而达到节省
处理时间、提高处理效率和稳定性并且降低处理成本的技术效果。
94.上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1