[发明专利]报表实例存储方法及装置、报表读取方法无效
申请号: | 200910012786.8 | 申请日: | 2009-07-24 |
公开(公告)号: | CN101615187A | 公开(公告)日: | 2009-12-30 |
发明(设计)人: | 柴永春;邢铁军;张霞;马帅 | 申请(专利权)人: | 东软集团股份有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京集佳知识产权代理有限公司 | 代理人: | 赵景平;逯长明 |
地址: | 110179辽*** | 国省代码: | 辽宁;21 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 报表 实例 存储 方法 装置 读取 | ||
技术领域
本发明涉及数据存储技术,具体涉及一种报表实例存储方法及装置、报表读取方法。
背景技术
在报表产品领域中,都不可避免地需要报表实例的存储。所谓报表实例是指报表定义经过数据填充后产生的对象。一般情况下,报表实例对象会比报表定义对象大很多。
如下表1所示为一种报表定义:
表1
对上述报表定义填充后得到报表实例如下表2所示:
表2
报表实例一般是报表单元格的集合(或其它最小元素),单元格中可以获取该单元格的专有属性,如字体、字号、背景色等等,有些单元格的属性可能多达几十种,如何在内存中有效地组织与存储这些属性,会极大影响到运算效率和存储空间的占用,是报表产品效率提升的关键技术。
在现有技术中,通常报表实例的每个单元格中都存储了该单元格相关的所有属性信息,这些属性都是单元格独有的属性。
这种存储方式结构简单清晰,也满足了报表实例存储的需求,但是由于属性为单元格独有,单元格间的共同属性不能共享,这样浪费了很大的存储空间,当报表数据量很大时,很有可能造成内存耗尽,会严重影响报表产品的性能。
发明内容
本发明实施例提供一种报表实例存储方法及装置、报表读取方法,以节省内存资源,提高内存使用效率。
为此,本发明实施例提供如下技术方案:
一种报表实例存储方法,包括:
将报表对象分为三层结构,分别为:模板层、定义层和实例层;
将报表实例单元格的所有默认属性存储到所述模板层的报表默认对象中的默认单元格中;
将所述报表实例单元格对应的报表定义单元格存储到所述定义层中的报表定义对象中,所述定义单元格中存储所述报表实例单元格的非默认的静态属性;
将所述报表实例单元格存储到所述实例层中的报表实例对象中,所述报表实例单元格中存储自身的动态属性。
优选地,所述报表默认对象、所述默认单元格均为单例模式,所有报表实例单元格共享所述默认单元格的默认属性。
优选地,所述方法还包括:
对每个定义单元格设置一个指向所述默认单元格的指针;
对每个实例单元格设置一个指向所述定义单元格的指针。
优选地,多个实例单元格共享同一个定义单元格的非默认的静态属性。
一种报表实例存储装置,包括:模板层、定义层和实例层;
所述模板层包括报表默认对象,用于存储报表默认单元格,所述报表默认单元格中存储报表实例单元格的所有默认属性;
所述定义层包括报表定义对象,用于存储报表定义单元格,所述定义单元格中存储报表实例单元格的非默认的静态属性;
所述实例层包括报表实例对象,用于存储报表实例单元格,所述实例单元格中存储报表实例单元格的动态属性。
优选地,所述报表默认对象、默认单元格为单例模式,所有报表实例单元格共享所述报表默认对象中的默认单元格中的默认属性。
优选地,每个定义单元格包括一个指向所述默认单元格的指针;每个实例单元格包括一个指向所述定义单元格的指针。
优选地,多个实例单元格共享同一个定义单元格的非默认的静态属性。
一种报表实例读取方法,包括:
读取报表实例对象中所述实例单元格的属性;
如果读取的结果为空,则获取所述报表定义对象中对应的定义单元格,并读取所述定义单元格的非默认的静态属性;
如果读取的结果为空,则获取所述报表默认对象中的默认单元格,并读取所述默认单元格的默认属性;
输出所述实例单元格的属性。
优选地,所述获取所述报表定义对象中对应的定义单元格具体为:根据所述实例单元格中的指针获取所述指针指向的报表定义对象中对应的定义单元格;所述获取所述报表默认对象中的默认单元格具体为:根据所述定义单元格中的指针获取所述指针指向的报表默认对象中的默认单元格。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东软集团股份有限公司,未经东软集团股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910012786.8/2.html,转载请声明来源钻瓜专利网。