基于树形结构的报表生成方法及装置与流程

文档序号:12887145阅读:315来源:国知局
基于树形结构的报表生成方法及装置与流程

本发明涉及数据处理领域,尤其涉及一种基于树形结构的报表生成方法及装置。



背景技术:

能源管理系统是企业信息化系统的一个重要组成部分,用于对能源数据进行采集、加工、分析、处理,以提高能源系统运行和管理的水平,减少能源消耗,提供供能质量,强化和完善能源考核评价体系,提高劳动生产率,改善环境质量,进而提高企业产品的市场竞争力。

其中,报表是分析能耗的重要工具,市面上存在的国产系统、国外系统都可以实现一些基本的报表,但是各个企业都有针对自己使用的特殊报表,像水晶报表、需要编程,或对数据库比较熟悉才可以开发多功能报表。因此,目前的报表开发复杂,且开发成本高,对于企业是比较大的负担。



技术实现要素:

本发明的主要目的在于提供一种基于树形结构的报表生成方法及装置,旨在解决现有技术中报表的开发复杂,且成本高的技术问题。

为实现上述目的,本发明第一方面提供一种基于树形结构的报表生成方法,包括:响应于报表生成指令,利用所述报表生成指令包含的报表类型查找预置的报表类型与树形结构的对应关系,获取相应的树形结构;

根据从所述树形结构的节点抽取的变量编码,从数据库获取所有的变量编码指定时间段内的数据;

将所述数据进行预处理,并将预处理后的数据填入所述树形结构相应的节点内;

根据节点内已填入数据的树形结构生成报表。

为实现上述目的,本发明第二方面提供一种基于树形结构的报表生成装置,包括:

查找模块,用于响应于报表生成指令,利用所述报表生成指令包含的报表类型查找预置的报表类型与树形结构的对应关系,获取相应的树形结构;

获取模块,用于根据从所述树形结构的节点抽取的变量编码,从数据库获取所有的变量编码指定时间段内的数据;

填入模块,用于将所述数据进行预处理,并将预处理后的数据填入所述树形结构相应的节点内;

生成模块,用于根据节点内已填入数据的树形结构生成报表。

本发明提供一种基于树形结构的报表生成方法,该方法包括,响应于报表生成指令,利用该报表生成指令包含的报表类型查找预置的报表类型与树形结构的对应关系,获取相应的树形结构,根据从所述树形结构的节点抽取的变量编码,从数据库获取所有的变量编码指定时间段内的数据,将该数据进行预处理,并将预处理后的数据填入树形结构相应的节点内,根据节点内已填入数据的树形结构生成报表。相对于现有技术,通过预先设置报表类型与树形结构的对应关系的方式,使得针对不同的类型的报表都具有其对应的树形结构,且通过获取树形结构的所有变量编码在指定时间段内的数据,并进行预处理后填入树形结构的节点内,使得能够利用已填入数据的树形结构生成报表。该种方式具有开发简单,成本低,且灵活性强等优点,能够满足大部分企业的需求。进一步的设置报表类型与树形结构的对应关系,能够避免重复建模的问题。

附图说明

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

图1为本发明第一实施例中基于树形结构的报表生成方法的流程示意图;

图2为本发明第一实施例中步骤103的细化步骤的流程示意图;

图3为本发明第一实施例中步骤104的细化步骤的流程示意图;

图4a为本发明实施例中报表类型的示意图;

图4b为基于图4a中的报表类型生成的报表的示意图;

图5a为本发明实施例中报表类型的另一示意图;

图5b为基于图5a中的报表类型生成的报表的示意图;

图6a为本发明实施例中报表类型的另一示意图;

图6b为基于图6a中的报表类型生成的报表的示意图;

图7为本发明第二实施例中基于树形结构的报表生成装置的结构示意图;

图8为本发明第二实施例中填入模块703的细化结构的示意图;

图9为本发明第二实施例中生成模块704的细化结构的示意图。

具体实施方式

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

由于现有技术中存在报表的开发复杂,且开发成本高的技术问题。

为了解决上述技术问题,本发明提出一种基于树形结构的报表生成方法及装置,相对于现有技术,通过预先设置报表类型与树形结构的对应关系的方式,使得针对不同的类型的报表都具有其对应的树形结构,且通过获取树形结构的所有变量编码在指定时间段内的数据,并进行预处理后填入树形结构的节点内,使得能够利用已填入数据的树形结构生成报表。该种方式具有开发简单,成本低,且灵活性强等优点,能够满足大部分企业的需求。进一步的设置报表类型与树形结构的对应关系,能够避免重复建模的问题。

