一种通用报表生成方法及装置

文档序号:1185108 发布日期:2020-09-22 浏览:10次 >En<

阅读说明:本技术 一种通用报表生成方法及装置 (Universal report generation method and device ) 是由 刘浩 于 2020-06-12 设计创作,主要内容包括:本发明实施例提供了一种通用报表生成方法及装置,该方法包括获取表格配置信息,根据数据源格式,读取数据源格式对应的数据源中的数据,形成二维业务数据,确定表格合并信息是否包括合并行列号,若是,则根据合并行列号,对二维业务数据对应的二维数据位图进行行压缩和/或列压缩,确定出HTML表格模板,将二维业务数据和表格描述信息填充到HTML表格模板中,生成报表,而无需提前定制报表模板,也不限定某种特定的报表,只需要通过简单的配置即可生成不同格式的报表,从而可以满足不同使用场景的需求,提高了报表的通用性,并可以解决现有技术中报表模板通用性不强、使用场景有局限性的问题。(The embodiment of the invention provides a method and a device for generating a universal report, wherein the method comprises the steps of acquiring form configuration information, reading data in a data source corresponding to a data source format according to the data source format to form two-dimensional service data, determining whether form combination information comprises a combination column number or not, if so, performing row compression and/or column compression on a two-dimensional data bitmap corresponding to the two-dimensional service data according to the combination column number to determine an HTML form template, filling the two-dimensional service data and form description information into the HTML form template to generate the report without customizing the form template in advance or limiting a certain specific report, and generating the reports with different formats only through simple configuration, so that the requirements of different use scenes can be met, the universality of the report is improved, and the problems that the universality of the form template in the prior art is not strong, the, The use scenario has a problem of limitation.)

一种通用报表生成方法及装置

技术领域

本发明实施例涉及金融科技(Fintech)领域,尤其涉及一种通用报表生成方法及装置。

背景技术

随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技转变,但由于金融行业的安全性、实时性要求,也对技术提出的更高的要求。在金融领域,每个业务部门都需要报表来统计分析业务数据,而不同的业务部门对报表有不同层面的需求,因此,开发人员需要针对不同的业务部门开发不同的自动报表模板。

现有的自动报表系统是针对特定场景开发的,如监控自动服务或某系统运行状态统计,且这种自动报表系统的数据采集、报表转换以及报表落地都是集成一体的。然而,这种自动报表系统的报表转换是需要提前配置好报表模板,转化的过程其实就是往模板里面填数,如果需要开发新的报表,则需要配置新的模板,因此,这种自动报表系统存在针对某个特殊领域且需要提前定制报表模板,通用性不强,使用场景有局限性的问题。

综上,目前亟需一种通用报表生成方法,用以解决现有技术中报表模板通用性不强、使用场景有局限性的问题。

发明内容

本发明实施例提供了一种通用报表生成方法及装置,用以解决现有技术中报表模板通用性不强、使用场景有局限性的问题。

第一方面,本发明实施例提供了一种通用报表生成方法,包括:

获取表格配置信息,所述表格配置信息包括数据源格式、表格描述信息以及表格合并信息;

根据所述数据源格式,读取所述数据源格式对应的数据源中的数据,形成二维业务数据;

确定所述表格合并信息是否包括合并行列号;

若是,则根据所述合并行列号,对所述二维业务数据对应的二维数据位图进行行压缩和/或列压缩,确定出HTML表格模板;

将所述二维业务数据和所述表格描述信息填充到所述HTML表格模板中,生成报表。

上述技术方案中,通过根据数据源格式,可以自动确定出与数据源格式对应的二维业务数据,如此便可以对接常见的具有一定格式的数据源,再确定表格合并信息是否包括合并行列号,并在确定表格合并信息包括合并行列号时,可以根据合并行列号的配置不同,对二维业务数据对应的二维数据位图进行不同的行压缩和/或列压缩,以便确定出不同格式的HTML表格模板,如此并未限制具体的表格模板,从而提高HTML表格模板生成的灵活性,之后将二维业务数据和表格描述信息填充到对应格式的HTML表格模板中,就可以生成对应格式的报表,而无需提前定制报表模板,也不限定某种特定的报表,只需要通过简单的配置即可生成不同格式的报表,从而可以满足不同使用场景的需求,提高了报表的通用性,并可以解决现有技术中报表模板通用性不强、使用场景有局限性的问题。

可选地,所述方法还包括:

在确定所述表格合并信息不包括所述合并行列号时,则根据所述二维业务数据确定出所述HTML表格模板。

