电子报表生成方法、装置、计算机设备及存储介质与流程

文档序号:14303493阅读:202来源:国知局
电子报表生成方法、装置、计算机设备及存储介质与流程

本申请涉及计算机技术领域,尤其涉及一种电子报表生成方法、装置、计算机设备及存储介质。



背景技术:

目前,电子报表多是通过专业制作软件工具制作生成,比如jasperreports等,虽然jasperreports等工具比较专业,但是过于庞大,学习成本高,配置繁琐,运行效率低,数据源数据的数据量较大的情况容易产生内存不足或内存异常等性能问题。如果使用poi等框架编码方式生成电子报表,比如为pdf、excel或word等,则需要编写大量代码,对于格式复杂的报表,更是需要花费大量时间编写相关布局代码,这样的代码可能是几百行甚至上千行,同时,对于相同内容但文件格式不同的电子报表,则需要编写多套生成代码,工作量大,不易维护。



技术实现要素:

本申请提供了一种电子报表生成方法、装置、计算机设备及存储介质,以便快速地生成多种格式的电子报表。

第一方面,本申请提供了一种电子报表生成方法,包括:

获取预设布局定义文件,其中所述预设布局定义文件包括数据源配置信息和报表布局信息;

根据所述数据源配置信息获取报表数据,以及根据所述报表布局信息生成报表模板;

解析所述报表布局信息以获取所述报表布局信息中的预设布局组件;

获取用户选择的待生成电子报表的类型信息;

基于所述报表数据,根据所述类型信息选择与所述预设布局组件相对应的应用程序编程接口生成报表组件对象;

将所述报表组件对象填充在所述报表模板中以生成电子报表。

第二方面,本申请提供了一种电子报表生成装置,包括:

文件获取单元,用于获取预设布局定义文件,其中所述预设布局定义文件包括数据源配置信息和报表布局信息;

获取生成单元,用于根据所述数据源配置信息获取报表数据,以及根据所述报表布局信息生成报表模板;

解析获取单元,用于解析所述报表布局信息以获取所述报表布局信息中的预设布局组件;

类型获取单元,用于获取用户选择的待生成电子报表的类型信息;

对象生成单元,用于基于所述报表数据,根据所述类型信息选择与所述预设布局组件相对应的应用程序编程接口生成报表组件对象;

填充生成单元,用于将所述报表组件对象填充在所述报表模板中以生成电子报表。

第三方面,本申请又提供了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现本申请提供的任一项所述的电子报表生成方法。

第四方面,本申请还提供了一种存储介质,其中所述存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行本申请提供的任一项所述的电子报表生成方法。

本申请实施例通过获取预设布局定义文件,其中所述预设布局定义文件包括数据源配置信息和报表布局信息;根据所述数据源配置信息获取报表数据以及根据所述报表布局信息生成报表模板;解析所述报表布局信息以获取所述报表布局信息中的预设布局组件;获取用户选择的待生成电子报表的类型信息;基于所述报表数据,根据所述类型信息选择与所述预设布局组件相对应的应用程序编程接口生成报表组件对象;将所述报表组件对象填充在所述报表模板中以生成电子报表。该方法通过预设布局定义文件建立报表模板,再利用预设布局组件调用报表数据对报表模板进行填充进而生成电子报表,由此为用户提供了快速生成多种格式电子报表的方法,降低了用户的工作量,同时节省了用户的时间。

附图说明

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

图1是本申请一实施例提供的一种电子报表生成方法的示意流程图;

图2是图1中的电子报表生成方法的子步骤示意流程图;

图3是图1中的电子报表生成方法的子步骤示意流程图;

图4是本申请另一实施例提供的一种电子报表生成方法的示意流程图;

图5是本申请一实施例提供的一种电子报表生成装置的示意性框图;

图6是图5中的电子报表生成装置的数据解析单元的示意性框图;

图7是本申请另一实施例提供的一种电子报表生成装置的示意性框图;