请参阅图1,为本发明第一实施例中基于树形结构的报表生成方法的流程示意图,该报表生成方法包括:

步骤101、响应于报表生成指令,利用所述报表生成指令包含的报表类型查找预置的报表类型与树形结构的对应关系,获取相应的树形结构;

在本发明实施例中,上述的基于树形结构的报表生成方法可以由基于树形结构的报表生成装置(以下简称为:生成装置)实现,该生成装置可以是计算机。

其中,预先设置了多种不同类型的报表的报表类型与树形结构的对应关系,以便每一种报表类型的报表都有其相应的树形结构,考虑到中国企业报表比较复杂,很多都是多级报表,按设备、部门等分类的报表,各种求和、汇总、同比及环比等计算要求,树形结构刚好能够满足报表的多级别节点的需求,满足报表的表头的单元格合并等关键性问题,由此可知,本发明实施例中通过设置报表类型与树形结构的对应关系,使得能够简化报表的建模过程,且满足企业对报表的需求。基于该原理,本发明实施例中预先设置了多种不同类型的报表的报表类型与树形结构的对应关系。

其中,树形结构的每一个节点可以在数据库中对应一张表,表的每一项对应报表中的一列。该数据库中保存了用于生成报表的数据。

其中,若用户在该生成装置中执行了报表生成操作,则该生成装置将响应该报表生成指令,其中,该报表生成指令中包含了待生成的报表的报表类型,生成装置利用该报表类型查找预先设置的报表类型与树形结构的对应关系,获取相应的树形结构。

步骤102、根据从所述树形结构的节点抽取的变量编码,从数据库获取所有的变量编码指定时间段内的数据;

在本发明实施例中,树形结构的节点上挂载报表节点的名称与变量编码,其中,该变量编码可以为数值编码也可以为计算公式编码。其中,数值编码是指其作为节点时,其所对应的行或列中填写的是数据库中的数据,而计算公式编码是指其作为节点时,所对应的行或列需要调用计算公式计算出数据并填入该行或列。

其中,计算公式中的变量需要用括号包含起来,以便区分不同的变量,例如,计算公式可以为[tag1]+[tag2]*10-([tag3]/[tag4])。其中,通过在树形结构中设置计算公式,使得在报表生成时就能够自动的对报表中的数据进行计算处理,而不需要在报表生成之后由用户手动操作进行计算,更加简单方便,且减少用户的操作。

在得到待生成的报表的树形结构之后,从该树形节点的节点中抽取出所有的变量编码,并根据该变量编码,从数据库中获取所有的变量编码指定时间段内的数据,其中,该指定时间段可以是一年、一个月或者一天等等。其中,若是年,则将按1月至12月展示数据,若是月,则将按1号至31号展示数据,若是天,则按照第1小时至24小时展示数据。

步骤103、将所述数据进行预处理,并将预处理后的数据填入所述树形结构相应的节点内;

步骤104、根据节点内已填入数据的树形结构生成报表。

在本发明实施例中,生成装置将对获取的数据进行预处理,并将预处理后的数据填入树形结构相应的节点内,并利用节点已填入数据的树形结构生成报表。其中,树形结构的根节点可以作为生成的报表名称,且树形结构的其他节点内的内容可以是报表的内容。

在本发明实施例中,生成装置响应于报表生成指令,利用该报表生成指令包含的报表类型查找预置的报表类型与树形结构的对应关系,获取相应的树形结构,根据从所述树形结构的节点抽取的变量编码,从数据库获取所有的变量编码指定时间段内的数据,将该数据进行预处理,并将预处理后的数据填入树形结构相应的节点内,根据节点内已填入数据的树形结构生成报表。相对于现有技术,通过预先设置报表类型与树形结构的对应关系的方式,使得针对不同的类型的报表都具有其对应的树形结构,且通过获取树形结构的所有变量编码在指定时间段内的数据,并进行预处理后填入树形结构的节点内,使得能够利用已填入数据的树形结构生成报表。该种方式具有开发简单,成本低,且灵活性强等优点,能够满足大部分企业的需求。进一步的设置报表类型与树形结构的对应关系,能够避免重复建模的问题。

请参阅图2,为本发明第一实施例中步骤103的细化步骤的流程示意图,该步骤103的细化步骤包括:

步骤201、对所述多个对象数组进行循环操作,确定循环到的对象数组的数据id长度,利用所述数据id长度确定所述循环到的对象数组在所述树形结构内的节点级别;