上述技术方案中,在确定表格合并信息不包括合并行列号时,可以直接根据二维业务数据确定出HTML表格模板,简单方便。

可选地,所述根据所述合并行列号,对所述二维业务数据的二维表格进行行压缩和/或列压缩,确定出HTML表格模板,包括:

预先生成一个二维数据位图以及一个与所述二维数据位图对应的二维方向位图,并将所述二维数据位图的数据值设置为1以及将所述二维方向位图的方向值设置为空;其中,所述二维数据位图、所述二维方向位图与所述二维业务数据的行数、列数均对应相同;

根据所述二维业务数据和所述合并行列号中的合并行号,将所述合并行号对应的所述二维数据位图中每一行的数据值从右向左进行压缩,确定出行压缩后的所述二维数据位图,以及根据所述二维业务数据和所述合并行列号中的合并列号,将所述合并列号对应的二维数据位图中每一列的数据值从下向上进行压缩,确定出列压缩后的所述二维数据位图;

根据所述行压缩后的所述二维数据位图、所述列压缩后的所述二维数据位图以及未合并行列的所述二维数据位图,确定出所述HTML表格模板。

上述技术方案中,通过在确定表格合并信息包括合并行列号时,将合并行号对应的二维数据位图中每一行的数据值进行压缩,或将合并列号对应的二维数据位图中每一列的数据值进行压缩,并根据行压缩后的二维数据位图、列压缩后的二维数据位图以及未合并行列的二维数据位图,确定出HTML表格模板,通过这种简单的配置即可生成不同格式的HTML表格模板,可以满足不同使用场景的需求。

可选地,所述根据所述二维业务数据和所述合并行列号中的合并行号,将所述合并行号对应的所述二维数据位图中每一行的数据值从右向左进行压缩,确定出行压缩后的所述二维数据位图,以及根据所述二维业务数据和所述合并行列号中的合并列号,将所述合并列号对应的二维数据位图中每一列的数据值从下向上进行压缩,确定出列压缩后的所述二维数据位图,包括:

根据所述合并行号以及所述二维数据位图,将所述合并行号对应的所述二维业务数据中每一行的末位数据依次与前一位数据进行对比,若相等,则将所述二维数据位图对应位置的数据累加到前一位数据上,并将所述对应位置的数据减去自身数据,确定出所述行压缩后的所述二维数据位图,以及将每一次结束相等的行数据对应位置的方向值设置为第一方向阈值,确定出行压缩后的所述二维方向位图;

根据所述合并列号以及所述二维数据位图,将所述合并列号对应的所述二维业务数据中每一列的末位数据依次与前一位数据进行对比,若相等,则将所述二维数据位图对应位置的数据累加到前一位数据上,并将所述对应位置的数据减去自身数据,确定出所述列压缩后的所述二维数据位图,以及将每一次结束相等的列数据对应位置的方向值设置为第二方向阈值,确定出列压缩后的所述二维方向位图;

根据所述行压缩后的所述二维数据位图和所述列压缩后的所述二维数据位图,确定出所述压缩后的所述二维数据位图,以及根据行压缩后的所述二维方向位图和列压缩后的所述二维方向位图,确定出压缩后的所述二维方向位图。

上述技术方案中,通过按照预设的规则对二维数据位图中行或列的数据值进行处理,可以确定出压缩后的二维数据位图,并对将每一次结束相等的行或列数据对应位置的方向值设置为第一方向阈值或第二方向阈值,可以确定出压缩后的二维方向位图,从而为确定出最终格式的HTML表格模板提供支持。

可选地,所述根据所述行压缩后的所述二维数据位图、所述列压缩后的所述二维数据位图以及未合并行列的所述二维数据位图,确定出所述HTML表格模板,包括:

针对所述压缩后的所述二维数据位图的任一数据,若所述数据等于1,则所述数据的对应位置生成一个标准单元格;

若所述数据小于1,则不进行处理;

若所述数据大于1且所述数据对应位置的方向值为第一方向阈值,则所述数据的对应位置生成一个行合并单元格,以及若所述数据大于1且所述数据对应位置的方向值为第二方向阈值,则所述数据的对应位置生成一个列合并单元格;

根据所述标准单元格、所述行合并单元格以及所述列合并单元格,确定出所述HTML表格模板。

上述技术方案中,通过针对压缩后的二维数据位图的任一数据,若数据等于1,则数据的对应位置生成一个标准单元格,若数据大于1并确定数据对应位置的方向值为第一方向阈值或第二方向阈值,则数据的对应位置生成一个行或列合并单元格,并根据标准单元格、行合并单元格以及列合并单元格,可以确定出最终格式的HTML表格模板,以便使用该HTML表格模板向用户呈现满足用户需求的表格数据形式。

