一种基于非线性报表生成方法的单元格引用方法

文档序号:6463382阅读:92来源:国知局

专利名称::一种基于非线性报表生成方法的单元格引用方法
技术领域
:本发明属于报表制作
技术领域
,具体涉及一种基于非线性报表生成方法的单元格引用方法。
背景技术
:报表是单位和部门运营管理指标的阶段性反映,是相关负责人监控业务运行状况、进行决策的重要依据。随着信息系统的应用,计算机自动计算和生成报表逐步取代了传统的手工统计方式,极大的提高了工作效率,增加了准确程度。目前,用于制作报表的工具软件可分为两类一类是以微软公司的Excel为代表的静态报表制作工具,其特征是设计的报表是静态的,不会与数据库中的数据联动而自动增加或减少行列数及改变其中的数据;另一类则是动态报表制作工具,能够与数据库(主要是关系型数据库)关联,动态地从数据库中获取数据并根据用户事先绘制好的报表模板和参数自动生成不同布局(行、列等)和统计内容的报表。这样,计算方案相同的报表只需要设计一次,可以极大地减少报表生成的工作量并提高工作效率。中国发明专利申请(公开日2007年8月22日,公开号CN101021839A)公开了一种非线性报表生成方法,该方法便是一种动态生成报表的方法,主要包括以下步骤(1)确定报表运算时需要用到的数据集;(2)在静态报表中确定某些单元格为扩展格,即主动扩展复制的单元格,并设置其扩展方向;(3)设置所有单元格的左主格和上主格,即该单元格在纵向和横向扩展时需要跟随的扩展格;(4)在各单元格内填入运算表达式;(5)对报表进行扩展和计算,即可得到生成后的实际报表。该方法的步骤(l)中所述的"数据集"可以理解为一个由有列名和列数据类型的数据构成的二维矩阵,是报表数据的组织形式,如在关系数据库中使用SELECT语句返回的结果集(可以是多表叉乘的SELECT),数据集的行相当于数据表的一条记录,而列则对应了该数据表的字段。理传统工具难以处理的多数据集关联报表。但技术性较强的物理数据库结构对于业务人员经常是晦涩难懂的,这时人们釆用语义视图(逻辑数据集)的方法来映射物理数据结构,通过语义层使业务人员可以釆用自己熟悉的业务术语设计报表从而屏蔽专业的技术术语。但是,目前的语义视图的方法在单元格间引用时只能实现关系简单的引用,难以实现如跨不同主格范围引用等复杂关系的引用。例如,有些运算只能用单元格表达式来书写,比如同期比,即今年比去年同期。在语义层设计阶段,无法得知去年的数值将会被放在哪个单元格内,也就无从书写表达式,类似的运算还有很多。对于这种运算,就只有等到设计报表的时候由业务人员根据当前报表的情况输入表达式,但这种表达式往往是抽象难懂的,掌握起来很困难,有违语义层降低业务人员使用难度的设计初衷。
发明内容针对现有技术中存在的问题,本发明的目的是提供一种基于非线性报表生成方法的单元格引用方法,该方法能够降低非线性报表生成方法中对于复杂单元格之间引用的操作复杂度并提高报表设计效率。为了实现上述目的,本发明采用的技术方案是,一种基于非线性报表生成方法的单元格引用方法,包括如下步骤(1)在语义层的视图中为被引用字段和/或指标赋予别名,然后为需要进行引用的指标设置运算表达式,对被引用的字段和/或指标用别名表示;(2)在报表设计过程中,带有别名的字段或指标加入到报表的单元格时,其别名也同时被赋予相应的单元格,作为该单元格的别名;(3)按非线性报表运算规则扩展和计算报表。进一步,所述的别名在全语义层唯一,以"#"号字符为前缀,默认的命名格式为"#视图表名.字段/指标名"。单元格别名的地位和处理方法与单元才各坐标相同。进一步,步骤(2)中为单元格赋予别名的过程是自动完成的。当为单元格赋予过别名后,再引用该单元格时,即可以用别名引用又可以用单元格的坐标引用。进一步,步骤(3)中在报表计算过程中,对于使用别名引用的字段或指标,要找到该别名的单元格并引用它,寻找的过程为首先根据引用该单元格的表达式中的别名从其最近级别主格的子格中搜索;如果没找到,则从上一级主格的子格中继续搜索,以此类推,直到找到相应别名的单元格为止。在计算报表时,对于使用了别名引用的单元格,当找到并引用了该别名的单元格后,用与坐标引用的单元格完全相同的处理方法进行计算。本发明的效果在于,采用本发明所述的方法具有以下优点(1)能够使非线性报表生成方法可以基于语义层在报表设计阶段进行复杂单元格之间的引用,扩展语义层的功能范围;(2)*操作复杂度,提高报表设计的效率。图1是本发明所述的方法流程图;图2是本发明具体实施方式中生成的报表示意图。具体实施方式下面结合附图对本发明的实施方式进行详细描述。如图l所示,一种基于非线性报表生成方法的单元格引用方法,包括以下步骤。(1)在语义层的视图中为被引用字段和/或指标赋予别名,然后为需要进行引用的指标设置运算表达式,对被引用的字段和/或指标用别名表示。所述的字段是指数据库中的数据表中的列,支持别名。所述的指标是指由字段或指标计算出来的值。运算表达式中被引用的单元格也支持使用别名来表示,并且别名的地位和处理方法与普通的单元格坐标相同。关于"别名,,,是在语义层中增加对字段、指标和单元格别名的支持,即每个字段、指标和单元格都可以有两个名字,一个原名,一个别名。在语义层设计阶段,原名和别名都可以用来引用字段、指标或单元格。所述的别名在全语义层唯一。本实施例以生成如图2所示的报表为例。假设相关物理表的结构为createtable"CONTRACT11(-—合同表为描述方便,设上述数据表对应的语义视图及其字段的名称分别是表名和字段名后面的说明词。首先,新建"年份"指标"year(SIGNDATE),'和"月份"指标"month(SIGNDATE)"。在语义层的视图字段上,为"年份"指标赋予别名为"#合同表.年份",为"月份"指标赋予别名为"#合同表.月份",为"AMOUNT"字段赋予别名为"#合同表.金额"。本实施例中,别名以"#,,号为前缀,为避免别名重复,默认的别名格式为"#视图表名.字段/指标名"。当然,别名也可以由用户自己定义,只要保证别名在全语义层唯一即可。新建"同期比,,指标,运算表达式设置为"#合同表.金额/#合同表.金额[#合同表.年份-1,#合同表.月份O]",该表达式表示用当前的金额除以上一年同一个月的金额的结杲,即为同期比。其引用的字段和指标均用别名表(2)在报表设计过程中,将语义层视图中所需的字段或指标以某种方式C0NTRACTN0"C證(20),SIG飄TE"TIMESTAMP,CUSTOMERID"CHAR(10),TRANSPORTDATE"TIMESTAMPTRANSPORT"CHAR(10),TRANSP0RTMETH0D"CHAR(1)AMOUNT"DECIMAL(16,2),SALESMAN"CHAR(10),PAYMENT"C證(l),FINISHED"C證(l),PAYAMOUNT"DECIMAL(16,2)-一合同号-一签定日期—-客户编号-—到港时间-—港口—运输方案———金额-—卖方-—应付金额一-是否完成-—共付金额(如选出或分组)加入到报表单元格时,同时自动将字段或指标的别名赋予相应的单元格,作为该单元格的别名。本实施例中,^艮表设计过程如下首先将语义层视图中的"年份"指标和"月份"指标以分组方式分别加入(鼠标拖拽或单元格代码引用)到A2和B2单元格。完成该操作后,A2单元格的别名被自动赋值为"#合同表.年份",B2单元格的别名被自动赋值为"#合同表.月份"。然后将"金额"字段加入到C2单元格,加入方式选择"求和,,,加入后C2单元格的别名为"#合同表.金额";将"同期比"指标加入到D2单元格,加入方式为"取值,,。当单元格被赋予过别名后,再引用该单元格时,即可用别名引用又可以用单元格的坐标引用。最后填写列标题并设置格式,得到如下表所示的报表模板:ABCD1曰期月小计同期比2=分组;合同表;年份=分组;合同表;月份=求和;合同表;金额=取值;合同表;同期比其中,将A2单元格的主格设置为根格,B2的主格设置为A2,C2的主格设置为B2,D2的主格也设置为B2。所述的"根格"不是指A2格,可以理解为"A2左边的一格,,,以根格为主格的单元格在扩展时不受到条件限制,直接从数据库中读取数据列出。(3)按非线性报表运算规则扩展和计算报表。在报表计算过程中,对于使用别名引用的字段或指标,要找到该别名的单元格并引用它,寻找的过程为首先对被引用的单元格根据其表达式中的别名在其最近级别主格的子格中搜索;如果没找到,则从上一级主格的子格中继续搜索,以此类推,直到找到相应别名的单元格为止。所述的非线性报表运算规则为现有技术,具体可参加中国发明专利(公开号CN101021839A)文献。本实施例中,在报表计算过程中对D2单元格中的"同期比"指标运算表达式中引用的别名寻找该别名的单元格的具体过程如下。首先在其最近级别的主格B2的子格范围内寻找,即在C2和D2中寻找,显然能够找到别名为"#合同表.金额"的C2单元格,于是别名"#合同表.金额"就被引用为C2单元格。然后继续寻找"#合同表.年份"和"#合同表.月份"别名的单元格,显然在B2的子格范围内找不到。此时便将搜索主格向上提高一级,换成主格的主格,即A2。在A2子格范围内寻找,即在B2中寻找,可以找到别名为"#合同表.月份"的单元格B2,并进行引用。如此继续,在根格的子格范围内可以找到并引用别名为"#合同表.年份"的单元格A2。最后,表达式"#合同表.金额/#合同表.金额[#合同表.年份-1,#合同表.月份O]"完成引用后即等效于"C2/C2[A2:-1,B2:O]"。最后对报表进行扩展和计算,生成最终的报表。计算时,对于使用了别名引用的单元格,当找到并引用了该别名的单元格后,用与普通位置坐标引用的单元格完全相同的处理方法进行计算。本实施例中,最终生产的报表如图2所示。人员根据本发明的技术方案得出其他的实施方式,同样属于本发明的技术创新范围。权利要求1.一种基于非线性报表生成方法的单元格引用方法,包括如下步骤(1)在语义层视图中为被引用字段和/或指标赋予别名,然后为需要进行引用的指标设置运算表达式,对被引用的字段和/或指标用别名表示;(2)在报表设计过程中,带有别名的字段或指标加入到报表的单元格时,其别名也同时被赋予相应的单元格,作为该单元格的别名;(3)按非线性报表运算规则扩展和计算报表。2.如权利要求1所述的一种基于非线性报表生成方法的单元格引用方法,其特征在于所述的别名在全语义层唯一。3.如权利要求1或2所述的一种基于非线性报表生成方法的单元格引用方法,其特征在于所述的别名以"#"号字符为前缀。4.如权利要求3所述的一种基于非线性报表生成方法的单元格引用方法,其特征在于所述的别名默认的命名格式为"#视图表名.字段/指标名"。5.如权利要求1或2所述的一种基于非线性报表生成方法的单元格引用方法,其特征在于步骤(2)中所述的单元;f各别名的地位和处理方法与单元格坐标相同。6.如权利要求1所述的一种基于非线性报表生成方法的单元格引用方法,其特征在于步骤(2)中为单元格赋予别名的过程是自动完成的。7.如权利要求1或6所述的一种基于非线性报表生成方法的单元格引用方法,其特征在于步骤(2)为单元格赋予过别名后,需要再次引用该单元格时,用别名引用或者用单元格的坐标引用。8.如权利要求1所述的一种基于非线性报表生成方法的单元格引用方法,其特征在于步骤(3)中在报表计算过程中,对于使用别名引用的字段或指标,要找到该别名的单元格并引用它,寻找的过程为首先根据引用该单元格的表达式中的别名从其最近级别主格的子格中搜索;如果没找到,则从上一级主格的子格中继续搜索,以此类推,直到找到相应别名的单元格为止。9.如权利要求8所述一种基于非线性报表生成方法的单元格引用方法,其特征在于步骤U)中计算报表时,对于使用了别名引用的单元格,当找到并引用了该别名的单元格后,用与坐标引用的单元格完全相同的处理方法进行计算。全文摘要本发明公开了一种基于非线性报表生成方法的单元格引用方法,属于报表制作
技术领域
。在现有技术中,基于语义层的非线性报表生成方法只能实现关系简单的单元格之间的引用,难以实现如跨不同主格范围等复杂关系的单元格之间的引用。本发明所述的方法,首先在语义视图中为被引用的字段或指标赋予别名,然后为需要进行引用的指标设置运算表达式,对被引用的字段和/或指标用别名表示;在报表设计过程中,带有别名的字段和/或指标加入到报表的单元格时,其别名也同时被赋予与其对应的单元格;最后按非线性报表运算规则扩展和计算报表。采用本发明所述的方法能够降低非线性报表生成方法中对于复杂格间引用的操作复杂度并提高报表设计的效率。文档编号G06F17/30GK101266598SQ200810104740公开日2008年9月17日申请日期2008年4月23日优先权日2008年4月23日发明者蒋步星申请人:北京润乾信息系统技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1