图8是本申请一实施例提供的一种计算机设备的示意性框图。

具体实施方式

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

应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。

还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

请参阅图1,图1是本申请一实施例提供的一种电子报表生成方法的示意流程图。该电子报表生成方法可以运行在终端或服务器中,也可以运行在终端和服务器的交互组成的系统中,其中该终端包括台式电脑、手提电脑、平板电脑、个人数字助理(pda)或智能手机等;该服务器可以是独立的服务器,也可以是多个服务器组成的服务器集群。如图1所示,该方法包括步骤s101~s106。

s101、获取预设布局定义文件。

在本实施例中,所述预设布局定义文件包括数据源配置信息和报表布局信息。其中,所述数据源配置信息包括数据源名称、数据源类型以及数据源地址信息等,数据源地址信息具体可为统一资源定位符(uniformresourcelocator,url)地址等。所述报表布局信息包括报表参数和预设布局组件,所述报表参数包括报表尺寸信息和样式信息等,所述预设布局组件包括常量组件、变量组件和数据源组件等。数据源类型包括json(javascriptobjectnotation,对象标记)、xml(extensiblemarkuplanguage,可扩展标记语言)或sql(structuredquerylanguage、结构化查询语言)等类型。

其中,所述预设布局定义文件也可具有不同的格式,比如可采用为xml格式文件,即采用xml语言定义,该语言类似于超文本标记语言。

具体地,在获取预设布局定义文件之前,还包括:根据用户触发的预设布局指令,向所述用户展示预设布局模板使得用户根据所需按照所述预设布局模板编辑定义生成预设布局定义文件。获取所述预设布局定义文件是为了解析该预设布局定义文件以获取相关的数据源配置信息和报表布局信息。

s102、根据所述数据源配置信息获取报表数据,以及根据所述报表布局信息生成报表模板。

在本实施例中,所述数据源配置信息为报表相关数据提供来源,支持多种数据读取协议,包括且不限于http(hypertexttransferprotocol、超文本传输协议)、ftp(filetransferprotocol、文件传输协议)或jdbc(javadatabaseconnectivity、数据库连接)等协议。基于这些协议,根据数据源配置信息中的数据源地址信息从数据库、本地磁盘或远程服务读取相应的数据流以获取报表数据。同时支持多种数据格式,包括且不限于xml或json等。

具体地,所述数据源配置信息包括统一资源定位符和数据类型信息;相对应地,如图2所示,所述根据所述数据源配置信息获取报表数据,包括:步骤s102a至s102c。

s102a、根据所述统一资源定位符信息获取报表数据源;s102b、根据所述数据类型信息确定解析规则;s102c、根据确定的解析规则解析所述报表数据源以获取报表数据。具体地,url地址比如为http://www.example.com/getdata.do,该url地址用于调取数据源;该数据源对应的数据类型信息包括json、xml或sql格式,不同的数据类型对应着不同的解析规则,因此需要根据所述数据类型信息确定解析规则,比如json格式的数据类型对应着json解析规则,利用该json解析规则解析报表数据源以得到报表数据。

此外,在根据确定的解析规则解析所述报表数据源以获取报表数据时,还可监控所述根据确定的解析规则解析所述报表数据源以获取报表数据对应的解析过程;并判断在所述解析过程中是否发生触发预设报警条件的报警事件;若发生触发所述预设报警条件的报警事件,将所述报警事件对应的数据进行标记。其中发生触发预设报警条件的报警事件,该预设报警条件可以为预设阈值或者其他判断条件,该预设报警条件可由用户进行设定。当报表数据中的相应数据值超过该预设阈值时,判断该数据值为触发预设报警事件,将所述报警事件对应的数据进行标记,比如采用红色字体标记,或者采用特殊符号进行标记,标记后的数据用于在电子报表中显示以提示用户相关数据存在异常。

其中,根据报表布局信息包括电子报表的样式和尺寸等信息生成一个报表模板,该报表模板类似报表框架包括电子报表的长宽和显示样式等,以及该报表模板的不同位置处对应着不同的预设布局组件,该预设布局组件用于填充相关数据信息。