可选地,所述表格配置信息还包括关系运算表达式;

将所述二维业务数据和所述表格描述信息填充到所述HTML表格模板中,生成报表,包括:

将所述二维业务数据和所述表格描述信息填充到所述HTML表格模板中,根据所述关系运算表达式,从填充后的所述HTML表格模板中确定出符合所述关系运算表达式的表格数据,并对所述符合所述关系运算表达式的表格数据进行标记,生成所述报表。

上述技术方案中,通过根据关系运算表达式,从填充后的HTML表格模板中确定出符合关系运算表达式的表格数据,并对符合关系运算表达式的表格数据进行标记,生成报表。由于支持多种运算表达式,可利用关系运算表达式针对某些特殊数据进行筛选并高亮显示,可以为用户达到醒目提醒的效果,以便用户进行相应的处理,从而提升用户体验。

可选地,所述关系运算表达式包括标题名称、关系运算符以及预设数据阈值;

所述根据所述关系运算表达式,从填充后的所述HTML表格模板中确定出符合所述关系运算表达式的表格数据,并对所述符合所述关系运算表达式的表格数据进行标记,包括:

根据所述标题名称,从所述填充后的所述HTML表格模板中确定出与所述标题名称对应的表格数据;

按照所述关系运算符,将所述表格数据中每一数据与所述预设数据阈值进行关系运算,若结果为真,则将所述结果为真的数据按照预设的显示格式进行显示,否则不进行处理。

上述技术方案中,通过根据标题名称,从填充后的HTML表格模板中确定出与标题名称对应的表格数据,并按照关系运算符,将表格数据中每一数据与预设数据阈值进行关系运算,可以将结果为真的数据按照预设的显示格式进行显示,以达到醒目提醒的效果,便于直观地向用户展示数据,从而提升用户体验。

可选地,所述表格配置信息还包括图形参数;

所述将所述二维业务数据和所述表格描述信息填充到所述HTML表格模板中,生成报表,包括:

将所述二维业务数据和所述表格描述信息填充到所述HTML表格模板中;

根据所述图形参数以及所述图形参数对应所述HTML表格模板中的二维业务数据,生成与所述图形参数对应的可缩放的矢量图形SVG数据;

将所述SVG数据与填充后的所述HTML表格模板进行合并,生成所述报表。

上述技术方案中,通过根据图形参数以及图形参数对应HTML表格模板中的二维业务数据,生成与图形参数对应的可缩放的矢量图形SVG数据,并将SVG数据与填充后的HTML表格模板进行合并,生成报表。由于通过将图表相结合的形式向用户进行展示,便于用户进行相应的处理,从而提升用户的直观体验,并可以实现图形化报表的自动生成。

第二方面,本发明实施例还提供了一种通用报表生成装置,包括:

获取单元,用于获取表格配置信息,所述表格配置信息包括数据源格式、表格描述信息以及表格合并信息;

处理单元,用于根据所述数据源格式,读取所述数据源格式对应的数据源中的数据,形成二维业务数据;确定所述表格合并信息是否包括合并行列号;若是,则根据所述合并行列号,对所述二维业务数据对应的二维数据位图进行行压缩和/或列压缩,确定出HTML表格模板;将所述二维业务数据和所述表格描述信息填充到所述HTML表格模板中,生成报表。

可选地,所述处理单元还用于:

在确定所述表格合并信息不包括所述合并行列号时,则根据所述二维业务数据确定出所述HTML表格模板。

可选地,所述处理单元具体用于:

预先生成一个二维数据位图以及一个与所述二维数据位图对应的二维方向位图,并将所述二维数据位图的数据值设置为1以及将所述二维方向位图的方向值设置为空;其中,所述二维数据位图、所述二维方向位图与所述二维业务数据的行数、列数均对应相同;

根据所述二维业务数据和所述合并行列号中的合并行号,将所述合并行号对应的所述二维数据位图中每一行的数据值从右向左进行压缩,确定出行压缩后的所述二维数据位图,以及根据所述二维业务数据和所述合并行列号中的合并列号,将所述合并列号对应的二维数据位图中每一列的数据值从下向上进行压缩,确定出列压缩后的所述二维数据位图;

根据所述行压缩后的所述二维数据位图、所述列压缩后的所述二维数据位图以及未合并行列的所述二维数据位图,确定出所述HTML表格模板。

可选地,所述处理单元具体用于:

根据所述合并行号以及所述二维数据位图,将所述合并行号对应的所述二维业务数据中每一行的末位数据依次与前一位数据进行对比,若相等,则将所述二维数据位图对应位置的数据累加到前一位数据上,并将所述对应位置的数据减去自身数据,确定出所述行压缩后的所述二维数据位图,以及将每一次结束相等的行数据对应位置的方向值设置为第一方向阈值,确定出行压缩后的所述二维方向位图;

根据所述合并列号以及所述二维数据位图,将所述合并列号对应的所述二维业务数据中每一列的末位数据依次与前一位数据进行对比,若相等,则将所述二维数据位图对应位置的数据累加到前一位数据上,并将所述对应位置的数据减去自身数据,确定出所述列压缩后的所述二维数据位图,以及将每一次结束相等的列数据对应位置的方向值设置为第二方向阈值,确定出列压缩后的所述二维方向位图;

根据所述行压缩后的所述二维数据位图和所述列压缩后的所述二维数据位图,确定出所述压缩后的所述二维数据位图,以及根据行压缩后的所述二维方向位图和列压缩后的所述二维方向位图,确定出压缩后的所述二维方向位图。

可选地,所述处理单元具体用于:

针对所述压缩后的所述二维数据位图的任一数据,若所述数据等于1,则所述数据的对应位置生成一个标准单元格;

若所述数据小于1,则不进行处理;

若所述数据大于1且所述数据对应位置的方向值为第一方向阈值,则所述数据的对应位置生成一个行合并单元格,以及若所述数据大于1且所述数据对应位置的方向值为第二方向阈值,则所述数据的对应位置生成一个列合并单元格;

根据所述标准单元格、所述行合并单元格以及所述列合并单元格,确定出所述HTML表格模板。

可选地,所述表格配置信息还包括关系运算表达式;

所述处理单元具体用于:

将所述二维业务数据和所述表格描述信息填充到所述HTML表格模板中,根据所述关系运算表达式,从填充后的所述HTML表格模板中确定出符合所述关系运算表达式的表格数据,并对所述符合所述关系运算表达式的表格数据进行标记,生成所述报表。

可选地,所述关系运算表达式包括标题名称、关系运算符以及预设数据阈值;

所述处理单元具体用于:

根据所述标题名称,从所述填充后的所述HTML表格模板中确定出与所述标题名称对应的表格数据;

按照所述关系运算符,将所述表格数据中每一数据与所述预设数据阈值进行关系运算,若结果为真,则将所述结果为真的数据按照预设的显示格式进行显示,否则不进行处理。

可选地,所述表格配置信息还包括图形参数;

所述处理单元具体用于:

将所述二维业务数据和所述表格描述信息填充到所述HTML表格模板中;

根据所述图形参数以及所述图形参数对应所述HTML表格模板中的二维业务数据,生成与所述图形参数对应的可缩放的矢量图形SVG数据;

将所述SVG数据与填充后的所述HTML表格模板进行合并,生成所述报表。

第三方面,本发明实施例提供一种计算设备,包括:

存储器,用于存储计算机程序;

处理器,用于调用所述存储器中存储的计算机程序,按照获得的程序执行通用报表生成方法。

第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行程序,所述计算机可执行程序用于使计算机执行通用报表生成方法。

附图说明

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

图1为本发明实施例提供的一种系统架构的示意图;

图2为本发明实施例提供的一种通用报表生成方法的流程示意图;

图3为本发明实施例提供的一种对CSV表格中第r行的数据进行行合并的示意图;

图4为本发明实施例提供的一种对符合关系运算表达式的表格数据进行高亮显示的示意图;

图5为本发明实施例提供的一种通用报表生成装置的结构示意图。

具体实施方式

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

图1为本发明实施例提供的一种系统架构。如图1所示,该系统架构可以为服务器100,包括处理器110、通信接口120和存储器130。

其中,通信接口120用于与终端设备进行通信,收发该终端设备传输的信息,实现通信。

处理器110是服务器100的控制中心,利用各种接口和线路连接整个服务器100的各个部分,通过运行或执行存储在存储器130内的软件程序/或模块,以及调用存储在存储器130内的数据,执行服务器100的各种功能和处理数据。可选地,处理器110可以包括一个或多个处理单元。

存储器130可用于存储软件程序以及模块,处理器110通过运行存储在存储器130的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器130可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据业务处理所创建的数据等。此外,存储器130可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

需要说明的是,上述图1所示的结构仅是一种示例,本发明实施例对此不做限定。

