背景技术
电子制表软件或应用程序是相当众所周知和有用的工具。典型的电子制表应用程序通过捕捉、显示、以及处理安排成行和列的数据来模拟具体表格。列和行的交界处为单元。表格内的单元可包含数字、字符串、错误值、或空白值。此外,单元还可包含可对其它单元中数据操作并显示结果的公式。这些公式使用户能创建帮助用户使用数据的计算和商业逻辑。
公式从表格中的各区域引入数据。为了将数据引入操作,表格通常指定公式将对其操作的一个数据集。不幸的是,目前的电子制表应用程序在它指定在公式中使用的数据块时具有某些重大缺陷。
在当前的电子表格中,数据的指定可用几种不同方法来完成。首先,用户可采用对单元“范围”的“引用”。引用是对一数据集的指针,它使用由单元坐标指定的数据在电子表格内的位置来指定数据块。单元范围是由表格内坐标指定的连续块中的一个或多个单元。例如,在微软Excel电子制表应用程序中,用户可通过行数和列字母来指定单元。用户可使用像冒号(:)的运算符来指定多个单元以表示一个范围。有或无运算符的行数和列字母,用作数据的位置坐标。使用行数、列字母、和运算符的组合,用户可指定电子表格内的一个数据块。当前电子表格内的典型公式可以是“=AVERAGE(C6 C18)”,它计算从单元C6到C18的单元范围内的数据平均值。
然后,用户可采用一命名特征来引用具有“名字”或在“经命名范围”内的数据。在诸如微软Excel电子制表应用程序的某些电子制表应用程序中的命名特征,使用户能创建用于特定单元范围或公式的名字。实质上,用户用某坐标来选择单元范围。用户指示电子制表应用程序“命名”该单元范围。然后电子制表应用程序将该名字链接到具有某些坐标的单元范围。一旦用户已创建了单元范围的名字,用户可使用公式内的名字来引用具有某些坐标的数据。例如,用户可对单元范围C6到C18创建称为“Heights”的名字,并使用该名字来在诸如“=AVERAGE(Heights)”的公式内指出该单元范围。
随后,用户可采用一自然语言公式(NLF)。NLF是一种通过位于接近电子表格内数据的单元中的用户创建标签来引用数据的手段。用户可将一数据标签置入电子表格,诸如一列或行的标题。然后用户可在公式内使用该标签。电子制表应用程序确定在电子表格内哪些单元由该标签描述,并将所述单元解析到单元范围内以在公式中使用。因而,如果用户在单元C5-C18中具有值“Heights”、“26”、“30”、“22”、“27”等,则用户可在公式内引用“Heights”。电子制表应用程序可将所需单元范围解析为单元C6-C18。
最后,用户可采用引用“函数”。该引用函数不是引用,而是向数据或特定数据段返回引用的过程。返回引用的过程的操作根据用户在输入函数时键入的自变量集进行调整或改变。自变量使电子制表应用程序能确定返回哪些单元。
返回引用的函数的两个示例是在微软Excel电子制表应用程序中提供的“OFFSET”函数和“GETPIVOTDATA”函数。OFFSET函数返回对来自单元或单元范围的指定数量行和列的范围的引用。来自OFFSET函数的返回引用可以是单个单元或一单元范围。OFFSET函数使用户能输入指定要返回的行数和列数的自变量。
另一方面,“GETPIVOTDATA”函数旨在使用户能更简便地引用PivotTable表格中的单个单元数据。从GETPIVOTDATA函数中返回的数据在基于PivotTable表格的数据得到刷新时(被更新以结合新的数据值)不作改变。GETPIVOTDATA函数通过使用PivotTable表格的元数据来寻找单个单元中的数据。元数据是对应于数据的“项”和“域”的“名字”,而与数据坐标不同。“项”是类似于表格中行标题或列标题的PivotTable表格中的计算机生成标签。“域”是可结合和/或描述一个或多个项的计算机生成标签。域类似于表格中覆盖数据的若干行或列的标题。作为GETPIVOTDATA函数的一个示例,通过在公式中键入“=GETPIVOTDATA(“Height”,Sheet1’$A$3,“Person”,“John”)”用户可请求在PivotTable表格中与John的高度相关的数据,其中“John”是称为“Person”的域中的一个项。GETPIVOTDATA函数公式使得PivotTable表格中的数据能不破坏被返回引用而移到不同单元中,因为被返回引用是基于单元的元数据而非单元的位置。
在所有上述在电子表格应用程序中指定数据的方法中都存在着重大缺陷。所有上述方法都不能调整以指定包括添加数据,因为某种方法都不能解释用户想要将添加数据包括到指定中的意图。当包含用户数据的单元范围因为新数据的添加而改变时,使用上述用于指定数据的方法的公式必须手动地改变来反映单元范围的改变。如果指定未获更新则引入错误,因为公式不再包括必须的数据单元。
例如,如果用户需要获得列C中数据的当前平均值,用户可输入公式“=AVERAGE(C6 C18)”,其中列C中的所有数据位于单元C6到C18内。用户将期望公式返回列C中数据的平均值。现在,如果用户手动地或通过某些操作将数据添加到列C的单元C19到C22中,用户可能仍然期望已输入的公式能返回列C中所有数据的平均值。不幸的是,该公式不会像用户期望的一样进行操作,因为公式中的单元范围将仍然只平均单元C6到C18内的数据,并因而遗漏了单元C19到C22中的数据。这些情形需要用户手动改变公式中单元范围的坐标,因为电子制表应用程序不能确定用户的期望是否总是包括引用中的新数据。因而,用户必须手动编辑公式为“=AVERAGE(C6 C22)”。当用户有很多带着频繁变化数据的公式时,这种编辑是困难或不可能的。当前可用的所有类型的引用(包括通过坐标、命名范围、NLF、以及返回引用的函数对单元的引用)都因不能更新单元范围而不利。
此外,上述命名特征的另一个缺陷是用户必须手动创建并维护每个“已命名范围”。例如,用户必须首先创建单元C6到C18中的heights列表,然后创建指定数据的称为“Heights”的命名范围。不幸地是,当用户更新数据时,例如如果用户在单元C9到C22中添加数据,用户必须手动地更新该命名范围以包括从C6到C22的所有单元。
还有,NLF有助于解决命名范围的部分问题,但却引入了其它问题。NLF常常是意思含混的。如果电子表格内的两个标签具有相同名字,或者一个标签可描述列和行中的数据,则该NLF可指定一个与用户期望不同的单元范围。例如,NLF引用可指向具有第二个标签的其它单元范围,或指向数据行而非用户期望的数据列。
此外,用户的标签输入与电子制表应用程序选定的单元范围之间的关联可在创建或改变NLF(而非标签或数据)时推断。因而,在某些NLF中使用的标签可指向一单元范围,而在其它NLF中使用的同一标签可指向完全不同的单元范围。例如,如果用户输入公式“=AVERAGE(Heights)”,其中标签“Heights”在单元C5中而数据位于单元C6到C18中(在单元19中无数据),用户将期望该公式返回在以字“Height”开始的列中数据的平均值。现在,如果用户手动地或通过某些操作将数据添加到列C单元C19到C22,用户可能仍然期望“Heights”指向以“Heights”开始的列中的所有数据。不幸的是,该公式未象用户期望的一样工作,因为该公式中的单元范围将仍然仅平均单元C6到C18内的数据,并因而遗漏了单元C19到C22中的数据。然而,如果用户在将数据添加到单元C19到C22之后在另一单元中输入完全一样的公式,则用户将平均在单元C6到C22的数据。因而,用户可具有看起来具有完全相同NLF的两个公式,但一个会返回正确结果(等于“=AVERAGE(C6 C22)”),而另一个会返回不正确结果(等于“=AVERAGE(C6C18)”)。因而,用户采用NLF具有不能明确知道公式引用哪些单元的问题。
还有,像OFFSET和GETPIVOTDATA的返回引用的函数具有某些其它限制。返回引用的函数不随着电子表格中数据的改变进行调整。例如,返回引用的函数在项被重命名或移动时不作调整。例如,如果你将该人名从“John”改为“Fred”,用以下方式“=GETPIVOTDATA(“Height”,Sheet1’$A$3,“Person”,“John”)”返回对John高度的引用的GETPIVOTTABLE函数将不作更新。
类似地,OFFSET函数可通过寻找在自变量中指定的单元并将一些行和列从指定单元移到所需单元来返回对所需单元的引用。如果指定单元和所需单元之间的行或列被插入或删除,或者如果指定单元或所需单元移动,则OFFSET函数将返回不正确的引用。该OFFSET函数不能调整在电子表格中移动的行数和列数以寻找所需单元。
GETPIVOTDATA函数还可返回仅对单个单元的引用。对于要引用多个单元的用户,用户必须输入许多GETPIVOTDATA函数,这是不便使用的。例如,用户可能想要平均列C中来自PivotTable表格的结果数据。该列C中的数据可驻留在单元C6到C18。为了使用如果数据在PivotTable表格刷新期间移动而调整的GETPIVOTDATA函数引用,用户必须对从C6到C18的每个单元输入一个GETPIVOTDATA函数。用户必须创建看起来如下的一个自变量字符串:
“=AVERAGE(GETPIVOTDATA(“Height”,Sheet1!$A$3,“Person”,“John”),
GETPIVOTDATA(“Height”,Sheet1!$A$3,“Person”,“Pam”),
GETPIVOTDATA(“Height”,Sheet1!$A$3,“Person”,“Bill”),
GETPIVOTDATA(“Height”,Sheet1!$A$3,“Person”,“Fred”)”使用返回引用的函数该公式随着引用数据的量的增长变得非常长和密集。由于公式的长度,创建和编辑带有返回引用的函数的这些公式是乏味并耗时的。
具体实施方式
此后将参阅其中示出本发明各实施例的附图来更全面地描述本发明。然而,本发明可以许多不同形式体现且不应被解释为受限于在此陈述的各个实施例。相反,提供这些实施例并对其进行详细讨论是为了使本说明书全面和完整并把本发明的范围全部传达给本领域技术人员。
一般而言,本发明各实施例涉及电子制表程序内的结构化名字语法,它基于上下文而非单元坐标(即“C6”或“D3 D12”)或索引来引用数据,但仍然是引用而不是函数。本发明各实施例包括用于引用数据项的新结构化引用,用于创建结构化引用的方法,以及用于实现结构化引用的方法。
本发明可在由一个或多个计算机或其它装置执行的诸如程序模块的计算机可执行指令的一般环境中进行描述。一般而言,程序模块包括完成特定任务或实现特定抽象数据结构的例程、程序、对象、组件、数据结构等。通常,在各个实施例中可组合程序模块的功能或按需将其发布。
具有本发明各方面的电子制表应用程序100实施例如图1A和1B所示。该示例性电子表格100包含具有名字“Table1”104的表格102。该表格102有4列106和7行108。用户可创建指向示例性电子表格100的数据结构的结构化引用。结构的或结构化引用是对电子表格中一个或多个数据项的引用,它基于诸如列、行、单元集等而不是单元范围的电子表格数据的结构。该结构化引用可使用诸如列名、行名、数据集名字等的结构的元数据来确定引用的结构。在某些实施例中,元数据可以是用户创建的名字,诸如表格名、列标题名、行标题名等。
一数据结构如结构化引用所述地引用电子表格内的数据集。数据结构可包括列、行、表格、列表、分别的电子表格、分别的工作簿、成员、PivotTables、或由行或列的集定义的数据部分等。在本发明各实施例中,数据结构包含占用所述数据结构之一的单元或单元组。该数据结构中的单元组可以是不受限制的。换言之,单元组无需具有指向数组开始和结束的两个单元的引用。
在本发明各实施例中,用户可细述有助于电子制表应用程序标识数据结构的语义指定。该电子制表应用程序可创建指向数据结构的结构化引用。在本发明各实施例中,语义指定指向由用户输入的语言描述符,它是像用户创建的列标题名的数据结构的元数据名字。数据结构在以下进行更全面描述。上下文信息指电子制表应用程序可用来确定结构化引用应当对其应用的数据结构。在本发明各实施例中,用户输入的语义指定使电子制表应用程序能产生一个上下文信息集。该上下文信息可以是描述一项或多项数据的一个或多个语义指定。在本发明各实施例中,上下文信息是用户创建的,诸如列标题名或用户定义的表格名。在其它实施例中,可提供上下文信息,诸如当电子制表应用程序将指定为PivotTables时上下文信息为“pivotable1”或“pivottable23”。因而,语义指定是由用户提供给电子表格的语言描述符,而上下文信息是以语义指定为名字的在电子表格内表征数据结构的电子表格段。此后,语义指定和上下文信息将几乎可互交换地用来描述由用户提供或由电子制表应用程序使用的用来标识数据结构的语言标识符。
本发明使用明确的元数据。在本发明各实施例中,在创建结构化引用中仅可确定明确语义指定的元数据。此外,引用所指向数据的本质和内容可基于工作簿内引用所指向的结构以及语义指定的文字而明确地确定。
例如,参照图1A,用户可能想要在列112内使用该数据。用户可将该语义指定称为“Height”。电子制表应用程序可在电子表格中找到“Height”。电子制表应用程序可认出“Height”是列112的列标题名110。因而,“Height”是电子表格中的一段上下文信息,因为作为列标题名的“Height”描述列112中的数据。列112是数据结构。因而,如果用户在公式中将语义指定称为“Height”,则电子制表应用程序确定用户想要使用列112中的数据。然后电子制表应用程序可创建对列112的结构化引用、数据结构从而公式将在计算中使用来自列112的数据。
在本发明各实施例中,用户可创建结构化引用。参照例如图1A,使用语义指定“Table1[Height]”创建指向列112中数据的结构化引用,如加亮显示的列112中所示。使用作为表格名104的语义指定“Table1”可创建指向如图1A所示整个表格102的数据结构的结构化引用。对作为行标题名114的“Table1[Fred]”的语义指定可创建指向以“Fred”为行标题名114的加亮显示的行116的数据结构的结构化引用。如果用户想要指向单个数据单元,则用户可使用指向单元的行标题名和列标题名的语义指定。所提供的各个示例显示引用被置于方括号中,像“[Fred]”。使用方括号有助于电子制表应用程序将输入标识为具有相关结构化引用的语义指定。方括号仅是在电子表格中使用的一种示例性语法。本领域技术人员将理解,其它类型的语法可被用来标识语义指定和相关结构化引用。
用户可在公式中采用结构化引用。例如,用户可在电子表格中输入公式120,如图1A所示。公式120计算平均值。所输入的公式120使用两个语义指定。首先,公式120使用指向表格102的语义指定“Table1”,以及指向列112的“Height”。电子表格将寻找与语义指定相关的上下文信息以将结构化引用映射到数据结构。一结构化引用可映射到表格102。另一结构化引用可映射到列112。因而,公式120将计算标为“Table1”104的表格102的具有列标题名“Height”110的列112内所有数据的平均值。来自平均值计算120的结果126将在图1B中示出。如本示例性实施例所示,用户无需提供指向电子表格内数据的单元范围。相反,用户可采用电子表格中的语义指定来指向电子表格内的数据。
此外,本发明各实施例可单独指向结构的一部分,包括结构的数据、标题、总值或小计,或可结合该数据的其它部分指向结构的各部分。因而,在一实施例中,用户可通过使用一特定语义指定来仅指向给定列的总值。例如,指向“总值”结构的特定语义指定可如下“Table1[Height,[#Total]]”。在此,用于返回总值的语义指定通过使用符号(#)与列名进行区分,这向电子制表应用程序表明该指定是结构的一部分而不是列名。
本发明可在其中实现的适当操作环境的实施例如图2所示。操作环境仅是适当操作环境的一个示例,且并非旨在提出对本发明的使用范围或功能的任何限制。其它众所周知的适合用于本发明的计算系统、环境、和/或配置包括,但不限于,个人计算机、服务器计算机、手持式或膝上型装置、多处理器系统、基于微处理器系统、可编程消费电器、网络PC、小型计算机、大型计算机、包括以上系统或装置的任一种的分布式计算环境等。
参照图2,用于实现本发明各实施例的示例性计算环境包括诸如计算装置200的计算装置。在其最基本配置中,计算装置200通常包括至少一个处理单元202和存储器204。取决于计算装置200的准确配置和类型,存储器204可以是易失性的(诸如RAM)、非易失性的(诸如ROM、闪存等等)、或两者的某些组合。计算装置200的最基本配置由虚线206在图2中示出。此外,装置200还可具有附加特征或功能。例如,装置200还可其它存储器(可移动和/或不可移动)包括,但不限于,磁盘/带或光盘/带。这种其它存储器在图2由可移动存储器208和不可移动存储器210示出。这种计算机存储介质包括以用来存储诸如计算机可读指令、数据结构、程序模块、或其它数据的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动的介质。存储器204、可移动存储器208和不可移动存储器210都是计算机存储介质的示例。计算机存储介质包括,但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字化多功能盘(DVD)或其它光学存储器、磁盒、磁带、磁盘存储器、其它磁性存储装置、或可用来存储所需信息并可由装置200和处理器202访问的任何其它介质。任何这种计算机存储介质可以是装置200的一部分。
装置200还可包含使装置能与其它装置通信的通信连接212。通信连接212是通信介质的一个示例。通信介质通常体现为计算机可读指令、数据结构、程序模块、或其它诸如载波或其它传送机制的已调制数据信号中的其它数据,并包括任何信息传送介质。术语“已调制数据信号”意指具有以这种把信息编码到信号中的方式来设置或改变的一个或多个特征的信号。作为示例,而非限制,通信介质包括诸如有线网络或直接有线连接的有线介质,以及诸如声学、RF、红外和其它无线介质的无线介质。
装置200还可具有诸如键盘、鼠标、输入笔、语音输入装置、触摸输入装置等的输入装置214。还可包括诸如显示器、扬声器、打印机等的输出装置216。这些装置单独地或结合在一起可形成用户接口。所有这些装置在本领域中是众所周知的,无需在此赘述。
计算装置200通常包括至少某些形式的计算机可读介质。计算机可读介质可以是处理单元202可访问的任何可用介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以用来存储诸如计算机可读指令、数据结构、程序模块、或其它数据的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动的介质。以上任意组合被包括在计算机可读介质的范围内。
具有本发明各方面的系统300的实施例的功能图如图3所示。系统300根据本发明一实施例可创建结构化引用。系统300可被体现为诸如电子制表或数据库应用程序的软件应用程序的一部分或程序。在一示例性实施例中,系统300的各部分可在诸如微软Excel电子制表应用程序的电子制表应用程序中找到。系统应用程序300具有若干模块。在一实施例中,系统300具有用户界面302、数据引用模块304、公式模块306和存储在某些电子表格中的数据308。在某些实施例中,各个模块进行交互以从用户提供的语义指定332创建结构化引用130。语义指定可关联于可被用来标识数据308内数据结构316的一个上下文信息314的集。一旦数据结构316被标识,数据引用模块304可创建指向该数据结构316的结构化引用130。
在某些实施例中,结构化引用130可被用于公式模块306中。公式模块306可有助于根据从用户接收的公式318处理数据308。公式318可使用结构化引用130以获取在公式318中使用的数据。公式模块306可输出带有结构化引用320的公式。
在本发明各实施例中,结构化引用可被动态更新和改变。因而,结构化引用可引用“动态数据”。动态数据是数据结构内可改变但仍可用结构化引用来引用的一个数据集。结构化引用可适应电子表格数据或数据结构中的变化或根据该变化调整。常常,用户在电子表格内改变、添加或删除数据。此外,用户常常操纵呈现电子表格数据的方式。结构化引用适应电子表格数据中的变化,是因为结构化引用根据上下文信息(诸如语义引用)而非数据的位置信息(诸如单元范围)指向数据。因而,当数据或数据结构改变时,结构化引用130可重新映射到带有新的数据结构但同样的上下文信息的数据,即使该数据占据了电子表格内新的位置。
在本发明各实施例中,系统300可将公式320应用于数据308。经处理和计算的数据集322是用公式320创建的。该系统用结构化引用来生成经计算的数据322从而可动态更新数据308。因而,随着数据308的改变,公式将根据结构化引用继续产生经计算数据322。
用于生成结构化引用的方法400的一实施例如图4的流程图所示。在本发明各实施例中,方法400在操作402提供一项或多项上下文信息时开始。在此情形中的上下文信息可与图3所示的上下文信息314相似。上下文信息可通过数据结构(诸如数据结构316)指向数据。在某些实施例中,用户可通过用户界面(诸如302)提供一个或多个语义指定(诸如指定312)。在某些实施例中,如前所述,上下文信息可从使用描述数据的语言描述符指向全部或部分数据的一个或多个语义指定建立。在其它实施例中,用户可通过此后进一步解释的半选择或其它过程来提供上下文信息。在另外的实施例中,其它应用程序可提供这样的上下文信息,例如宏码函数可运行以便产生报告。在这种情形中,电子表格应用程序可创建它自己的上下文信息。
为了提供输入一语义指定并因而创建上下文信息,用户可采用若干不同方法。在一实施例中,用户可通过经一键盘接口将语义指定键入电子制表应用程序而直接输入语义指定。在其它实施例中,用户可用鼠标或其它类型的图形用户界面来选择行、列、表格、或其它结构。在图形地选择一数据集之后,应用程序通过确定描述数据选定部分的标题名字或其它上下文信息来解析要使用哪个上下文信息,并显示用于选定数据的语义指定。该方法可被称为半选择。在另外的实施例中,用户可使用一图形用户界面或其它方法从现有公式或单元中图形地复制一结构化引用,并将该引用粘贴到新的公式或函数中。为了复制该结构化引用,用户可复制并粘贴语义指定。本领域技术人员将理解,用户可用其提供上下文信息的被包括在本发明各实施例的其它方法。
然后确定操作404确定与上下文信息相关的数据结构。在某些实施例中,确定数据结构依赖于用户用来提供上下文信息的方法。如果用户从另一公式或单元复制语义指定,该结构化引用也可被复制到新的公式或单元中,如上所述。然而,在某些实施例中,用户可仅通过键入语义指定来提供上下文信息。在这些实施例中,应用程序可确定哪些单元、列、表格、列表、行、或其它结构由该上下文信息描述。在本发明各实施例中,语义指定一直以诸如“MyPivotTable”的数据结构名字开始,它将是用于名为“MyPivotTable”的PivotTable函数的元数据标题。
在本发明各实施例中,电子制表应用程序解析该引用。然后,电子制表应用程序可确定被解析的引用是否是一结构化引用。如果引用是结构化引用,电子制表应用程序能确定哪个数据结构具有用户提供的名字。例如,应用程序可搜索与语义指定相同或与之相似的名字的表格或列表。作为示例,用户可在公式中提供名字“Height”,如图1所示。对图1表格102的搜索将查找列标题110中的术语“Height”。在该示例中,“Height”是列C 112中数据的标题110。
然后,电子制表应用程序可确定用户命名的那类数据结构。例如,该数据结构可以是PivotTable表格、表格、或列表。在其它实施例中,数据可被嵌入如上所述的数据结构中。电子制表应用程序使用该结构(PivotTable表格或表格)来确定位于电子表格中与数据相对的上下文信息。如果上下文信息在数据之上,上下文信息可描述一列的数据结构。如果该单元在数据左侧,则上下文信息可描述一行的数据结构。该过程为估算哪些单元包含了适当的标签以及什么范围属于给定标签指向的数据提供了明确的上下文。该结构还进行更新使得该标签和数据范围保持链接。在以上示例中,“Height”描述图1表格102中的数据结构一列112,因为它是该列的列标题。本领域技术人员将理解可如何使用该上下文信息以标识表格的数据结构。
在另一实施例中,对于PivotTable表格,电子制表应用程序使用PivotTable表格的名字和域内项或项范围之间的交集来确定会该结构化引用的范围。在本发明一实施例中,通过在语义上指定PivotTable表格的名字,随之以用列隔开的包括域内项或项范围的名字的方括号,来完成确定。
PivotTable表格的一个示例看起来像图6中的表格。对来自域“ProposedMilestone”614的条目“M2”602的列610中数据的引用由“=MyTable[[ProposedMilestone][M2]]”给出。此外,指向该数据范围与域“Proposed PM”618中项“JosephChirilov”行的交集的引用将由“=MyTable[[Proposed Milestone][M2],[ProposedPM][Joseph Chrirlov]]”给出。包括项范围的引用的一个示例是指向与“ProposedPM”域618中从项“Allan Folting”602到“Chad Rothschiller”606以及“Milestone”域614中“M2”项602相关的单元的引用。指向该单元集的结构引用将是“=MyTable[[Proposed Milestone][M2],[Proposed PM][Allan Flting][ChadRothschiller]]”。该引用将总是导致由“Proposed Milestone”域614中的“M2”项602指定的数据单元与“Proposed PM”域618中从“Allan Folting”602到“ChadRothschiller”606的项的交集,而不论这些项在“Proposed PM”域614中出现的顺序。用于这些引用的语法并不限于在示例性实施例和示例中示出的语法。本领域技术人员将理解可对引用使用其它语法。
在另一实施例中,对于链接到在线分析处理(OLAP)数据库中数据的PivotTable表格,一部分PivotTable表格的指定使用维数内诸成员或成员范围的交集。维数是描述整个数据集的标题或描述符。一个维数可具有进一步分类和描述该数据集的一个或多个成员。各成员可被组织到一个层次集中,其中一个成员可以是一个或多个“子”成员的祖先。在本发明实施例中,OLAP数据库中使用的术语祖先应用于是分层结构中任何层次上特定成员的第n个父成员。成员和维数是本领域中众所周知的,且不作进一步解释。语义指定及相关结构化引用类似于上述域内项的指定,除了引用可使用维数和维数的一层或多层中一个或多个成员的组合,而不是如上所述地仅使用一个项和一个域的组合。在一实施例中,指向OLAPPivotTable表格中数据的结构化引用将具有维数中包括所有描述该数据的成员的单个公式化表达式。例如,在以下名为“MyPivotTable”的OLAP PivotTable表格中,
OrderID的计数 | | |
ShipCountry |
ShipCity |
Total(总值) |
阿根廷 |
Buenos Aires |
34 |
巴西 |
Campinas |
19 |
Resende |
19 |
Rio de Janeiro |
83 |
Sao Paulo |
82 |
墨西哥 |
México D.F. |
72 |
委内瑞拉 |
Barquisimeto |
34 |
Caracas |
4 |
I.de Margarita |
35 |
San Cristóbal |
45 |
对包含“83”的单元的语义指定将是“=MyPivotTable[[ShipCountry][Brazil][Rio deJaneiro]]”。
本发明的各个实施例通过使用索引澄清完全相同的成员标题来处理OLAPPivotTable表格中的含糊情形。因而,如果具有相同名字和所有其它方面中相同语义指定(在PivotTable表格上可见的相同祖先以及相同的维数和层次)两个成员同时出现在表格中,这些成员为了引用目的通过一整数来澄清,该整数附在成员名字上以便区别它与其它否则会共享相同指定的其它成员。例如,一个成员可以是“Vancouver 1”,而第二个成员可以是“Vancouver 2”。
随后,创建操作406创建一结构化引用。该结构化引用可基于以上确定的数据结构。在某些实施例中,电子制表应用程序映射到数据结构的元数据(即,到标题和在结构引用语法中可用的特定项)。元数据可包括一嵌入式数据结构,诸如在列表或PivotTable中的列。然而,元数据可具有表格和列的上下文信息。结构引用依赖于数据结构。电子制表应用程序在“解析时”将引用解析为结构的一部分,然后在“估算时”将结构的一部分解析为特征的单元范围。例如,语义指定“MyList[Sales]”将创建是有效的“MyList的Sales列”的结构化引用,但该结构化引用在公式或特征的估算期间使用时将被解析成像“C2到C48的单元”的某东西。因而,电子制表应用程序可在解析时将语义指定翻译成数据结构,而在估算时将该数据结构翻译成具有用户想要数据的实际单元范围。用户可能看不到呈现在显示装置上的结构化引用。然而,在其它实施例中,可在用户界面上向用户提供对由结构化引用所引用位置的文本或图形呈现。因而,用户可在显示装置的某些区域或视窗中接收包含包括在结构化引用中的单元的指示。例如,单元可在电子制表应用程序中被加亮显示。在其它实施例中,电子制表应用程序可通过把边界置于单元周围、对单元添加阴影、或使用某些其它视觉效果来改变单元集在显示装置上示出的外观。
然后,提供操作408提供结构化引用。在本发明各实施例中,结构化引用被嵌入到电子表格中用于用户想要对结构化引用执行的任何操作。然而,用户可仅在电子表格中查看语义指定。在某些实施例中,结构化引用可被用来解析一部分数据或被用于公式、计算或其它数据处理中。在一实施例中,语义指定可被结合到公式的语法中作为提供创建结构化引用的上下文信息的一个自变量集。
在另一实施例中,应用程序可向显示装置提供结构化引用。当用户手动输入语义指定时,电子制表应用程序可高亮度显示由底层结构化引用引用的数据结构。在其它实施例中,当用户选择用于某些公式或函数的一部分数据时,电子制表应用程序可创建描述选定数据的语义指定并向用户提供那些语义指定。本领域技术人员将理解电子制表应用程序可向用户提供结构化引用的其它方法。
动态更新由结构化引用引用的数据的方法500如图5所示。接收操作502接收结构化引用所引用数据的变化。变化可以是对数据的,诸如添加更多的数据,或对数据结构的,诸如插入一行数据。例如,数据可被附在一列之末。附加数据不必改变所引用数据的现有数据结构,因为已在现有数据结构中的数据并未被移动。附加数据仅将数据添加到现有的数据结构中。在本发明各实施例中,对数据结构的改变可包括插入、删除、或移动现有数据结构中的行、列、或单元。数据结构改变实际上可移动在结构化引用中引用数据的位置。在某些实施例中,改变因为电子制表应用程序中像PivotTable的刷新的某些自动函数,或通过用户手动的预而发生。
然后,确定操作504确定数据结构是否被改变。在某些实施例中,电子制表应用程序确定是否有一列、一行或一个单元被插入一域,这移动或移位了由结构化引用所引用的数据。该确定可包括将结构改变的位置和现有结构化引用中所引用数据的位置比较。如果那些位置重叠,则已对该数据结构作了改变。本领域技术人员将理解电子制表应用程序可确定是否有对结构的改变发生的其它方法。如果对数据结构的改变已经发生,则查找操作514查找上下文信息,将在下面进一步解释。
如果像添加数据的对数据结构的改变未发生,则确定操作506确定改变可对任何现有结构化引用的效果。例如,如果数据被添加到表格中,则应用程序可确定该数据是否应由现有结构化引用所覆盖。
然后,改变操作508改变一新的结构化引用。在本发明各实施例中,电子制表应用程序改变了结构化引用的解析。例如,现有结构化引用可解析以获取从单元C2到C6的数据。用户可能希望被添加到单元C7到C9的新数据被包括在现有结构化引用中。由现有结构化引用所引用的数据结构不必作改变,但用于结构化引用的语义指定可包括新添加的数据。电子制表应用程序不创建新的结构化引用,而改变结构化引用的解析以获取C2到C9单元中的数据。例如,如果单元被添加到图1的列112之末端,则对现有结构化引用的解析将需要使用语义指定“Height”来覆盖任何公式中的那些新单元。
随后,提供操作提供结构化引用。在一实施例中,提供结构化引用可包括弄脏使用结构化引用的任何单元。弄脏单元可包括通过设置计算机标记或其它方式来标识单元,这需要使那些单元中的计算或引用重新运行。污损单元使那些单元中的操作重新运行。这样,当结构化引用更新时,所有使用该引用的操作也更新。因而,电子制表应用程序提供指向动态数据的结构化引用,因为该结构化引用随着数据改变作调整,并随后更新使用那些结构化引用的任何操作。
如果对数据的改变导致了对数据结构的改变,则寻找操作514在已改变的数据结构中寻找上下文信息。在本发明实施例中,用来创建结构化引用的上下文信息被存储。上下文信息被检索。在一实施例中,电子制表应用程序在电子表格或表格中搜索上下文信息,它可包括一个或单个语义指定。例如,电子制表应用程序可搜索和寻找具有与语义指定相同的列标题名字的列标题。
然后,确定操作516确定应用于上下文信息的新数据结构。在一实施例中,在找到上下文信息之后,电子制表应用程序可确定现在与上下文信息相关联的数据结构。在某些实施例中,新的数据结构可以是像列的同一类数据结构,但可位于另一位置。在其它实施例中,数据结构类型可改变。例如,列中的数据在作数据改变之后可在行中显示。
随后,创建操作518创建一新的结构化引用。在一实施例中,电子制表应用程序将结构化引用重新映射到新的数据结构。在其它实施例中,现有的结构化引用可被消除而生成新的结构化引用。
然后,提供操作520提供新的结构化引用。在某些实施例中,如前所述提供新的结构化引用可包括使用先前的结构化引用来弄脏单元。新的结构化引用替换被弄脏单元中任何公式或引用内先前的结构化引用。然后,被弄脏单元中的操作通过使用以新的结构化引用获取的数据来重新运行。因而,如果在那些计算或操作中引用的任何数据改变,则使用结构化引用的任何计算或操作得到动态更新。
结构化引用的上下文信息的示例性实施例以及用于创建和动态更新结构化引用的方法如图6-11所示。在示例性实施例中,用户已创建了表格600。表格600具有在各行和各列中的数据数组。示例性表格600具有描述表格600内数据的上下文信息。再一次,上下文信息是表格600内可描述表格600内数据的用户创建或自动创建的名字集。该上下文信息可包括表格名字、列标题名字、行标题名字、或其它名字。
首先,表格600具有名字“MyTable”。用户创建的名字“MyTable”是提供第二段上下文信息的表格名字601。用户可使用语义指定“MyTable”来引用表格600中的数据。电子制表应用程序可将该语义指定理解为描述表格600内数据的上下文信息。然后,电子制表应用程序可基于该上下文信息创建指向表格600的结构化引用。当使用结构化引用时,电子制表应用程序可解析指向表格600内数据的结构化引用。
表格600还具有其它上下文信息,诸如行标题名字和列标题名字。三个示例性行标题名字在单元602、604、606中示出。示例性列标题名字“M2”如单元608所示。用户可使用语义指定“M2”来引用列610中的数据。电子制表应用程序可创建指向列610内数据的结构化引用。当使用结构化引用时,电子制表应用程序可解析指向列610中数据的结构化引用。框612示出在电子制表应用程序解析结构化引用之后可使用的那些数据。
指向表格600内数据列的示例性结构化引用在图7中示出。“M2”是一示例性语义指示。“M2”还是上下文信息,列标题706的列标题名。该列标题标识一数据结构-列708。目前,列708中的数据占据了从单元C5到单元C17的单元组,而在单元C18中有“总计值”。可创建将列708引用为数据结构的结构化引用。该结构化引用可与上下文信息“M2”一起存储。当使用该结构化引用时,电子制表应用程序可将该数据结构解析以包括具有列标题名“M2”706单元C5到C17中数据。如果数据改变,则电子制表应用程序可使用所存储的上下文信息来确定对结构化引用的改变。
更新结构化引用的过程的实施例的一个示例在图8和图9中示出。在此,信息的三个新行802被添加到表格800中。该信息不改变在三个新行1002之上的任意现存数据1004的位置或数据结构。现在,应用程序必需确定改变是否对任何现有的结构化引用有影响。如前所述,用户可建立对如图9所示的标题“M2”906下所有数据的结构化引用。指向列708的结构化引用可受到添加数据的影响。电子制表应用程序然后可检索创建对列标题“M2”806下数据的结构化引用的上下文信息。语义指定“M2”806的数据结构包括列标题806下到总计值单元1006的所有数据。因而,在新添加行1002中的数据应当被包括在内,如图11的淡灰阴影区域1102所示。因而,电子制表应用程序现在改变如何解析结构化引用以包括数据结构104内由语义指定“M2”806勾画出的新的数据和现存的数据。
改变影响由结构化引用所引用的数据结构的情形的示例如图10和11所示。如前所述,上下文信息具有对“M2”706的语义指定。原始的结构化引用引用数据结构一列708,如图10的高亮度显示单元集所示。现在,列已被插入到称为“M1A”的表1000。列的插入改变了数据结构,因为称为“M2”的列1004移到了右侧。因而,结构化引用708现在指向了错误的单元集。
此外,三个行1006被插入表格1000中部。新的行1006将新数据引入结构化引用708所包括的列,如框1008所示。因而,原始的结构化引用708现在包括了框1008中的新数据,并未能包括最后三行1010中的某些原始数据,如框1012所示。列和行的添加已“破坏”了原始的结构化引用,因为如果应用程序继续使用原始结构化引用,则该原始结构化引用将提供不正确的数据。因而,电子制表应用程序必须更新该结构化引用。
首先,电子制表应用程序将再次查找上下文信息。电子制表应用程序可通过在已改变的表格1000中搜索先前存储的用户输入的语义指定“M2”来查找上下文信息。在该示例中,电子制表应用程序将在列标题1102中找到“M2”,如图11所示。上下文信息“M2”的查找是在原始结构化引用1108右侧的一列。在查找上下文信息之后,电子制表应用程序可确定上下文信息描述的新的数据结构。上下文信息“M2”指向列1106中的所有数据1104。因而,新的数据结构一列1106如图11的阴影区域1104所示。新的数据结构包括框1110中新的数据单元,以及框1132中的原始数据。在确定新的数据结构之后,电子制表应用程序创建引用列1106的元数据的新的结构化引用。因而,创建新的结构化引用的过程调整该引用以补偿数据中的改变。换言之,新的结构化引用调整为将引用移到列1106,将数据加入框1110,并维护对框1112中数据的引用。该过程是自动地,并使用户不必对这些结构化引用作任何手动改变。
在本发明各实施例中,用户可在公式或计算中采用以上的结构化引用。任何带有经调整的结构化引用的单元可以是脏的。。占据污损单元的公式和计算可使用以经调整结构化引用获取的数据来重新运行。因而,用户的现有计算和公式也可被自动更新。