s103、解析所述报表布局信息以获取所述报表布局信息中的预设布局组件。

在本实施例中,解析所述报表布局信息目的是为了获取所述报表布局信息中的所有预设布局组件,利用这些预设布局组件引用所述报表数据中的相关数据,通过预设布局组件是用于对报表模板进行数据填充。该预设布局组件包括常量组件、变量组件和数据源组件等。

s104、获取用户选择的待生成电子报表的类型信息。

在本实施例中,该待生成报表的类型信息包括pdf、xml、txt、excel或word等,具体为用户需要的电子报表类型信息,比如用户想要得到pdf格式的电子报表,则用户会选择待生成报表的类型信息为pdf格式,因此获取用户选择的待生成电子报表的类型信息为pdf。因为不同的类型信息需要在apachepoi中调用不同类型的的api(applicationprogramminginterface,应用程序编程接口)。其中,apachepoi是用java语言编写的免费开源的跨平台的javaapi接口,apachepoi提供api接口用于文档读和写的功能,其中不同的待生成电子报表的类型不同,也对应着不同的api接口,因此需要先确定待生成报表的类型信息。

在一实施例中,也可以不采用apachepoi,而采用其他类型的api接口提供工具,或者自己编写相关的api接口工具。

s105、基于所述报表数据,根据所述类型信息选择与所述预设布局组件相对应的应用程序编程接口生成报表组件对象。

在本实施例中,相同的预设布局组件在用户选择的类型信息不同时,其对应的应用程序编程接口也不相同,比如pdf和excel类型信息的同一个常量组件对应的应用程序编程接口并不相同,因此在确定待生成报表的类型信息后,根据所述类型信息选择与所述预设布局组件相对应的应用程序编程接口生成报表组件对象。当然,不同的预设布局组件在同一类型信息中对应的应用程序编程接口也不相同。具体地,如图3所示,即步骤s105包括步骤s105a~s105b。

s105a、确定所述类型信息对应的应用程序编程接口类别;s105b、根据确定的应用程序编程接口类别确定所述预设布局组件对应的应用程序编程接口;s105c、根据所述预设布局组件对应的应用程序编程接口调用所述报表数据中的数据信息以生产报表组件对象。

具体地,确定所述类型信息对应的应用程序编程接口类别,具体是在apachepoi中确定用户选择的类型信息对应的应用程序编程接口类别,apachepoi中提供多种文件格式的api(applicationprogramminginterface,应用程序编程接口)接口类型,在确定api接口类型后,通过预设布局组件调用确定好的应用程序编程接口循环所述报表数据以生成报表组件对象,该报表组件对象封装这相应的数据以及api接口。其中,不同的预设布局组件也调用不同的api接口,或者相同的预设布局组件对应着不同的类型信息也需调用不同的api接口。比如,常量组件用于调用apachepoi中的相关api获取的报表数据中的常量值以生成相应的报表组件对象;变量组件用于调用apachepoi中的相关api获取报表数据中的变量值以生成相应的报表组件对象;数据源组件用于循环报表数据且调用apachepoi的相关api生成相应的报表组件对象。

s106、将所述报表组件对象填充在所述报表模板中以生成电子报表。

在本实施例中,具体地是根据报表组件名称在报表模板中所处的位置将所述报表组件对象填充在所述报表模板中以生成电子报表。由于该报表模板是由报表布局信息生成的,因此该报表模板中在相应位置处包括相应的预设布局组件,该预设布局组件比如为为常量组件、变量组件或数据源组件等,利用该常量组件、变量组件或数据源组件将与其对应的报表组件对象填充在该报表模板中以生成相应的电子报表。