基于上述描述,图2示例性的示出了本发明实施例提供的一种通用报表生成方法的流程,该流程可以由通用报表生成装置执行。

如图2所示,该流程具体包括:

步骤201,获取表格配置信息。

本发明实施例中,该表格配置信息可以包括数据源格式、表格描述信息、表格合并信息、关系运算表达式以及图形参数。其中,数据源格式可以为CSV、竖线分割符、Excel等;表格描述信息可以包括用户设置的报表标题和对报表的一段文字说明等;表格合并信息可以包括用户配置的合并行列号、未配置合并行列号等;关系运算表达式可以包括标题名称、关系运算符以及预设数据阈值;图形参数可以为产生折线图、柱状图以及饼状图等的参数,此外,预设数据阈值可以根据用户的需求进行设置。

需要说明的是,一个完整的自动报表系统,一般至少需要数据采集、报表转换、报表落地、报表展示等四个步骤。但是不同的业务系统,采集数据的方式基本不同,比如可以是客户端上送、爬虫抓取、程序计算、SQL导出、shell等脚本语言导出等,为了使本发明的报表更具通用性,可以嵌入到任何已有系统中,因此本发明不涉及数据采集模块,直接对接原系统的数据源,要求数据源是具有一定格式的文件。

步骤202,根据所述数据源格式,读取所述数据源格式对应的数据源中的数据,形成二维业务数据。

本发明实施例中,根据数据源格式,读取数据源格式对应的数据源中的数据,以此形成与数据源格式对应的二维业务数据。具体地,根据用户在配置文件中的设置,初始化数据,再根据传入的数据源文件格式,读取数据源到一个二维list。比如list为L,计算出L的行数M、列数N。

需要说明的是,本发明实施例的数据源是一个标准格式M行、N列的数据文件,该数据源可以是直接从数据库导出,或者是一个M*N的两层for循环产生。

步骤203,确定所述表格合并信息是否包括合并行列号。

本发明实施例中,在生成HTML表格模板之前,需要判断表格合并信息是否包括合并行列号。其中,在确定表格合并信息不包括合并行列号时,则根据二维业务数据确定出HTML表格模板;在确定表格合并信息包括合并行列号时,则根据合并行列号,对二维业务数据对应的二维数据位图进行行压缩和/或列压缩,确定出HTML表格模板。

步骤204,在确定所述表格合并信息包括所述合并行列号时,则根据所述合并行列号,对所述二维业务数据对应的二维数据位图进行行压缩和/或列压缩,确定出HTML表格模板。

本发明实施例中,在根据表格合并信息中合并行列号,对二维业务数据对应的二维数据位图进行行压缩和/或列压缩来生成HTML表格模板的过程中,首先需要预先生成一个二维数据位图以及一个与二维数据位图对应的二维方向位图,并将二维数据位图的数据值设置为1以及将二维方向位图的方向值设置为空;其中,二维数据位图、二维方向位图与二维业务数据的行数、列数均对应相同,再根据二维业务数据和合并行列号中的合并行号,将合并行号对应的二维数据位图中每一行的数据值从右向左进行压缩,确定出行压缩后的二维数据位图,以及根据二维业务数据和合并行列号中的合并列号,将合并列号对应的二维数据位图中每一列的数据值从下向上进行压缩,确定出列压缩后的二维数据位图,之后根据行压缩后的二维数据位图、列压缩后的二维数据位图以及未合并行列的二维数据位图,确定出HTML表格模板。

具体地,根据表格行列合并信息中的合并行号以及二维数据位图,将合并行号对应的二维业务数据中每一行的末位数据依次与前一位数据进行对比,若相等,则将二维数据位图对应位置的数据累加到前一位数据上,并将对应位置的数据减去自身数据,确定出行压缩后的二维数据位图,以及将每一次结束相等的行数据对应位置的方向值设置为第一方向阈值,确定出行压缩后的二维方向位图,并根据表格行列合并信息中的合并列号以及二维数据位图,将合并列号对应的二维业务数据中每一列的末位数据依次与前一位数据进行对比,若相等,则将二维数据位图对应位置的数据累加到前一位数据上,并将对应位置的数据减去自身数据,确定出列压缩后的二维数据位图,以及将每一次结束相等的列数据对应位置的方向值设置为第二方向阈值,确定出列压缩后的二维方向位图,之后根据行压缩后的二维数据位图和列压缩后的二维数据位图,确定出压缩后的二维数据位图,以及根据行压缩后的二维方向位图和列压缩后的二维方向位图,确定出压缩后的二维方向位图,然后针对压缩后的二维数据位图的任一数据,若数据等于1,则数据的对应位置生成一个标准单元格,若数据小于1,则不进行处理,若数据大于1且数据对应位置的方向值为第一方向阈值,则数据的对应位置生成一个行合并单元格且行合并的单元格数等于该数据值,以及若数据大于1且数据对应位置的方向值为第二方向阈值,则数据的对应位置生成一个列合并单元格且列合并的单元格数等于该数据值,并根据标准单元格、行合并单元格以及列合并单元格,确定出HTML表格模板,即根据表格合并信息的配置不同,对二维业务数据对应的二维数据位图进行不同的行压缩和/或列压缩,可以确定出与表格合并信息对应的不同格式的HTML表格模板,如此并不限制具体的表格模板,从而提高HTML表格模板生成的灵活性。其中,二维数据位图、二维方向位图与二维业务数据的行数、列数均对应相同;第一方向阈值、第二方向阈值可以根据经验设置。

