电子表格系统及获取电子表格文档的快照/历史信息的方法
技术领域
本发明涉及电子表格应用,具体地说,涉及面向电子表格文档变化的电子表格应用,包括:面向变化的电子表格数据组织方法、获取指定时间的电子表格文档的快照的方法以及获取指定时间范围内的电子表格文档的历史信息的方法及相应的系统。
背景技术
目前,电子表格应用软件被广泛应用于许多领域。常见的应用是企业用于定期产生如财务方面的报表,每月、每周或甚至每天需要提交具有相似或相同模板的电子表格报表,会计也需要每月根据相同的模板建立薪水报表。
特别是在小型和中型企业里,由于系统资源的限制,通常使用电子表格应用程序来代替功能更强大但对系统资源要求更高的关系数据库来保存和管理数据。关系数据库的功能很强大,但是价格昂贵,开发和维护的费用都非常高,所以中小型企业有时会使用电子表格类软件进行数据的保存和维护。例如,在仓库管理的应用场景中,在传统的电子表格应用软件下,仓库管理员需要定期生成库存信息表以供查询。这至少存在两个问题,第一,查询的时间粒度有限。两次定期保存时间间隔之间的库存信息变化就将不会被查询到;第二,仓库管理员需要维护多个电子表格文档来保证过去一段时间内的库存信息查询的可能性。定时或不定时地将数据保存到电子表格中不只是上文的仓库管理场景的需要,研究人员也需要生成每次实验的表格;会计需要定期记录公司员工的薪水;教师也需要在每次测验后保存学生的分数等等,那么上述的问题在这些应用中都有可能发生。
目前,用户如果在上述情况下使用传统的电子表格应用,则常用的方法是生成模板、在电子表格文档中区域/页的拷贝/粘贴等,然后用户只能在模板的基础上分别提出常规的报表。对这些报表的查询/汇总是艰巨的工作,因为不同时期的数据是分开保存的,虽然这些数据都是关于同一件事情的。而且,这样的情况会经常发生。
在现有技术中,电子表格文档中的数据的有效变化通常是被丢弃的,因此电子表格文档只记录每一项的当前值。这样,不能方便地执行对于数据集合的一些有用操作。
专利号为5,906,078的美国专利“Version Management System”提供了一种在电子文档编辑软件中进行内容的版本控制的方法。该方法采用增量保存的方式,在电子文档编辑软件中保存文档内容的不同版本,并依据增量保存的内容生成不同版本,从而按照版本号对历史信息进行查询。然而,由于电子文档编辑软件有多种类型,如电子表格、电子胶片、电子字处理等,因此采用增量保存的方式保存电子文档内容的变化并不构成独立的语义。
专利号为5,449,180、5,303,146和6,438,565B1的三个美国专利“Systemand Methods for Improved Scenario Management in an ElectronicSpreadsheet”提供了改进的具有电子表格应用场景管理功能的方法和系统,这三个专利分别从不同方面描述了上述改进方法。在该方法中,用户首先在电子表格文档中定义指定区域及该区域内的单元格的基准,然后用户对指定区域中的值进行修改,电子表格应用自动将用户的修改与基准值进行比较,如有差异,则记录该变化;同时电子表格应用自动更新依赖这些修改的值的其它单元格的值,例如公式(formula)单元格的值。如果这些单元格的值被更新,则电子表格应用自动向用户提示,例如采用加亮的方式。此时,指定区域的当前值和与之关联的单元格的当前值被称为一个场景。此外,电子表格应用能够有效地记录这些场景并提供查询功能。
但是在上述专利提供的方法中,保存的电子表格文档内容的变化都不包含时间信息,因此对历史信息的查询也与时间无关。
专利号为5,926,822的美国专利“Transformation of Real Time Datainto Times Series and Filtered Real Time Data within a SpreadsheetApplication”描述了电子表格应用的一个扩展功能,可对实时数据进行处理,即扩展后的电子表格应用可以接收实时数据序列,并保存在计算机内存中。此外,还可利用电子表格应用中已有的公式功能,对保存在内存中的实时数据序列进行过滤和简单计算。虽然该专利处理的数据对象包括数据及其对应的时间,但是这个时间来自电子表格应用的外部。
为此,本发明将“时间”这一维度引入电子表格应用中,以有效地解决上述电子表格软件的应用中可能存在的问题。
发明内容
本发明的目的在于提供一种获取指定时间的电子表格文档的快照的方法,其中在电子表格文档中记录了对电子表格文档的有效更新,这样,在电子表格文档被更新(变化)时,不仅记录原有的内容,而且记录有效更新的内容以及与该有效更新有关的时间信息。
本发明的另一个目的在于提供一种获取指定时间范围内的电子表格文档的历史信息的方法,其中在电子表格文档中记录了对电子表格文档的有效更新。使用该方法所获取的历史信息,包含在指定时间范围内的有效更新的内容和与这些有效更新相关的时间信息,可以在电子表格软件中用作数据分析的数据源,用作电子表格中公式的输入等等。此外,也可以利用直观的图表来展示这些历史信息。
本发明的再一个目的在于提供一种面向变化的电子表格系统,以实现上述方法。
根据本发明的一个方面,提供了一种获取指定时间的电子表格文档的快照的方法,所述电子表格文档保存有电子表格的各个单元格的内容以及对各个单元格的有效更新,其中,所述有效更新包括对单元格的内容的有效更新以及与有效更新有关的时间信息,该方法包括以下步骤:
获得希望获取快照的电子表格文档的区域和时间戳;
查找所述区域中的各个单元格是否有已被保存的有效更新;
如果有,则获取所述区域中的各个单元格的对应于所述指定的时间戳的最新的有效更新;
将所获取的最新的有效更新应用于各自的单元格,以得到在所述指定的时间戳时的电子表格文档的快照;
如果所述区域中的各个单元格都没有已被保存的有效更新或对所述区域中的各个单元格已执行了上述获取最新的有效更新并将其应用于各自的单元格的步骤,则结束此次获取电子表格文档的快照。
优选地,在根据本发明的获取指定时间的电子表格文档的快照的方法中,所述与有效更新有关的时间信息是有效更新的发生时间。
优选地,在根据本发明的获取指定时间的电子表格文档的快照的方法中,所述电子表格文档将所述有效更新作为对应的所述单元格的附属信息、根据有效更新的发生时间按顺序进行保存。
优选地,在根据本发明的获取指定时间的电子表格文档的快照的方法中,所述有效更新还包括其与对应的单元格的绑定关系;所述电子表格文档将所述有效更新根据有效更新的发生时间按顺序并独立于所述单元格的内容进行保存。
优选地,在根据本发明的获取指定时间的电子表格文档的快照的方法中,所述有效更新还包括其与对应的单元格的绑定关系;所述电子表格文档将所述有效更新根据有效更新的发生时间按照时间戳并独立于所述单元格的内容进行保存。
优选地,所述获取所述区域中的各个单元格的对应于所述指定的时间戳的最新的有效更新的步骤包括:
对于所述各个单元格的每一个,在所述单元格的所有有效更新中进行扫描;
如果某个有效更新所对应的有效更新的发生时间小于所述指定的时间戳,且其后一个有效更新所对应的有效更新的发生时间大于所述指定的时间戳或者其后没有在时间顺序上更晚发生的有效更新,则这个有效更新是 所述单元格的对应于所述指定的时间戳的最新的有效更新;以及
如果发现所述单元格的对应于所述指定的时间戳的最新的有效更新,则停止扫描。
需要说明的是,在所述单元格的所有有效更新被有效的排列之后,例如按有效更新的发生时间进行排序之后,有时无需扫描所述单元格的所有有效更新就可以获得所述单元格对应于所述指定的时间戳的最新的有效更新。
优选地,在根据本发明的获取指定时间的电子表格文档的快照的方法中,由用户指定是对整个电子表格文档还是对某一表格、某一区域、某一列或某一单元格来记录有效更新。
根据本发明的另一个方面,提供了一种获取指定时间范围内的电子表格文档的历史信息的方法,所述电子表格文档保存有电子表格的各个单元格的内容以及对各个单元格的有效更新,其中,所述有效更新包括对单元格的内容的有效更新以及与有效更新有关的时间信息,该方法包括以下步骤:
获得希望获取历史信息的电子表格文档的区域、开始时间戳和结束时间戳;
查找所述区域中的各个单元格的位置并获取所述各个单元格的所有有效更新;
获得所述区域中的各个单元格在所述开始时间戳和所述结束时间戳之间的所有有效更新;以及
获取在上一步骤中所获得的各个有效更新所对应的单元格的内容和有效更新的发生时间,作为所述电子表格文档的历史信息。
优选地,在根据本发明的获取指定时间范围内的电子表格文档的历史信息的方法中,所述与有效更新有关的时间信息是有效更新的发生时间。
优选地,在根据本发明的获取指定时间范围内的电子表格文档的历史信息的方法中,所述电子表格文档将所述有效更新作为对应的所述单元格的附属信息、根据有效更新的发生时间按顺序进行保存。
优选地,在根据本发明的获取指定时间范围内的电子表格文档的历史信息的方法中,所述有效更新还包括其与对应的单元格的绑定关系;所述电子表格文档将所述有效更新根据有效更新的发生时间按顺序并独立于所述单元格的内容进行保存。
优选地,在根据本发明的获取指定时间范围内的电子表格文档的历史信息的方法中,所述有效更新还包括其与对应的单元格的绑定关系;所述电子表格文档将所述有效更新根据有效更新的发生时间按照时间戳并独立于所述单元格的内容进行保存。
优选地,将所述历史信息在电子表格软件中用作数据分析的数据源,用作电子表格中公式的输入等等。
优选地,以有效更新的发生时间为横轴,有效更新的单元格内容为纵轴,生成各单元格的历史信息的图表。
根据本发明的再一个方面,提供了一种面向变化的电子表格系统,包括:
表格数据输入/输出装置;
文档存储装置,用于存储多个电子表格文档,其中每个电子表格文档保存有相应的电子表格中各个单元格的内容以及对各个单元格的有效更新,其中所述有效更新包括对单元格的内容的有效更新以及与有效更新有关的时间信息;
更新判断装置,其在用户通过表格数据输入/输出装置从外部输入数据时确定数据是否是对电子表格的内容的更新,如果是,则将所述数据及其有关的时间信息作为该电子表格的有效更新保存在文档存储装置所存储的该电子表格对应的电子表格文档内;以及
更新查询装置,用于查询符合给定条件的有效更新。
优选地,在根据本发明的电子表格系统中,所述与有效更新有关的时间信息是有效更新的发生时间。
优选地,在根据本发明的电子表格系统中,所述更新判断装置将所述有效更新作为对应的所述单元格的附属信息、根据有效更新的发生时间按 顺序保存在对应的电子表格文档内。
优选地,在根据本发明的电子表格系统中,所述更新判断装置将所述有效更新根据有效更新的发生时间按顺序并独立于所述单元格的内容保存在对应的电子表格文档内,并在所述有效更新中包括该有效更新与对应的单元格的绑定关系。
优选地,在根据本发明的电子表格系统中,所述更新判断装置将所述有效更新根据有效更新的发生时间按照时间戳并独立于所述单元格的内容保存在对应的电子表格文档内,并在所述有效更新中包括该有效更新与对应的单元格的绑定关系。
优选地,所述系统还包括:一用户接口,用户通过该接口指定是对整个电子表格文档还是对某一表格、某一区域、某一列或某一单元格来记录有效更新。
优选地,所述系统还包括:快照生成器,用于根据所接收的请求生成指定时间的电子表格文档的快照。
优选地,所述系统还包括:数据分析展示器,用于根据所接收的用户请求,将历史信息,包含在指定时间范围内的有效更新的单元格的内容和与这些有效更新相关的时间信息,在电子表格软件中用作数据分析的数据源。
优选地,所述数据分析展示器为一图表生成器,用于根据所接收的请求,以有效更新的发生时间为横轴、有效更新的单元格的内容为纵轴,生成反映单元格历史信息的图表。
附图说明
通过参照下述详细的描述,并结合所附的附图,能更好地理解本发明,同时,能更容易对本发明做出更为全面的理解,并领会其中的诸多优点。附图中相同的符号表示相同或类似的组成部分,其中:
图1是根据本发明一优选实施例的面向变化的电子表格数据组织方法的示意图;
图2是根据本发明另一优选实施例的面向变化的电子表格数据组织方法的示意图;
图3是根据本发明再一优选实施例的面向变化的电子表格数据组织方法的示意图;
图4是根据本发明的一优选实施例的获取指定时间的电子表格文档快照的方法的流程图;
图5是根据本发明的一优选实施例的获取指定时间范围内的电子表格文档历史信息的方法的流程图;以及
图6是根据本发明的一个优选实施例的面向变化的电子表格系统的方框图。
具体实施方式
相信通过以下结合附图对本发明优选实施例的详细描述,本发明的上述和其它目的、特征和优点将会更加清楚明了。
本发明的基本思想是:在电子表格文档中通过记录每一次有效更新和有效更新的时间来提供时间这一维度,从而将电子表格文档扩展成与时间相关的文档,从而可以方便地获取电子表格文档在指定时间的快照和电子表格文档在指定时间范围内的历史信息。
图1是根据本发明一优选实施例的面向变化的电子表格数据组织方法的示意图。一般地,电子表格文档以单元格为单位保存内容,现有技术的电子表格文档在单元格中只保存当前的内容。而实际上,电子表格文档的当前内容可以在逻辑上分成两部分:原始内容以及对原始内容的有效更新。在本发明中,将原始内容以及对原始内容的有效更新保存在同一个电子表格文档中,其中,所述有效更新包括对单元格内容的有效更新以及与有效更新有关的时间信息。优选地,与有效更新有关的时间信息可以是有效更新的发生时间。
在图1所示的实施例中,有效更新是根据更新的发生时间按顺序作为对应的单元格的附属信息保存在电子表格文档中的,即,有效更新以单元 格为索引,作为单元格的附属信息与单元格的原始内容保存在一起;并且,对于同一个单元格,其有效更新是按照有效更新的发生时间的先后顺序排列的。例如,在基于XML的电子表格文档中,单元格的有效更新内容可与原始内容一起保存在同一个标签下,并由保留的子标签引导。此外,单元格的当前内容也可以保存在电子表格文档中。
图2示出根据本发明另一实施例的面向变化的电子表格数据组织方法的示意图。在该实施例中,有效更新是根据有效更新的发生时间按顺序独立于单元格的内容保存在电子表格文档中的,即,电子表格文档的有效更新独立于单元格的内容进行保存,并且这些有效更新按照有效更新的发生时间的先后顺序排列。采用这种方式,有效更新除了包含单元格内容的有效更新以及与有效更新有关的时间信息之外,还应包含该有效更新与对应单元格的绑定关系,即该有效更新对应于电子表格文档中的哪一个单元格。
图3示出根据本发明再一实施例的面向变化的电子表格数据组织方法的示意图。在该实施例中,有效更新是根据有效更新的发生时间按照时间戳独立于单元格的内容保存在电子表格文档中的,即,电子表格文档的有效更新独立于单元格的内容进行保存,并且这些有效更新按照对应的时间戳排列,也就是说,这些有效更新以时间戳为索引进行排列。采用这种方式,可以获知在某个时间戳有多少个有效更新,这样极大地方便了以后的查询。与图3所示的实施例类似,有效更新也应包含该有效更新与对应单元格的绑定关系,即该有效更新对应于电子表格文档中的哪一个单元格。
以下给出一个电子表格文档格式扩展的实例,以图1所示的保存有效更新的示例为例。本实例采用OASIS(Organization for the Advancementof Structured Information Standards,结构信息标准推进组织)定义的Office文件格式标准,则OASIS对于单元格的定义(扩展前)是:
<define name=”table-table-cell”>
<element name=”table:table-cell”>
<ref name=”table-table-cell-attlist”/>
<ref name=”table-table-attlist-extra”/>
<ref name=”table-table-cell-content”/>
<optional>
<ref name=”table-table-cell-updaterecord”/>
</optional>
</element>
</define>
而对optional字段进行扩展后,单元格的定义为:
<define name=”table-table-cell-updaterecord”>
<element name=”table:cell-content-update-list”>
<zeroOrMore>
<ref name=”cell-update-info”/>
</zeroOrMore>
</element>
</define>
<define name=”cell-update-info”>
<element name=”cell:update-info”>
<ref name=”current-value”/>
<ref name=”current-date”/>
<optional>
<ref name=”update-author”/>
…
</optional>
</element>
</define>
此外,需要指出的是,在本发明中用户可以指定是对整个电子表格文档还是对某一表格、某一区域、某一列或某一单元格来记录有效更新。这 样,用户可以根据需要,选择是对部分电子表格文档还是整个电子表格文档记录有效更新。在本发明中,有效更新是指经过用户确认的更新。有效更新是以电子表格文档的单元格为最小单位进行,只限于未经处理的数据,不包括衍生的数据,如图表、公式的运算结果等。在进行更新操作后,只有用户对该更新操作进行确认后才能成为有效更新,用户确认的方式可以是存盘操作或者其他操作。
通过以上描述可以看出,采用根据本发明上述实施例的方法,可以在电子表格文档中记录单元格的每一次有效更新,其中包含了时间信息,从而为电子表格文档的应用,如获取快照、历史信息的图表等,提供了基础。并且,上述实施例的方法可以根据用户的要求应用于整个电子表格文档或者一部分电子表格文档。
图4是根据本发明的实施例的获取指定时间的电子表格文档快照的方法的流程图。通过采用根据本发明的面向变化的电子表格数据组织方法,可以在一个电子表格文档中保存单元格的内容及有效更新,从而能够更方便地对单元格内容的集合执行有用的操作,例如获取指定时间的电子表格文档的快照。而在现有的电子表格应用中,要求定时记录同一模板的相似内容,这样的一组电子表格文档可以被认为是一组快照(或相片)。而采用根据本发明的面向变化的电子表格数据组织方法记录了电子表格文档的有效更新后,记录快照对应的时间间隔从由用户人工选择或者定时改进到了只要发生有效更新就记录,其时间粒度可以大大增强。两者对比,其变化相当于从一组照片变成了一段“视频”,即指定区域内发生的所有有效更新及其对应的有效更新时间都会被记录。当整个“视频”作为隐含的维度保存在电子表格文档中时,最近编辑的电子表格文档就可以看作是最近时间的快照。因此,可以将指定时间作为索引获取电子表格文档的快照。
如图4所示,在步骤400,用户指定希望获取快照的电子表格文档的区域和时间戳,其中该区域包括至少一个单元格。然后在步骤405和410,在电子表格文档中搜索该区域中的各个单元格,查找各个单元格是否有已被保存的有效更新。如果各个单元格都没有已被保存的有效更新,则结束 此次获取快照的过程。如果有,则在步骤415,扫描各个单元格的有效更新,获取对应于上述时间戳的最新的有效更新。根据本发明的面向变化的电子表格数据组织方法,这些有效更新都是根据时间排列的,因此对应于每个单元格,如果发现某个有效更新对应的有效更新的发生时间小于时间戳,且其后一个有效更新对应的有效更新的发生时间大于时间戳或者其后没有有效更新,那么这个有效更新就是相对于时间戳最新的有效更新。然后在步骤420,将通过步骤415获得的有效更新应用于各个单元格,此时,各个单元格就恢复在指定的时间戳时的保存内容。这样处理了各个单元格后,就获得了电子表格文档在用户指定区域在指定时间的快照。
通过以上描述可以看出,采用本实施例的方法,可以方便地从使用本发明方法的电子表格文档中获得指定区域在指定时间的快照。
由于电子表格文档被扩展成与隐含的时间维度有关的,因此可以获取指定区域的与时间有关的电子表格文档的历史信息,这个历史信息记录了指定区域的电子表格文档在一段时间范围内的变化,可以将该历史信息用作电子表格应用中数据分析功能的数据源,例如公式的输入,用于做回归分析等,还可以用图表或其它明显的方式表示该历史信息。例如,以有效更新的发生时间为坐标横轴、有效更新的单元格内容为坐标纵轴,生成反映各单元格的内容的历史信息的图表。
图5是根据本发明的一个实施例的获取指定时间范围内的电子表格文档历史信息的方法的流程图。在本实施例中,指定区域是电子表格文档的一个单元格。如图5所示,在步骤500,用户指定希望获取历史信息的单元格的位置以及开始时间戳、结束时间戳,其中由开始时间戳和结束时间戳确定希望获取的历史信息的时间范围。然后在步骤505,在电子表格文档中查找该单元格的位置,并得到该单元格对应的所有有效更新。由于有效更新是根据时间排列的,因此在步骤510,可以获取在开始时间戳和结束时间戳之间的所有有效更新,从而在步骤515中,获取在步骤510中获得的有效更新中的每一个有效更新的单元格内容和有效更新的发生时间作为所述电子表格文档的历史信息,最后在步骤520中,将所述历史信息在 电子表格软件中用作数据分析的数据源,用作电子表格中公式的输入等等。优选地,以有效更新的发生时间为横轴,有效更新的单元格内容为纵轴,生成各单元格的历史信息的图表。
此外,在根据本发明的获取指定时间范围内的电子表格文档历史信息的方法中,还可以由用户指定一个包含多个单元格的区域,对指定区域中的每一单元格获取指定时间范围内的电子表格文档历史信息。
图6是根据本发明的一个实施例的面向变化的电子表格系统。如图6所示,该系统包括:表格数据输入/输出装置600;文档存储装置620,用于存储各电子表格文档,其中每一文档中记录了一相应电子表格中各单元格的内容、有效更新以及有效更新的时间;更新判断装置610,当用户通过表格输入/输出装置600从外部输入数据时,更新判断装置610确定数据是否是对电子表格的有效更新,如果是有效更新,则将该数据按有效更新存储到文档存储装置620中该电子表格所在的文档内;以及,更新查询装置640,根据接收到用户请求,查找指定位置的单元格及其所有的有效更新。在一文档中,如果在某个单元格上有多个有效更新,这些有效更新将按照时间进行排列,例如按照数据存储时间的先后顺序或者根据数据存储时间按照时间戳排列等。
此外,该系统还可以包括一用户接口630,用户可以通过该接口指定是对整个电子表格文档还是对某一表格、某一区域、某一列或某一单元格来记录有效更新;快照生成器650,根据接收到用户请求生成快照;数据分析展示器660,根据接收到的用户请求,将历史信息,包含在指定时间范围内的有效更新的内容和与这些有效更新相关的时间信息,在电子表格软件中用作数据分析的数据源,用作电子表格中公式的输入等等。优选地,该数据分析展示器是一图表生成器,以有效更新的发生时间为横轴,有效更新的单元格内容为纵轴,生成各单元格的历史信息的图表。
通过以上描述可以看出,采用本实施例的系统,可以存储单元格的每一次有效更新以及有效更新的时间,于是为以后对电子表格进行的基于时间的查询提供了方便。