上述电子报表生成方法通过获取预设布局定义文件,利用预设布局定义文件中的数据源配置信息获取报表数据以及利用报表布局信息生成报表模板;根据报表布局信息中的预设布局组件选择相应的应用程序编程接口引用数据源的中的报表数据进而生成电子报表。通过该方法生成电子报表,对于相同报表多种文件格式,只需编写一套预设布局定义文件即可完成,因此节省了大量的开发时间,真正做到快速开发、易维护。同时让开发人员无需了解pdf、word和excel等生成相关的开发,更加集中数据业务逻辑,进而提高了开发人员的工作效率。

请参阅图4,图4是本申请另一实施例提供的一种电子报表生成方法的示意流程图。该电子报表生成方法可以运行在终端或服务器中,也可以运行在终端和服务器的交互组成的系统中,其中该终端包括台式电脑、手提电脑、平板电脑或智能手机等;该服务器可以是独立的服务器,也可以是多个服务器组成的服务器集群。如图4所示,该电子报表方法包括步骤s201~s210。

s201、获取预设布局定义文件。

在本实施例中,所述预设布局定义文件包括数据源配置信息和报表布局信息。其中,所述数据源配置信息包括数据源名称、数据源类型以及数据源地址信息等,数据源地址信息具体可为统一资源定位符(uniformresourcelocator,url)地址等。所述报表布局信息包括报表参数和预设布局组件,所述报表参数包括报表尺寸信息和样式信息等,所述预设布局组件包括常量组件、变量组件和数据源组件等。

s202、根据所述数据源配置信息获取所述数据源配置信息对应的报表数据的文件信息。

在本实施例中,所述文件信息包括报表文件大小,但所述文件信息不仅仅包括报表文件大小等信息。比如,还可包括数据源类型,该数据源类型比如为xml或json等。该报表文件大小即是报表数据的大小,比如可以几mb或几gb等。

s203、判断所述报表文件大小是否大于预设阈值。

在本实施例中,该预设阈值是用于判断报表数据的大小的预设条件,若所报表数据的报表文件大小超过所述预设阈值,则判定所述报表数据的文件较大。若所述数据源数据的文件大小大于所述预设阈值,则执行步骤s204;若所述数据源数据的文件大小不大于所述预设阈值,则执行步骤s205。

s204、根据预设加载规则加载所述数据源数据以获取报表数据。

在本实施例中,若所述数据源数据的文件大小大于所述预设阈值,根据预设加载规则加载所述数据源数据以获取报表数据。其中,该预设加载规则包括分批加载规则,即是对该数据源数据进行有效地分割后分批加载。利用分批加载的方式,可有效防止一次加载导致内存不足,影响系统运行效率甚至导致系统崩溃。

s205、根据所述数据源配置信息直接读取数据源数据以获取报表数据。

在本实施例中,所述数据源配置信息为报表相关数据提供来源,具体根据所述url地址信息中的数据源配置信息从数据库、本地磁盘或远程服务读取相应的数据流以获取报表数据。

此外,所述文件信息包括数据源类型,在获取报表数据之前,还要判断该电子报表生成方法是否能支持该数据源类型。不管是在执行步骤s204还是步骤s205之前,都需要对数据源类型进行判断。

具体地,判断所述数据源配置信息对应的数据源类型是否为预设数据类型;若所述数据源配置信息对应的数据源类型不是预设数据类型,发送数据源加载提示信息和预设数据源加载协议以提示用户根据所述预设数据源加载协议通过数据源加载扩展接口功能实现获取报表数据。

其中,预设数据类型用于判断该电子报表生成方法是否支持的数据源类型,比如该预设数据类型包括json类型、xml类型或sql类型,若所述数据源配置信息对应的数据源类型为所述预设数据类型其中一种类型,则表明支持该数据源类型;若所述数据源配置信息对应的数据源类型不为所述预设数据类型中所涉及的类型,则表明不支持该数据源类型。对应不支持的数据源,通过发送数据源加载提示信息和预设数据源加载协议的方式提供了数据源加载扩展接口,开发者可以根据预设数据源加载协议很容易实现自己的数据源接口,以实现一些不常用的数据格式的加载。