举例来说,使用PyH模块(Python中用来生成HTML内容的模块)定义一个空HTML(Hyper Text Markup Language,超级文本标记语言)页面,报表的主体是一个HTML表格,在渲染表格之前,允许用户通过配置设置一个标题、一段文字说明。如果是最简单的表格,没有任何合并单元格的情况,这种就比较简单,直接用PyH模块产生一个M*N的表格即可,如果是有行列合并的表格,用户只需要配置可合并的行列号,比如,如表1所示的进销存表,涉及到多个合并行、多个合并列,只需要将合并的行号、合并的列号配置在合并行列的参数中,即可生成对应的报表。

表1

Figure BDA0002536531970000141

在这种情况下,以CSV格式为例,由表1可知,第一行的数据格式为:,,入库,入库,入库,出库,出库,出库;第一、二列的数据格式为:

季度,月份;

第一季度,一月;

第一季度,二月;

第一季度,三月;

第二季度,四月;

第二季度,五月;

…。

根据配置的可合并行列号,生成合并之后的HTML模板。首先,初始化生成一个M*N的二维数据bitmap(位图,也可称为点阵图),数据值均为1,然后生成一个M*N的二维方向bitmap,方向值都为空。在对二维业务数据进行行合并时,依次取出配置中所有合并行的行号r,取出L[r-1]行的数据,是一个1*N的一维数组,从数组的最后一位数据,依次跟前一位数据比较,如果相等,将二维数据bitmap同样位置的数据x,传递给二维数据bitmap中左边一位的数据,也就是二维数据bitmap上该位置的数值减x,左边位置上的数值加x,循环操作,将L[r-1]行的数据操作完,同时将最后一次连续相等的位置,在二维方向bitmap同样位置上置为R,代表横向。这个过程,可以形容为将r行上的数据,从右向左压缩,在最终的位置上记录上压缩的格子数,压缩的方向是R。其中,对CSV表格中第r行的数据进行行合并的形式可以如图3所示,D1、D2、…D5为假设的第r行的数据内容,从该行的最后一位数据依次跟前一位数据进行比较,即该行的最后一位D5与前一位D2进行比较,发现不相等,则不进行处理,依次往前进行,在进行到D4时,发现D4与前一位数据D4相等,则将二维数据bitmap同样位置的数据1,传递给二维数据bitmap中左边一位的数据1,如此,二维数据bitmap同样位置的数据1变为0,左边一位的数据1变为2,循环操作,直到将该行的数据操作完,其中将二维数据bitmap的数据值设置为1的意义是指在每一次结束相等时在最终的位置上记录的是需要合并的单元格数。在将第r行的数据操作完之后,第r行最终产生的数据bitmap可以如表2所示,第r行最终产生的方向bitmap可以如表3所示。

表2

1 2 0 1 3 0 0 1 1

表3

R R

基于同样的方法操作,取出所有合并列的列号c,从下往上压缩,在最终的位置上记录上压缩的格子数,压缩的方向是C,代表纵向。在所有的合并行号、合并列号操作完成之后,会生成最终的二维数据bitmap、二维方向bitmap。循环二维数据bitmap,如果该位置上的数据为1,直接td(PyH模块生成单元格命令,同时也是HTML单元格标签)生成一个标准单元格;如果该位置上的数据为0,不做任何操作;如果该位置上的数据大于1,假设为X,同时检查二维方向bitmap上同样位置的方向值,如果为R,则td生成一个行合并单元格,rowspan=X,即行合并的单元格数等于数据X;如果该位置上的数据大于1,假设为X,同时检查二维方向bitmap上同样位置的方向值,如果为C,则td生成一个列合并单元格,colspan=X,即列合并的单元格数等于数据X。整个M*N循环完成之后,会生成最终格式的HTML表格模板。其中,rowspan(跨行)为HTML标签的rowspan属性,colspan(跨列)为HTML标签的colspan属性。

