1.本技术涉及软件技术领域,特别是涉及一种数据导出方法、系统、计算机设备及可读存储介质。
背景技术:
2.随着政企对数据的关注越来越高,数据的展示成为软件设计绕不开的需求,合理有效的数据展示也可以快速获取数据信息,且最大限度地发挥数据的价值。
3.目前,传统的数据导出一般以word、excel、html、pdf简单的方式来呈现,导出效果比较单一,相应地,数据所采集方式也比较单一,且对于用于众多用户的ailpha大数据智能安全平台来说,其对数据的敏感度很高,项目中对数据的展示需求多样,传统的数据导出根本无法满足用户的实际需求,同时传统方式进行导出数据需要调用大量重复的api操作,而api调用文档少,而如若需要实现复杂效果,则需要投入非常大的精力来研发,且效果未知,这也给开发带来了很多不确定性。
技术实现要素:
4.本技术实施例提供了一种数据导出方法、系统、计算机设备及可读存储介质,以至少解决相关技术中导出效果单一,数据采集方式单一,无法实现复杂效果展示的问题。
5.第一方面,本技术实施例提供了一种数据导出方法,包括:
6.接收生成报告请求,对所述请求通过接口进行验证并生成报告任务,异步调用所述报告任务;
7.根据生成的所述报告任务加载配置文件和模板文件,解析并执行所述配置文件中用于采集数据的表达式,得到原始数据;
8.根据所述模板文件调用与所述模板文件相关的目标技术,通过所述目标技术将所述原始数据渲染至所述模板文件上,生成报告文件以导出。
9.在其中一些实施例中,所述原始数据包括图片数据,将所述图片数据导出的步骤包括:
10.由freemarker定义html模板,通过phantomjs运行所述html模板生成得到html文件;
11.对所述html文件的页面进行截图,得到截图文件;
12.将所述截图文件插入到所述模板文件中,得到图片文件以导出。
13.在其中一些实施例中,所述模板文件为word模板,基于所述word模板导出的步骤包括:
14.使用poi-tl技术预先定义word模板的框架;
15.根据poi-tl表达式对所述原始数据进行取值;
16.使用poi-tl内置的api将所述原始数据渲染到所述word模板上,得到报告文件以导出。
17.在其中一些实施例中,所述解析并执行所述配置文件中用于采集数据的表达式的步骤包括:
18.使用spring表达式语言解析并执行所述配置文件中的表达式。
19.在其中一些实施例中,所述配置文件中用于采集数据的表达式可进行自定义扩展。
20.第二方面,本技术实施例提供了一种数据导出系统,包括:
21.接收模块,用于接收生成报告请求,对所述请求通过接口进行验证并生成报告任务,异步调用所述报告任务;
22.加载模块,用于根据生成的所述报告任务加载配置文件和模板文件,解析并执行所述配置文件中用于采集数据的表达式,得到原始数据;
23.导出模块,用于根据所述模板文件调用与所述模板文件相关的目标技术,通过所述目标技术将所述原始数据渲染至所述模板文件上,生成报告文件以导出。
24.在其中一些实施例中,所述配置文件中用于采集数据的表达式可进行自定义扩展。
25.在其中一些实施例中,所述模板文件为word模板,所述导出模块具体包括:
26.定义单元,用于使用poi-tl技术预先定义word模板的框架;
27.取值单元,用于根据poi-tl表达式对所述原始数据进行取值;
28.渲染单元,用于使用poi-tl内置的api将所述原始数据渲染到所述word模板上,得到报告文件以导出。
29.第三方面,本技术实施例提供了一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的数据导出方法。
30.第四方面,本技术实施例提供了一种可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述第一方面所述的数据导出方法。
31.相比于相关技术,本技术实施例提供的数据导出方法,通过接口验证生成报告请求并生成报告任务,根据报告任务来加载配置文件和模板文件,解析并执行配置文件中可以自行扩展的用于采集数据的表达式,来收集得到原始数据,再通过目标技术将原始数据渲染到模板文件上,将模板文件和数据进行绑定,生成最终的报告文件以导出,解决了相关技术中导出效果单一,数据采集方式单一,无法实现复杂效果展示的问题,实现使用多种方式对数据进行收集,且可以自定义用于数据收集的方式,同时还支持多种导出文件,数据导出操作也较为简单,在导出过程中,开发人员无需关注文件生成过程,只需配置即可完场导出,且通过配置不同模板文件还支持复杂效果的导出。
32.本技术的一个或多个实施例的细节在以下附图和描述中提出,以使本技术的其他特征、目的和优点更加简明易懂。
附图说明
33.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
34.图1是根据本技术第一实施例的数据导出方法的流程图;
35.图2是根据本技术第二实施例的数据导出系统的结构框图;
36.图3是根据本技术第三实施例的计算机设备的硬件结构示意图。
具体实施方式
37.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。基于本技术提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
38.显而易见地,下面描述中的附图仅仅是本技术的一些示例或实施例,对于本领域的普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图将本技术应用于其他类似情景。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本技术公开的内容相关的本领域的普通技术人员而言,在本技术揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本技术公开的内容不充分。
39.在本技术中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本技术所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
40.除非另作定义,本技术所涉及的技术术语或者科学术语应当为本技术所属技术领域内具有一般技能的人士所理解的通常意义。本技术所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本技术所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本技术所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本技术所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本技术所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
41.spring表达式语言(spring expression language,简称spel)是一个支持查询和操作运行时对象导航图功能的强大的表达式语言。它的语法类似于传统el,但提供额外的功能,最出色的就是函数调用和简单字符串的模板函数。表达式语言支持文字表达式、布尔和关系运算符、正则表达式、类表达式、访问properties,arrays,lists,maps、方法调用、调用构造函数、用户定义的函数、关系运算符、集合投影、集合筛选、模板表达式等。
42.poi-tl(poi template language)是一个基于apache poi的word模板引擎,在文档的任何地方做任何事情(do anything anywhere)是poi-tl的特点。
43.freemarker template language(ftl)是一款模板引擎:即一种基于模板和要改
变的数据,并用来生成输出文本(html网页,电子邮件,配置文件,源代码等)的通用工具,它不是面向最终用户的,而是一个java类库,是一款程序员可以嵌入他们所开发产品的组件。
44.phantomjs是一个基于webkit的javascript api,它使用qtwebkit作为它核心浏览器的功能,使用webkit来编译解释执行javascript代码,在webkit浏览器上做的任何事情,它都能做到,可以理解的,它不仅是个隐形的浏览器,提供了诸如css选择器、支持web标准、dom操作、json、html5、canvas、svg等,同时也提供了处理文件i/o的操作,使你可以向操作系统读写文件等。phantomjs的用处可谓非常广泛,诸如网络监测、网页截屏、无需浏览器的web测试、页面访问自动化等。
45.本技术第一实施例提供了一种数据导出方法。图1是根据本技术实施例的数据导出方法的流程图,如图1所示,该流程包括如下步骤:
46.步骤s101,接收生成报告请求,对所述请求通过接口进行验证并生成报告任务,异步调用所述报告任务;
47.其中,异步调用是一个可以无需等待被调用函数的返回值就让操作继续进行的方法,在计算机中有些处理比较耗时,调用这种处理代码时,调用方如果站在那里苦苦等待,会严重影响程序性能,而借助异步调用则可以把上述问题轻松化解,即把整个初始化处理放进一个单独线程,主线程启动此线程后接着往下走,让主窗口瞬间显示出来,可以理解的,初始化处理可以在背后自动完成。
48.步骤s102,根据生成的所述报告任务加载配置文件和模板文件,解析并执行所述配置文件中用于采集数据的表达式,得到原始数据;
49.其中,所述配置文件是定义数据收集方式的json文件,只需要通过数据收集接口定义json格式就能实现自定义的数据收集方式,可以理解的,json加载工具将所述配置文件和所述模板文件加载至计算机内存中,再利用json文件通过type区分不同的数据收集方式,解析所述配置文件中对应的spel表达式并调用相应的java代码进行数据收集,具体代码如下:
50.[0051][0052]
需要说明的是,字段name用于取值使用,字段type用于定义数据收集方式,字段methodname、url、template这三者是与type对应的框架中定义用于解析对应的spel表达式,并可以自定义扩展,可以理解的,以上所解释的字段均为必须存在的。而在代码中其他的字段是根据业务场景进行自定义的字段,可通过name.{$field}的方式取值。
[0053]
步骤s103,根据所述模板文件调用与所述模板文件相关的目标技术,通过所述目标技术将所述原始数据渲染至所述模板文件上,生成报告文件以导出。
[0054]
其中,不同的所述模板文件调用不同的所述目标技术,所述目标技术包括poi-tl、freemarker、phantomjs等。
[0055]
通过上述步骤,所述接口验证接收到的所述生成报告请求,并生成所述报告任务,根据所述报告任务来加载所述配置文件和所述模板文件,解析并执行所述配置文件中可以自行扩展的用于采集数据的表达式,以此来收集得到所述原始数据,再通过所述目标技术将所述原始数据渲染到所述模板文件上,将所述模板文件和所述原始数据进行绑定,生成最终的所述报告文件以导出,解决了相关技术中导出效果单一,数据采集方式单一,无法实现复杂效果展示的问题,实现使用多种方式对数据进行收集,且可以自定义用于数据收集的方式,同时还支持多种导出文件,数据导出操作也较为简单,在导出过程中,开发人员无需关注文件生成过程,只需配置即可完场导出,且通过配置不同模板文件还支持复杂效果的导出。
[0056]
在其中一些实施例中,所述解析并执行所述配置文件中用于采集数据的表达式的步骤包括:
[0057]
使用spring表达式语言解析并执行所述配置文件中的表达式。
[0058]
其中,在本实施例中,spring表达式语言(简称spel)是所述配置文件的关键,所述配置文件用来定义数据采集方式,通过自定义的json文件(即所述配置文件)来定义数据采集途径,使用spel来解析json文件中用来采集数据的表达式并执行,以得到所述原始数据。
[0059]
需要说明的是,数据收集分为普通数据收集和图片的生成,普通数据收集包括http接口、method(调用方法)、statics(静态数据)、mysql(数据库查询)、es
(elasticsearch查询)等数据的收集。图片的生成的具体方式则是自定义html模版文件,在收集完数据后使用phantomjs生成html文件并进行网页截图最终输出图片。数据收集方式支持根据实际情况自定义,只需要实现数据收集接口定义json格式就能实现自定义的数据收集方式,以支持快速扩展。
[0060]
在其中一些实施例中,所述配置文件中用于采集数据的表达式可进行自定义扩展。
[0061]
在其中一些实施例中,所述原始数据包括图片数据,将所述图片数据导出的步骤包括:
[0062]
由freemarker定义html模板,通过phantomjs运行所述html模板生成得到html文件;
[0063]
其中,在本实施例中,freemarker是用来定义所述html模板的技术方案,由于freemarker数据绑定简单方便,同时又内置丰富的函数可供开发人员使用,以此使用freemarker可以实现几乎所有的html效果,实际操作则只需要传入数据即可。
[0064]
对所述html文件的页面进行截图,得到截图文件;
[0065]
将所述截图文件插入到所述模板文件中,得到图片文件以导出。
[0066]
其中,phantomjs是生成各种复杂数据展示图表、效果的技术解决方案。由freemarker定义所述html模板,phantomjs内置qtwebkit核心浏览器的功能可以运行定义好的所述html模板以生成所述html文件。之后使用phantomjs支持的网页截屏方案可以把生成的页面进行截图,并插入到想要插入的所述模板文件中,以此实现各种数据展示效果的导出。
[0067]
在其中一些实施例中,所述模板文件为word模板,基于所述word模板导出的步骤包括:
[0068]
使用poi-tl技术预先定义word模板的框架;
[0069]
根据poi-tl表达式对所述原始数据进行取值;
[0070]
使用poi-tl内置的api将所述原始数据渲染到所述word模板上,得到报告文件以导出。
[0071]
其中,在本实施例中,poi-tl是word模板文件的解决方案,poi-tl支持文本、图片、列表、图表、if condition判断等等标签。使用poi-tl提供的标签我们可以实现word页面的任何效果,我们只需要定义标签、传入绑定数据就能做到word生成的各种复杂效果,可以理解的,将在数据收集阶段收集到的所述原始数据根据poi-tl表达式进行取值,同时使用poi-tl内置判断、循环、插入图片、自动生产章节信息等等api对所述word模板进行渲染,使所述原始数据与所述word模板进行绑定,生成所述报告文件以导出。
[0072]
需要说明的是,在上述流程中或者附图的流程图中示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0073]
本技术第二实施例还提供了一种数据导出系统,该系统用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的系统较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
[0074]
图2是根据本技术第二实施例的数据导出系统的结构框图,如图2所示,该系统包括:
[0075]
接收模块10,用于接收生成报告请求,对所述请求通过接口进行验证并生成报告任务,异步调用所述报告任务;
[0076]
加载模块20,用于根据生成的所述报告任务加载配置文件和模板文件,解析并执行所述配置文件中用于采集数据的表达式,得到原始数据;
[0077]
其中,所述配置文件中用于采集数据的表达式可进行自定义扩展。
[0078]
导出模块30,用于根据所述模板文件调用与所述模板文件相关的目标技术,通过所述目标技术将所述原始数据渲染至所述模板文件上,生成报告文件以导出。
[0079]
在本实施例中,所述接口验证接收到的所述生成报告请求,并生成所述报告任务,根据所述报告任务来加载所述配置文件和所述模板文件,解析并执行所述配置文件中可以自行扩展的用于采集数据的表达式,以此来收集得到所述原始数据,再通过所述目标技术将所述原始数据渲染到所述模板文件上,将所述模板文件和所述原始数据进行绑定,生成最终的所述报告文件以导出,解决了相关技术中导出效果单一,数据采集方式单一,无法实现复杂效果展示的问题,实现使用多种方式对数据进行收集,且可以自定义用于数据收集的方式,同时还支持多种导出文件,数据导出操作也较为简单,在导出过程中,开发人员无需关注文件生成过程,只需配置即可完场导出,且通过配置不同模板文件还支持复杂效果的导出。
[0080]
在其中一些实施例中,所述模板文件为word模板,所述导出模块30具体包括:
[0081]
定义单元,用于使用poi-tl技术预先定义word模板的框架;
[0082]
取值单元,用于根据poi-tl表达式对所述原始数据进行取值;
[0083]
渲染单元,用于使用poi-tl内置的api将所述原始数据渲染到所述word模板上,得到报告文件以导出。
[0084]
其中,将在数据收集阶段收集到的所述原始数据根据poi-tl表达式进行取值,同时使用poi-tl内置判断、循环、插入图片、自动生产章节信息等等api对所述word模板进行渲染,使所述原始数据与所述word模板进行绑定,生成所述报告文件以导出。
[0085]
在其中一些实施例中,所述原始数据包括图片数据,所述导出模块30包括第一导出单元,所述第一导出单元包括:
[0086]
生成子单元,用于由freemarker定义html模板,通过phantomjs运行所述html模板生成得到html文件;
[0087]
截图子单元,用于对所述html文件的页面进行截图,得到截图文件;
[0088]
第一导出子单元,用于将所述截图文件插入到所述模板文件中,得到图片文件以导出。
[0089]
其中,phantomjs是生成各种复杂数据展示图表、效果的技术解决方案。由freemarker定义所述html模板,phantomjs内置qtwebkit核心浏览器的功能可以运行定义好的所述html模板以生成所述html文件。之后使用phantomjs支持的网页截屏方案可以把生成的页面进行截图,并插入到想要插入的所述模板文件中,以此实现各种数据展示效果的导出。
[0090]
在其中一些实施例中,所述加载模块还用于:
[0091]
使用spring表达式语言解析并执行所述配置文件中的表达式。
[0092]
其中,spring表达式语言(简称spel)是所述配置文件的关键,所述配置文件用来定义数据采集方式,通过自定义的json文件(即所述配置文件)来定义数据采集途径,使用spel来解析json文件中用来采集数据的表达式并执行,以得到所述原始数据。
[0093]
需要说明的是,数据收集分为普通数据收集和图片的生成,普通数据收集包括http接口、method(调用方法)、statics(静态数据)、mysql(数据库查询)、es(elasticsearch查询)等数据的收集。图片的生成的具体方式则是自定义html模版文件,在收集完数据后使用phantomjs生成html文件并进行网页截图最终输出图片。数据收集方式支持根据实际情况自定义,只需要实现数据收集接口定义json格式就能实现自定义的数据收集方式,以支持快速扩展。
[0094]
需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。
[0095]
另外,结合图1描述的本技术实施例数据导出方法可以由计算机设备来实现。图3为根据本技术实施例的计算机设备的硬件结构示意图。
[0096]
计算机设备可以包括处理器32以及存储有计算机程序指令的存储器33。
[0097]
具体地,上述处理器32可以包括中央处理器(cpu),或者特定集成电路(application specific integrated circuit,简称为asic),或者可以被配置成实施本技术实施例的一个或多个集成电路。
[0098]
其中,存储器33可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器33可包括硬盘驱动器(hard disk drive,简称为hdd)、软盘驱动器、固态驱动器(solid state drive,简称为ssd)、闪存、光盘、磁光盘、磁带或通用串行总线(universal serial bus,简称为usb)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器33可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器33可在数据处理装置的内部或外部。在特定实施例中,存储器33是非易失性(non-volatile)存储器。在特定实施例中,存储器33包括只读存储器(read-only memory,简称为rom)和随机存取存储器(random access memory,简称为ram)。在合适的情况下,该rom可以是掩模编程的rom、可编程rom(programmable read-only memory,简称为prom)、可擦除prom(erasable programmable read-only memory,简称为eprom)、电可擦除prom(electrically erasable programmable read-only memory,简称为eeprom)、电可改写rom(electrically alterable read-only memory,简称为earom)或闪存(flash)或者两个或更多个以上这些的组合。在合适的情况下,该ram可以是静态随机存取存储器(static random-access memory,简称为sram)或动态随机存取存储器(dynamic random access memory,简称为dram),其中,dram可以是快速页模式动态随机存取存储器(fast page mode dynamic random access memory,简称为fpmdram)、扩展数据输出动态随机存取存储器(extended date out dynamic random access memory,简称为edodram)、同步动态随机存取内存(synchronous dynamic random-access memory,简称sdram)等。
[0099]
存储器33可以用来存储或者缓存需要处理和/或通信使用的各种数据文件,以及
处理器32所执行的可能的计算机程序指令。
[0100]
处理器32通过读取并执行存储器33中存储的计算机程序指令,以实现上述实施例中的任意一种数据导出方法。
[0101]
在其中一些实施例中,计算机设备还可包括通信接口34和总线31。其中,如图3所示,处理器32、存储器33、通信接口34通过总线31连接并完成相互间的通信。
[0102]
通信接口34用于实现本技术实施例中各模块、装置、单元和/或设备之间的通信。通信接口34还可以实现与其他部件例如:外接设备、图像/数据采集设备、数据库、外部存储以及图像/数据处理工作站等之间进行数据通信。
[0103]
总线31包括硬件、软件或两者,将计算机设备的部件彼此耦接在一起。总线31包括但不限于以下至少之一:数据总线(data bus)、地址总线(address bus)、控制总线(control bus)、扩展总线(expansion bus)、局部总线(local bus)。举例来说而非限制,总线31可包括图形加速接口(accelerated graphics port,简称为agp)或其他图形总线、增强工业标准架构(extended industry standard architecture,简称为eisa)总线、前端总线(front side bus,简称为fsb)、超传输(hyper transport,简称为ht)互连、工业标准架构(industry standard architecture,简称为isa)总线、无线带宽(infiniband)互连、低引脚数(low pin count,简称为lpc)总线、存储器总线、微信道架构(micro channel architecture,简称为mca)总线、外围组件互连(peripheral component interconnect,简称为pci)总线、pci-express(pci-x)总线、串行高级技术附件(serial advanced technology attachment,简称为sata)总线、视频电子标准协会局部(video electronics standards association local bus,简称为vlb)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线31可包括一个或多个总线。尽管本技术实施例描述展示出了特定的总线,但本技术考虑任何合适的总线或互连。
[0104]
该计算机设备可以基于获取到的计算机程序,执行本技术实施例中的数据导出方法,从而实现结合图1描述的数据导出方法。
[0105]
另外,结合上述实施例中的数据导出方法,本技术实施例可提供一种可读存储介质来实现。该可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种数据导出方法。
[0106]
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0107]
以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
技术特征:
1.一种数据导出方法,其特征在于,包括:接收生成报告请求,对所述请求通过接口进行验证并生成报告任务,异步调用所述报告任务;根据生成的所述报告任务加载配置文件和模板文件,解析并执行所述配置文件中用于采集数据的表达式,得到原始数据;根据所述模板文件调用与所述模板文件相关的目标技术,通过所述目标技术将所述原始数据渲染至所述模板文件上,生成报告文件以导出。2.根据权利要求1所述的数据导出方法,其特征在于,所述原始数据包括图片数据,将所述图片数据导出的步骤包括:由freemarker定义html模板,通过phantomjs运行所述html模板生成得到html文件;对所述html文件的页面进行截图,得到截图文件;将所述截图文件插入到所述模板文件中,得到图片文件以导出。3.根据权利要求1所述的数据导出方法,其特征在于,所述模板文件为word模板,基于所述word模板导出的步骤包括:使用poi-tl技术预先定义word模板的框架;根据poi-tl表达式对所述原始数据进行取值;使用poi-tl内置的api将所述原始数据渲染到所述word模板上,得到报告文件以导出。4.根据权利要求1所述的数据导出方法,其特征在于,所述解析并执行所述配置文件中用于采集数据的表达式的步骤包括:使用spring表达式语言解析并执行所述配置文件中的表达式。5.根据权利要求1所述的数据导出方法,其特征在于,所述配置文件中用于采集数据的表达式可进行自定义扩展。6.一种数据导出系统,其特征在于,包括:接收模块,用于接收生成报告请求,对所述请求通过接口进行验证并生成报告任务,异步调用所述报告任务;加载模块,用于根据生成的所述报告任务加载配置文件和模板文件,解析并执行所述配置文件中用于采集数据的表达式,得到原始数据;导出模块,用于根据所述模板文件调用与所述模板文件相关的目标技术,通过所述目标技术将所述原始数据渲染至所述模板文件上,生成报告文件以导出。7.根据权利要求6所述的数据导出系统,其特征在在于,所述配置文件中用于采集数据的表达式可进行自定义扩展。8.根据权利要求6所述的数据导出系统,其特征在于,所述模板文件为word模板,所述导出模块具体包括:定义单元,用于使用poi-tl技术预先定义word模板的框架;取值单元,用于根据poi-tl表达式对所述原始数据进行取值;渲染单元,用于使用poi-tl内置的api将所述原始数据渲染到所述word模板上,得到报告文件以导出。9.一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至
5中任一项所述的数据导出方法。10.一种可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至5中任一项所述的数据导出方法。
技术总结
本申请涉及一种数据导出方法、系统、计算机设备及可读存储介质,其中,该数据导出方法包括:接收生成报告请求,对请求通过接口进行验证并生成报告任务,异步调用报告任务;根据生成的报告任务加载配置文件和模板文件,解析并执行配置文件中的表达式,得到原始数据;根据模板文件调用相关的目标技术,通过目标技术将原始数据渲染至模板文件上,生成报告文件以导出。通过本申请,解决了导出效果单一,数据采集方式单一,无法实现复杂效果展示的问题,实现了可以使用多种方式对数据进行收集,支持多种导出文件,通过配置不同模板文件还支持复杂效果的导出,且在导出过程中,开发人员无需关注文件生成过程,只需配置即可完成导出。只需配置即可完成导出。只需配置即可完成导出。
技术研发人员:陈哲文 范渊 刘博
受保护的技术使用者:杭州安恒信息技术股份有限公司
技术研发日:2021.11.26
技术公布日:2022/3/8