一种高效复杂报表解析引擎及其解析方法技术

技术编号:8532559 阅读:238 留言:0更新日期:2013-04-04 15:24
本发明专利技术提供了一种高效复杂报表解析引擎及其解析方法,其通过分组运算解析、多源交叉运算解析及动态片间运算解析,从而能根据报表模板规则中配置的数据源、聚集函数、分组函数、计算表达式,属性表达式、显示表达式、统计图表达式等进行一一动态解析,完成报表的数据获取、分组、汇总计算、片间数据计算、统计图数据钻取等的高效复杂报表解析引擎及其解析方法。通过该引擎方法能最终生成一张计算好的二维的数据报文。将数据报文发送到前端报表展示工具,就可以渲染出一张用户所需要报表,并可导出该报表。解决了用户不用编程可以制作出复杂报表的应用需求。

【技术实现步骤摘要】

本专利技术涉及计算机报表处理领域,尤其是指。
技术介绍
报表就是用表格、图表等格式来动态显示数据,在没有计算机以前,人们利用纸和笔来记录数据,比如民间常常说的豆腐帐,就是卖豆腐的每天将自己的卖出的豆腐记在一个本子上,然后每月都要汇总算算。这种情况下,报表数据和报表格式是紧密结合在一起的,都在同一个本子上。数据也只能有一种,几乎只有记账的人才能理解的表现形式,且这种形式难于修改。当计算机出现之后,人们利用计算机处理数据和界面设计的功能来生成、展示报表。计算机上的报表的主要特点是数据动态化,格式多样化,并且实现报表数据和报表格式的完全分离,用户可以只修改数据,或者只修改格式。报表工具的核心在于提高报表开发效率和后期维护性,提高用户体验,减少开发成本。报表工具的最大价值在于学习成本低,让业务人员实现做报表,甚至快速构建报表展现系统。如果一个报表工具能让最终业务人员容易学习和使用,一个企业所有信息系统就可以采用同一个报表工具,没有必要每个信息系统用一个报表解决方案。很多人对于报表还有个偏见,认为同样的报表,Excel几乎都能做出来,为什么还要花大量的人力物力去开发专门的报表工具呢?因为Ex本文档来自技高网...

【技术保护点】
一种高效复杂报表解析方法,其特征在于:它包括,A)、分组运算解析,根据报表规则模板设置获取分组表达式,对报表原数据按照设置的规则进行的分组计算,从而得到包含各自组内所有行数据集的数据分组的步骤;B)、多源交叉运算解析,对多个数据源间交叉计算的报表确定计算的数据范围,对报表中单元格计算表式所在的列进行横向扩展,所在的行进行纵向扩展进行计算的步骤;C)、动态片间运算解析,对动态报表扩展单元格中属于引用单元格的表达式进行判断,然后获取引用单元格,对存在的既纵向扩展又横向扩展的单元格的函数表达式全部进行计算的步骤。

【技术特征摘要】
1.一种高效复杂报表解析方法,其特征在于它包括, A)、分组运算解析,根据报表规则模板设置获取分组表达式,对报表原数据按照设置的规则进行的分组计算,从而得到包含各自组内所有行数据集的数据分组的步骤; B)、多源交叉运算解析,对多个数据源间交叉计算的报表确定计算的数据范围,对报表中单元格计算表式所在的列进行横向扩展,所在的行进行纵向扩展进行计算的步骤; C)、动态片间运算解析,对动态报表扩展单元格中属于引用单元格的表达式进行判断,然后获取引用单元格,对存在的既纵向扩展又横向扩展的单元格的函数表达式全部进行计算的步骤。2.如权利要求1所述的一种高效复杂报表解析方法,其特征在于所述A具体包括步骤, Al)、元单元格计算,以遍历方式根据元单元格地址取得元单元格对象,如果元单元格对象不存在,则获取下一个元单元格对象,如果元单元格对象存在,则获取当前元单元格对象,并判断当前单元格对象的表达式是否是为分组表达式,是则继续步骤,否则结束本次计算继续遍历; A2)、解析分组表达式,根据获取的分组表达式,获取目标数据集名称、目标分组字段及过滤表达式,继续步骤; A3)、目标数据集存在判断,根据取得的目标数据集名称,从报表上下文中尝试加载数据集,若加载不到数据集,直接此处返回步骤Al继续遍历,若加载到数据集则继续步骤; A4)、分组目标列存在判断,根据目标分组字段,判断加载到的数据集是否存在当前分组字段,若不存在,直接返回步骤Al继续遍历,若存在则遍历目标数据集,根据分组字段在当前数据列取得对应的数据值; A5)、分组规则匹配计算,解析分组规则表达式,取得分组规则,然后根据取得的数据值输入到分组规则进行运算,得出分组名及分组数据集; A6)、设置分组,根据分组规则匹配获取分组名为键,以分组数据集为值,添加到分组存储区中,进入下一数据行分组计算,直到所有数据行都计算完毕,结束分组计算。3.如权利要求1所述的一种高效复杂报表解析方法,其特征在于所述B具体包括步骤, BI)、交叉单元格运算,根据输入的单元格,判断当前单元格所在的行是否存在纵向扩展,所在的列是否存在横向扩展,存在则该单元格为交叉单元格,继续步骤,不存在则直接结束本次解析; B2)、数据集光标是否更改,根据输入的交叉单元格取得交叉单元格的计算表达式,根据计算表式,取得当前计算所在行所在列的数据值,判断是否需要设置计算所在目标数据集的位置,若不需要,则返回步骤BI,需要则继续步骤; B3)、设置左主格数据集,获取交叉单元格所在行最左边的计算单元格并设置为左主格数据集; B4)、判断当前计算光标是否设置到左主格数据集,如果是则需要获取交叉单元格所在列最顶上的计算单元格,设置上主格数据为当前运算光标;否则求左主格数据集与上主格数据集的交集,并设置为当前运算目标数据光标进入下一次迭代计算,直到所有单元格计算完成。4.如权利要求1所述的一种高效复杂报表解析方法,其特征在于所述C具体包括步骤, Cl)、片间计算表达式判断,根据输入的单元格,获取当前单元格计算表达式,判断计算表达式是否属于引用单元格表达式,若不是则直接结束本次解析,若是则继续步骤; C2)、预编译,对输入的引用单元格表达式进行表达式预编译解析,包括对引用单元格合法性判断及引用初始化计算,而后继续步骤; C3)、语法解析,将预编译中间结果推送到解析引擎进行解析取得函数表达式,然后获取引用单元格,若获取失败则直接结束本次解析,成功则继续步骤; C4)、根据上一步获取引用单元格中的函数表达式进行运算,根据获取的引用单元格,判断当前单元格是否已经计算,若是则直接结束本次解析,否则继续步骤; C5)、是否为扩展单元格,判断引用单元格是否为扩展单元格,若是则保存扩展单元格ID与元单元格的对应关系,并将当前扩展单元格加入到未计算单元格堆栈中;否则保存单元格ID与当前单元格已计算出来的值的对应关系后,进入下一次迭代计算,直到所有单元格计算完毕,然后从未计算单元格堆栈一个个取出进行计算,如果还是无法计算,抛出计算异常并终止计算。5.一种高效复杂报表解析引擎,其特征在于它包括, 分组运算解析组件,用于根据报表规则模板设置获取分组表达式,对报表原数据按照设置的规则进行的分组计算,从而得到包含各自组内所有行数据集的数据分组; 多源交叉运...

【专利技术属性】
技术研发人员:施明泰李功新陈谋坤林开雄林立陈书亮
申请(专利权)人:厦门亿力吉奥信息科技有限公司国家电网公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1