步骤205,将所述二维业务数据和所述表格描述信息填充到所述HTML表格模板中,生成报表。

本发明实施例中,将二维业务数据和表格描述信息填充到HTML表格模板中,根据标题名称,从填充后的HTML表格模板中确定出与标题名称对应的表格数据,按照关系运算符,将表格数据中每一数据与预设数据阈值进行关系运算,若结果为真,则将结果为真的数据按照预设的显示格式进行显示,否则不进行处理,以此生成报表;或者将二维业务数据和表格描述信息填充到HTML表格模板中,根据图形参数以及图形参数对应HTML表格模板中的二维业务数据,生成与图形参数对应的可缩放的矢量图形SVG数据,将SVG数据与填充后的HTML表格模板进行合并,以此生成报表。

具体地,配置表达式的格式为key1:关系运算符1:value1;key2:关系运算符2:value2;…。其中,key为标题名称,value为数据内容,关系运算符支持==,!=,>,>=,<,<=等。如图4所示,取出所有的key组成一个列表keylist,取出所有的运算符组成一个列表optionList,取出所有的value组成一个列表valueList,循环对keyList操作,依次取出key列下所有的数据,将数据内容与key对应的value按照关系运算符设定的运算进行关系运算,如果结果为真,该数据位上的数据按照指定的高亮格式显示。之后将L中的数据填充到HTML模板中,打上标记的单元格高亮显示,即循环数据列表L,二维数据bitmap,将L中的行列数据依次取出来,写入二维数据bitmap产生的HTML模板中,在高亮显示的位置,为该位置的单元格设置上高亮显示的属性。根据配置的图形参数,生成对应的图形SVG数据(Scalable Vector Graphics,可缩放的矢量图形),图形支持产生折线图、柱状图、饼状图等,这个主要是使用python的pygal模块来产生SVG格式数据,用户配置的是X轴的数据源名称,Y轴的数据源名称(可以有多条),数据源名称对应表格中数据的列名,根据数据源名称找到X、Y轴在表格中的列号。之后从L中取出该列的数据,得到X轴、Y轴的数据List。然后调用pygal模块相应图形的参数,传入X、Y轴的数据List,render出SVG格式的数据。最后将HTML文件落地,同时将SVG数据的内容追加到HTML文件body中,其中SVG格式的数据本身是可以直接在HTML中展示的,因此直接将SVG数据追加在HTML数据body的末尾即可,最终将HTML写入文件。此外,在根据用户配置的X、Y轴数据源以及图形名称,自动生成图形化报表时,除了使用pygal模块生成SVG数据之外,还可以通过matplotlib、plotly等直接生成图片格式的图形,再将图形嵌入到HTML中落地,实现自动生成图形化报表的目的。

上述实施例表明,通过根据数据源格式,可以自动确定出与数据源格式对应的二维业务数据,如此便可以对接常见的具有一定格式的数据源,再确定表格合并信息是否包括合并行列号,并在确定表格合并信息包括合并行列号时,可以根据合并行列号的配置不同,对二维业务数据对应的二维数据位图进行不同的行压缩和/或列压缩,以便确定出不同格式的HTML表格模板,如此并不限制具体的表格模板,从而提高HTML表格模板生成的灵活性,之后将二维业务数据和表格描述信息填充到对应格式的HTML表格模板中,就可以生成对应格式的报表,而无需提前定制报表模板,也不限定某种特定的报表,只需要通过简单的配置即可生成不同格式的报表,从而可以满足不同使用场景的需求,提高了报表的通用性,并可以解决现有技术中报表模板通用性不强、使用场景有局限性的问题。

基于相同的技术构思,图5示例性的示出了本发明实施例提供的一种通用报表生成装置,该装置可以执行通用报表生成方法的流程。

如图5所示,该装置包括:

获取单元501,用于获取表格配置信息,所述表格配置信息包括数据源格式、表格描述信息以及表格合并信息;

处理单元502,用于根据所述数据源格式,读取所述数据源格式对应的数据源中的数据,形成二维业务数据;确定所述表格合并信息是否包括合并行列号;若是,则根据所述合并行列号,对所述二维业务数据对应的二维数据位图进行行压缩和/或列压缩,确定出HTML表格模板;将所述二维业务数据和所述表格描述信息填充到所述HTML表格模板中,生成报表。