在本发明实施例中,数据库中的数据是以对象数组的方式存在的,在得到多个对象数组之后,生成装置将进行子父节点的重组,实现将数据填入树形结构的节点的目的。

对于多个对象数组,生成装置将对其进行循环操作,且对于每一个循环到的对象数组,都将确定该循环到的对象数组的数据编码(id)长度,并利用该数据id长度确定循环到的对象数组在树形结构的节点级别。

其中,在树形结构中,根节点为一级节点,根节点的下一层节点为二级节点,二级节点的下一级节点为三级节点,并以此类推。

其中,考虑到通常由n个长度的数据来表示一层节点,因此,可以利用数据id长度与n的商作为节点级别。其中,该n可以为3,即以3位数据为一层。

通过上述循环操作,可以得到每一个对象数组在树形结构的节点级别。

步骤202、对所述多个对象数组进行循环操作,获取循环到的对象数组中的当前数据,利用所述当前数据确定所述当前数据在所述树形结构中所属的父节点id,并利用所述父节点id及所述节点级别确定所述对象数组在所述树形结构中所属的节点,将所述父节点id添加至上一个循环到的对象数组中并调用records[key]函数,以得到父数据对象;

在本发明实施例中,在对多个对象数组完成一次循环之后,还将再执行一次循环操作,并获取循环到的对象数组中的当前数据,该当前数据可以用currentdata表示,且进一步的,将利用该currentdata确定该currentdata在树形结构中所属的父节点id。

可以理解理解的是,在得到对象数组属于树形节点的节点级别及所述父节点id的情况下,可以进一步确定该对象数组在树形结构中所属的节点。

生成装置还将该父节点id添加至上一个循环到的对象数组中,并调用records[key]函数,以得到父数据对象,其中,该父数据对象可以用parentdata对象表示。

步骤203、若所述父数据对象不为空,则将所述当前数据放入所述对象数组在所述树形结构中所属的节点中;若所述父数据对象为空,则将所述当前数据放入所述对象数组在所述树形结构中所属的节点的子节点中。

在本发明实施例中,在得到parentdata对象之后,生成装置确定该parentdata对象是否为空,若不为空,则将循环到的对象数组中的currentdata放入该循环到的对象数组所属的节点中,若该parentdata对象为空,则将该currentdata放入该循环数组所属的节点的子节点中。

在本发明实施例中,通过上述方式,能够有效的将数据放入树形结构的节点中。

请参阅图3,为本发明第一实施例中步骤104的细化步骤的流程示意图,该步骤104包括:

步骤301、利用预置的节点层次表确定已填入数据的所述树形结构所对应的报表的表头;

步骤302、将所述树形结构的节点中的数据按照所述表头传入所述报表中;

步骤303、若所述树形结构中包含计算公式,则利用所述计算公式对所述报表中的相应数据进行计算,并填入所述报表,以完成报表的生成。

在本发明实施例中,预先设置了节点层次表,该节点层次表中包含节点的名称或者名称对应的变量编码的上下节点的关系及合并情况,生成装置利用该节点层次表可以确定已填入数据的树形结构对应的报表的表头,并将树形结构的节点的数据按照表头传入报表中,且进一步的,若树形结构中包含计算公式,则利用该计算公式对报表中的相应数据进行计算,并填入报表。例如,若该计算公式是求和公式,且该变量编码属于行,则对于该行中每一个对应的列,都将该列的所有数据进行求和,并将求和的数值填入该行对应的位置内。

在本发明实施例中,通过上述方式,能够有效的利用已填入数据的树形结构中的节点生成报表,且在具有计算公式的情况下,能够利用计算公式完成相应的计算。

在本发明实施例中,报表类型是通过对报表进行归类得到的,且通过将报表归类成多种不同的报表类型,使得能够通过报表类型对应的树形结构完成报表的生成,能够满足大部分企业的需求。且通过利用树形结构生成报表,能够解决复杂的多级报表关键的建模问题,此外,同一报表模板可以实现年月日报表功能,方便用户使用,不需要重复建模。

为了更好的理解本发明实施例中的技术方案,请参阅图4a,为本发明实施例中报表类型的示意图,其中,该报表类型的界面可以称为报表配置界面。在实际应用中,用户可以通过添加、删除、调制位置的方式更改该报表类型,且可以理解的是,在报表类型发生变化的情况下,其对应的树形节点也将进行相应的调整。