s206、根据所述报表布局信息生成报表模板。

在本实施例中,根据报表布局信息包括电子报表的样式和尺寸等信息生成一个报表模板,该报表模板类似报表框架包括电子报表的长宽和显示样式等,以及该报表模板的不同位置处对应着不同的预设布局组件,该预设布局组件用于填充相关数据信息。

s207、解析所述报表布局信息以获取所述报表布局信息中的预设布局组件。

在本实施例中,解析所述报表布局信息目的是为了获取所述报表布局信息中的所有预设布局组件,利用这些预设布局组件引用所述报表数据中的相关数据,通过预设布局组件是用于对报表模板进行数据填充。该预设布局组件包括常量组件、变量组件和数据源组件等。

s208、获取用户选择的待生成电子报表的类型信息。

在本实施例中,具体为用户需要的电子报表类型信息,比如用户想要得到pdf格式的电子报表,则用户会选择待生成报表的类型信息为pdf格式,因此获取用户选择的待生成电子报表的类型信息为pdf。因为不同的待生成电子报表的类型不同,也对应着不同的api接口,因此需要先确定待生成报表的类型信息。

s209、基于所述报表数据,根据所述类型信息选择与所述预设布局组件相对应的应用程序编程接口生成报表组件对象。

在本实施例中,预设布局组件在不同的类型信息对应的应用程序编程接口不同,比如pdf和excel对应的应用程序编程接口均不相同,因此在确定待生成报表的类型信息后,根据所述类型信息选择与所述预设布局组件相对应的应用程序编程接口生成报表组件对象。在确定api接口类型后,通过预设布局组件调用确定好的应用程序编程接口循环所述报表数据以生成报表组件对象,该报表组件对象封装这相应的数据以及api接口。

s210、将所述报表组件对象填充在所述报表模板中以生成电子报表。

在本实施例中,具体地是根据报表组件名称在报表模板中所处的位置将所述报表组件对象填充在所述报表模板中以生成电子报表。由于该报表模板是由报表布局信息生成的,因此该报表模板中在相应位置处包括相应的预设布局组件,该预设布局组件比如为为常量组件、变量组件或数据源组件等,利用该常量组件、变量组件或数据源组件将与其对应的报表组件对象填充在该报表模板中以生成相应的电子报表。

上述电子报表生成方法通过获取预设布局定义文件,利用预设布局定义文件中的数据源配置信息获取报表数据以及利用报表布局信息生成报表模板;根据报表布局信息中的预设布局组件选择相应的应用程序编程接口引用数据源的中的报表数据进而生成电子报表。该方法生成电子报表方法,真正做到快速开发、易维护。同时还提供了分批加载数据和数据源加载扩展接口等功能,进而提高了开发人员的工作效率。

请参阅图5,图5是本申请实施例提供的一种电子报表生成装置的示意性框图。该电子报表生成装置400可以安装于服务器或终端中。如图5所示,该电子报表生成装置400包括:文件获取单元401、获取生成单元402、解析获取单元403、类型获取单元404、对象生成单元405和填充生成单元406。

文件获取单元401,用于获取预设布局定义文件。

其中,所述预设布局定义文件包括数据源配置信息和报表布局信息。所述数据源配置信息包括数据源名称、数据源类型以及数据源地址信息等,数据源地址信息具体可为统一资源定位符地址等。所述报表布局信息包括报表参数和预设布局组件,所述报表参数包括报表尺寸信息和样式信息等,所述预设布局组件包括常量组件、变量组件和数据源组件等。数据源类型包括json、xml或sql等类型。

具体地,在获取预设布局定义文件之前,还用于:根据用户触发的预设布局指令,向所述用户展示预设布局模板使得用户根据所需按照所述预设布局模板编辑定义生成预设布局定义文件。获取所述预设布局定义文件是为了解析该预设布局定义文件以获取相关的数据源配置信息和报表布局信息。

获取生成单元402,用于根据所述数据源配置信息获取报表数据,以及根据所述报表布局信息生成报表模板。