可选地,所述处理单元502还用于:

在确定所述表格合并信息不包括所述合并行列号时,则根据所述二维业务数据确定出所述HTML表格模板。

可选地,所述处理单元502具体用于:

预先生成一个二维数据位图以及一个与所述二维数据位图对应的二维方向位图,并将所述二维数据位图的数据值设置为1以及将所述二维方向位图的方向值设置为空;其中,所述二维数据位图、所述二维方向位图与所述二维业务数据的行数、列数均对应相同;

根据所述二维业务数据和所述合并行列号中的合并行号,将所述合并行号对应的所述二维数据位图中每一行的数据值从右向左进行压缩,确定出行压缩后的所述二维数据位图,以及根据所述二维业务数据和所述合并行列号中的合并列号,将所述合并列号对应的二维数据位图中每一列的数据值从下向上进行压缩,确定出列压缩后的所述二维数据位图;

根据所述行压缩后的所述二维数据位图、所述列压缩后的所述二维数据位图以及未合并行列的所述二维数据位图,确定出所述HTML表格模板。

可选地,所述处理单元502具体用于:

根据所述合并行号以及所述二维数据位图,将所述合并行号对应的所述二维业务数据中每一行的末位数据依次与前一位数据进行对比,若相等,则将所述二维数据位图对应位置的数据累加到前一位数据上,并将所述对应位置的数据减去自身数据,确定出所述行压缩后的所述二维数据位图,以及将每一次结束相等的行数据对应位置的方向值设置为第一方向阈值,确定出行压缩后的所述二维方向位图;

根据所述合并列号以及所述二维数据位图,将所述合并列号对应的所述二维业务数据中每一列的末位数据依次与前一位数据进行对比,若相等,则将所述二维数据位图对应位置的数据累加到前一位数据上,并将所述对应位置的数据减去自身数据,确定出所述列压缩后的所述二维数据位图,以及将每一次结束相等的列数据对应位置的方向值设置为第二方向阈值,确定出列压缩后的所述二维方向位图;

根据所述行压缩后的所述二维数据位图和所述列压缩后的所述二维数据位图,确定出所述压缩后的所述二维数据位图,以及根据行压缩后的所述二维方向位图和列压缩后的所述二维方向位图,确定出压缩后的所述二维方向位图。

可选地,所述处理单元502具体用于:

针对所述压缩后的所述二维数据位图的任一数据,若所述数据等于1,则所述数据的对应位置生成一个标准单元格;

若所述数据小于1,则不进行处理;

若所述数据大于1且所述数据对应位置的方向值为第一方向阈值,则所述数据的对应位置生成一个行合并单元格,以及若所述数据大于1且所述数据对应位置的方向值为第二方向阈值,则所述数据的对应位置生成一个列合并单元格;

根据所述标准单元格、所述行合并单元格以及所述列合并单元格,确定出所述HTML表格模板。

可选地,所述表格配置信息还包括关系运算表达式;

所述处理单元502具体用于:

将所述二维业务数据和所述表格描述信息填充到所述HTML表格模板中,根据所述关系运算表达式,从填充后的所述HTML表格模板中确定出符合所述关系运算表达式的表格数据,并对所述符合所述关系运算表达式的表格数据进行标记,生成所述报表。

可选地,所述关系运算表达式包括标题名称、关系运算符以及预设数据阈值;

所述处理单元502具体用于:

根据所述标题名称,从所述填充后的所述HTML表格模板中确定出与所述标题名称对应的表格数据;

按照所述关系运算符,将所述表格数据中每一数据与所述预设数据阈值进行关系运算,若结果为真,则将所述结果为真的数据按照预设的显示格式进行显示,否则不进行处理。

可选地,所述表格配置信息还包括图形参数;

所述处理单元502具体用于:

将所述二维业务数据和所述表格描述信息填充到所述HTML表格模板中;

根据所述图形参数以及所述图形参数对应所述HTML表格模板中的二维业务数据,生成与所述图形参数对应的可缩放的矢量图形SVG数据;

将所述SVG数据与填充后的所述HTML表格模板进行合并,生成所述报表。

基于相同的技术构思,本发明实施例提供一种计算设备,包括:

存储器,用于存储计算机程序;

处理器,用于调用所述存储器中存储的计算机程序,按照获得的程序执行通用报表生成方法。

基于相同的技术构思,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行程序,所述计算机可执行程序用于使计算机执行通用报表生成方法。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

20页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:生成表格的方法、装置、电子设备及计算机可读存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!