利用本发明第一实施例中提供的基于树形结构的报表生成方法,将生成如图4b所示的报表,在报表中,是以年为报表,且其中,最后一行是统计行,表明该行的变量编码是计算公式编码。

请参阅图5a,为本发明实施例中报表类型的另一示意图,请参阅图5b,为基于图5a所示报表类型生成的报表的示意图。

请参阅图6a,为本发明实施例中报表类型的另一示意图,请参阅图6b,为基于图6a所示报表类型生成的报表的示意图。

本发明实施例中充分利用了树形结构中节点的层级关系,来实现横向表头和纵向表头的分类,其中,树形结构中的父节点合并,每个节点都有数据对应,可以在表中设计多列,这样,每列可以用不同属性,其中,根节点的属性可以用报表名称表示,呈现到页面上就是表头名。

其中,单元格内容是用变量来填充,可以是基于计算公式计算得到的变量,这样能够加大报表的通用性,且通过括号“[]”封装变量,进一步的,可以用花括号“{}”封装一年变一次的特殊变量。

且进一步的,现有技术中,树形结构的树节点只能在一个维度对表格表头进行分级,而本发明实施例中,用根节点对应名称,并用中横线“-”对内容再进行一次分级,达到二个维度的同时分级。

请参阅图7,为本发明第二实施例中一种基于树形结构的报表生成装置的功能模块的示意图,装置包括:

查找模块701,用于响应于报表生成指令,利用所述报表生成指令包含的报表类型查找预置的报表类型与树形结构的对应关系,获取相应的树形结构;

获取模块702,用于根据从所述树形结构的节点抽取的变量编码,从数据库获取所有的变量编码指定时间段内的数据;

填入模块703,用于将所述数据进行预处理,并将预处理后的数据填入所述树形结构相应的节点内;

生成模块704,用于根据节点内已填入数据的树形结构生成报表。

在本发明实施例中,生成装置响应于报表生成指令,利用该报表生成指令包含的报表类型查找预置的报表类型与树形结构的对应关系,获取相应的树形结构,根据从所述树形结构的节点抽取的变量编码,从数据库获取所有的变量编码指定时间段内的数据,将该数据进行预处理,并将预处理后的数据填入树形结构相应的节点内,根据节点内已填入数据的树形结构生成报表。相对于现有技术,通过预先设置报表类型与树形结构的对应关系的方式,使得针对不同的类型的报表都具有其对应的树形结构,且通过获取树形结构的所有变量编码在指定时间段内的数据,并进行预处理后填入树形结构的节点内,使得能够利用已填入数据的树形结构生成报表。该种方式具有开发简单,成本低,且灵活性强等优点,能够满足大部分企业的需求。进一步的设置报表类型与树形结构的对应关系,能够避免重复建模的问题。

请参阅图8,为本发明第二实施例中填入模块703的细化结构的示意图,该填入模块703包括:

第一循环确定模块801,用于对所述多个对象数组进行循环操作,确定循环到的对象数组的数据编码id长度,利用所述数据id长度确定所述循环到的对象数组在所述树形结构内的节点级别;

第二循环确定模块802,用于对所述多个对象数组进行循环操作,获取循环到的对象数组中的当前数据,利用所述当前数据确定所述当前数据在所述树形结构中所属的父节点id,并利用所述父节点id及所述节点级别确定所述对象数组在所述树形结构中所属的节点,将所述父节点id添加至上一个循环到的对象数组中并调用records[key]函数,以得到父数据对象;

放入模块803,用于若所述父数据对象不为空,则将所述当前数据放入所述对象数组在所述树形结构中所属的节点中;若所述父数据对象为空,则将所述当前数据放入所述对象数组在所述树形结构中所属的节点的子节点中。

在本发明实施例中,通过上述方式,能够有效的将数据放入树形结构的节点中。

请参阅图9,为本发明第二实施例中生成模块704的细化结构的示意图,该生成模块704包括:

表头确定模块901,用于利用预置的节点层次表确定已填入数据的所述树形结构所对应的报表的表头;

传入模块902,用于将所述树形结构的节点中的数据按照所述表头传入所述报表中;

公式计算模块903,用于若所述树形结构中包含计算公式,则利用所述计算公式对所述报表中的相应数据进行计算,并填入所述报表,以完成报表的生成。

在本发明实施例中,通过上述方式,能够有效的利用已填入数据的树形结构中的节点生成报表,且在具有计算公式的情况下,能够利用计算公式完成相应的计算。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

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

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

需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

以上为对本发明所提供的一种基于树形结构的报表生成方法及装置的描述,对于本领域的技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。

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