其中,所述数据源配置信息为报表相关数据提供来源,支持多种数据读取协议,包括且不限于http、ftp或jdbc(等协议。基于这些协议,根据数据源配置信息中的数据源地址信息从数据库、本地磁盘或远程服务读取相应的数据流以获取报表数据。同时支持多种数据格式,包括且不限于xml或json等。

具体地,获取生成单元402包括:数据源获取子单元4021、规则确定子单元4022和数据解析子单元4023。

数据源获取子单元4021,用于根据所述统一资源定位符信息获取报表数据源;规则确定子单元4022,用于根据所述数据类型信息确定解析规则;数据解析子单元4023,用于根据确定的解析规则解析所述报表数据源以获取报表数据。具体地,url地址比如为http://www.example.com/getdata.do,该url地址用于调取数据源;该数据源对应的数据类型信息包括json、xml或sql格式,不同的数据类型对应着不同的解析规则,因此需要根据所述数据类型信息确定解析规则,比如json格式的数据类型对应着json解析规则,利用该json解析规则解析报表数据源以得到报表数据。

此外,如图6所示,该获取生成单元402还包括:监控获取子单元4024、事件判断子单元4025和数据标记子单元4026。监控获取子单元4024用于监控所述根据确定的解析规则解析所述报表数据源以获取报表数据对应的解析过程;事件判断子单元4025用于判断在所述解析过程中是否发生触发预设报警条件的报警事件;数据标记子单元4026,用于若发生触发所述预设报警条件的报警事件,将所述报警事件对应的数据进行标记。其中发生触发预设报警条件的报警事件,该预设报警条件可以为预设阈值或者其他判断条件,该预设报警条件可由用户进行设定。当报表数据中的相应数据值超过该预设阈值时,判断该数据值为触发预设报警事件,将所述报警事件对应的数据进行标记,比如采用红色字体标记,或者采用特殊符号进行标记,标记后的数据用于在电子报表中显示以提示用户相关数据存在异常。

解析获取单元403,用于解析所述报表布局信息以获取所述报表布局信息中的预设布局组件。

其中,解析所述报表布局信息目的是为了获取所述报表布局信息中的所有预设布局组件,利用这些预设布局组件引用所述报表数据中的相关数据,通过预设布局组件是用于对报表模板进行数据填充。该预设布局组件包括常量组件、变量组件和数据源组件等。

类型获取单元404,用于获取用户选择的待生成电子报表的类型信息。

其中,该待生成报表的类型信息包括pdf、xml、txt、excel或word等,具体为用户需要的电子报表类型信息,比如用户想要得到pdf格式的电子报表,则用户会选择待生成报表的类型信息为pdf格式,因此获取用户选择的待生成电子报表的类型信息为pdf。因为不同的类型信息需要在apachepoi中调用不同类型的的api接口。其中,apachepoi是用java语言编写的免费开源的跨平台的javaapi接口,apachepoi提供api接口用于文档读和写的功能,其中不同的待生成电子报表的类型不同,也对应着不同的api接口,因此需要先确定待生成报表的类型信息。

对象生成单元405,用于基于所述报表数据,根据所述类型信息选择与所述预设布局组件相对应的应用程序编程接口生成报表组件对象。

其中,相同的预设布局组件在用户选择的类型信息不同时,其对应的应用程序编程接口也不相同,比如pdf和excel类型信息的同一个常量组件对应的应用程序编程接口并不相同,因此在确定待生成报表的类型信息后,根据所述类型信息选择与所述预设布局组件相对应的应用程序编程接口生成报表组件对象。

具体地,对象生成单元405包括类别确定子单元405a、接口确定子单元405b和对象生成子单元405c。

类别确定子单元405a,用于确定所述类型信息对应的应用程序编程接口类别;接口确定子单元405b,用于根据确定的应用程序编程接口类别确定所述预设布局组件对应的应用程序编程接口;对象生成子单元405c,用于根据所述预设布局组件对应的应用程序编程接口调用所述报表数据中的数据信息以生产报表组件对象。

具体地,是在apachepoi中确定用户选择的类型信息对应的应用程序编程接口类别,apachepoi中提供多种文件格式的api(applicationprogramminginterface,应用程序编程接口)接口类型,在确定api接口类型后,通过预设布局组件调用确定好的应用程序编程接口循环所述报表数据以生成报表组件对象,该报表组件对象封装这相应的数据以及api接口。其中,不同的预设布局组件也调用不同的api接口,或者相同的预设布局组件对应着不同的类型信息也需调用不同的api接口。比如,常量组件用于调用apachepoi中的相关api获取的报表数据中的常量值以生成相应的报表组件对象;变量组件用于调用apachepoi中的相关api获取报表数据中的变量值以生成相应的报表组件对象;数据源组件用于循环报表数据且调用apachepoi的相关api生成相应的报表组件对象。

填充生成单元406,用于将所述报表组件对象填充在所述报表模板中以生成电子报表。

其中,具体地是根据报表组件名称在报表模板中所处的位置将所述报表组件对象填充在所述报表模板中以生成电子报表。由于该报表模板是由报表布局信息生成的,因此该报表模板中在相应位置处包括相应的预设布局组件,该预设布局组件比如为为常量组件、变量组件或数据源组件等,利用该常量组件、变量组件或数据源组件将与其对应的报表组件对象填充在该报表模板中以生成相应的电子报表。

请参阅图7,图7是本申请实施例提供的一种电子报表生成装置的示意性框图。该电子报表生成装置500可以安装于服务器或终端中。如图7所示,该电子报表生成装置500包括:文件获取单元501、信息获取单元502、文件判断单元503、第一加载单元504、第二加载单元505、模板生成单元506、解析获取单元507、类型获取单元508、对象生成单元509和填充生成单元510。

文件获取单元501,用于获取预设布局定义文件。

其中,所述预设布局定义文件包括数据源配置信息和报表布局信息。其中,所述数据源配置信息包括数据源名称、数据源类型以及数据源地址信息等,数据源地址信息具体可为统一资源定位符等。所述报表布局信息包括报表参数和预设布局组件,所述报表参数包括报表尺寸信息和样式信息等,所述预设布局组件包括常量组件、变量组件和数据源组件等。

信息获取单元502,用于根据所述数据源配置信息获取所述数据源配置信息对应的报表数据的文件信息。

其中,所述文件信息包括报表文件大小,但所述文件信息不仅仅包括报表文件大小等信息。比如,还可包括数据源类型,该数据源类型比如为xml或json等。该报表文件大小即是报表数据的大小,比如可以几mb或几gb等。

文件判断单元503,用于判断所述报表文件大小是否大于预设阈值。

其中,该预设阈值是用于判断报表数据的大小的预设条件,若所报表数据的报表文件大小超过所述预设阈值,则判定所述报表数据的文件较大。若所述数据源数据的文件大小大于所述预设阈值,则调用第一加载单元504;若所述数据源数据的文件大小不大于所述预设阈值,则调用第二加载单元505。

第一加载单元504,用于根据预设加载规则加载所述数据源数据以获取报表数据。

其中,若所述数据源数据的文件大小大于所述预设阈值,根据预设加载规则加载所述数据源数据以获取报表数据。其中,该预设加载规则包括分批加载规则,即是对该数据源数据进行有效地分割后分批加载。利用分批加载的方式,可有效防止一次加载导致内存不足,影响系统运行效率甚至导致系统崩溃。

第二加载单元505,用于根据所述数据源配置信息直接读取数据源数据以获取报表数据。

其中,所述数据源配置信息为报表相关数据提供来源,具体根据所述url地址信息中的数据源配置信息从数据库、本地磁盘或远程服务读取相应的数据流以获取报表数据。

模板生成单元506,用于根据所述报表布局信息生成报表模板。

其中,根据报表布局信息包括电子报表的样式和尺寸等信息生成一个报表模板,该报表模板类似报表框架包括电子报表的长宽和显示样式等,以及该报表模板的不同位置处对应着不同的预设布局组件,该预设布局组件用于填充相关数据信息。

解析获取单元507,用于解析所述报表布局信息以获取所述报表布局信息中的预设布局组件。

其中,解析所述报表布局信息目的是为了获取所述报表布局信息中的所有预设布局组件,利用这些预设布局组件引用所述报表数据中的相关数据,通过预设布局组件是用于对报表模板进行数据填充。该预设布局组件包括常量组件、变量组件和数据源组件等。

类型获取单元508,用于获取用户选择的待生成电子报表的类型信息。

其中,具体为用户需要的电子报表类型信息,比如用户想要得到pdf格式的电子报表,则用户会选择待生成报表的类型信息为pdf格式,因此获取用户选择的待生成电子报表的类型信息为pdf。因为不同的待生成电子报表的类型不同,也对应着不同的api接口,因此需要先确定待生成报表的类型信息。

对象生成单元509,用于基于所述报表数据,根据所述类型信息选择与所述预设布局组件相对应的应用程序编程接口生成报表组件对象。

其中,相同的预设布局组件在用户选择的类型信息不同时,其对应的应用程序编程接口也不相同,比如pdf和excel类型信息的同一个常量组件对应的应用程序编程接口并不相同。在确定api接口类型后,通过预设布局组件调用确定好的应用程序编程接口循环所述报表数据以生成报表组件对象,该报表组件对象封装这相应的数据以及api接口。

填充生成单元510,用于将所述报表组件对象填充在所述报表模板中以生成电子报表。

其中,具体地是根据报表组件名称在报表模板中所处的位置将所述报表组件对象填充在所述报表模板中以生成电子报表。由于该报表模板是由报表布局信息生成的,因此该报表模板中在相应位置处包括相应的预设布局组件,该预设布局组件比如为为常量组件、变量组件或数据源组件等,利用该常量组件、变量组件或数据源组件将与其对应的报表组件对象填充在该报表模板中以生成相应的电子报表。

上述装置可以实现为一种计算机程序的形式,计算机程序可以在如图8所示的计算机设备上运行。

请参阅图8,图8是本申请实施例提供的一种计算机设备的示意性框图。该计算机设备700设备可以是终端或服务器。

参照图8,该计算机设备700包括通过系统总线710连接的处理器720、存储器和网络接口750,其中,存储器可以包括非易失性存储介质730和内存储器740。

该非易失性存储介质730可存储操作系统731和计算机程序732。该计算机程序732被执行时,可使得处理器720执行一种电子报表生成方法。

该处理器720用于提供计算和控制能力,支撑整个计算机设备700的运行。

该内存储器740为非易失性存储介质中的计算机程序的运行提供环境,该计算机程序被处理器720执行时,可使得处理器720执行一种电子报表生成方法。

该网络接口750用于进行网络通信,如发送分配的任务等。本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备700的限定,具体的计算机设备700可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

其中,所述处理器720用于运行存储在存储器中的程序代码,以实现上述实施例提供的电子报表生成方法的步骤。

应当理解,在本申请实施例中,处理器720可以是中央处理单元(centralprocessingunit,cpu),该处理器720还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

本领域技术人员可以理解,图8中示出的计算机设备700结构并不构成对计算机设备700的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

本领域普通技术人员可以理解的是实现上述实施例的电子报表生成方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,程序可存储于一存储介质中,该存储介质为计算机可读存储介质。如本发明实施例中,该程序可存储于计算机系统的存储介质中,并被该计算机系统中的至少一个处理器执行,以实现包括如上述各方法的实施例的流程步骤。

该计算机可读存储介质可以是磁碟、光盘、u盘、移动硬盘、随机存储记忆体(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的。例如,各个单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。

本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。

本申请实施例装置中的单元可以根据实际需要进行合并、划分和删减。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1