电子数据表软件应用程序可由各种不同的用户用来操控数据。典型的电子数据表应用程序通过按照行和列捕捉、显示和操控数据来模拟物理数据表。行列交汇处是单元格。电子数据表内的单元格可以包含诸如数字、字符串和出错的值。此外,单元格还含有能对其他单元格内的值操作并显示结果的公式。这些公式让用户能够创建计算和商务逻辑以帮助他们使用数据。
然而,当今的电子数据表仍限于电子数据表能够捕捉或操控的数据或信息类型。例如,当前电子数据表能够将通货显示为美元符号后跟数字,或者显示为英镑符号后跟数字,但是不能指定如何在不同于数值的数学公式中操控这些通货值。于是,在对数据执行操作时,电子数据表就无法通知用户逻辑上的不一致性,例如当用户用英镑和美元相加时。
在另外的一组情况下,用户希望在电子数据表内对任意数据类型执行操作,这些数据类型不可化简为含有更简单数据类型的多个单元格。在这些情况下,电子数据表无法包含特定类型的数据,例如图片或COM对象,从而不能对其进行操作及由公式传递;电子数据表也不具备可扩充性,于是开发人员也就不能针对这些任意值类型来创建新函数。
发明内容
提供本概述以便以简化形式介绍将在以下的详细描述中进一步描述的一些概念。本概述并不旨在标识要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定要求保护的主题的范围。
电子数据表内的单个单元格可以包含由可扩充值类型定义的可扩充值。可扩充值类型是并入电子数据表并由电子数据表作为其他数据类型支持的用户定义的值类型。总之,可扩充值类型提供了对不是由电子数据表内部定义的类型的支持。例如,可扩充值类型可以包括但不限于:矩阵可扩充值类型;向量可扩充值类型;财务收益率曲线可扩充值类型;图片可扩充值类型;复数可扩充值类型;有单位数字可扩充值类型等。当可扩充值类型由用户定义时,用户还可以开发对该类型进行操作的一组关联函数。这些函数可以添加至由电子数据表支持的基础函数组。因此,这些函数以基本类似于电子数据表基础函数组的方式工作。换句话说,单元格内所包含的可扩充值可以按与受支持基础类型相同的方式而被作用。可扩充值类型还可以定义如何将可扩充值看做是内建值,使得电子数据表的基础函数可作用于该可扩充值。
附图简述
图1示出了一计算机的示例性计算体系结构;
图2示出了与可扩充值交互的电子数据表系统的概观;
图3示出了用于将可扩充值类型及其关联函数添加至电子数据表的过程;
图4示出了用于在电子数据表内使用可扩充值类型的过程;以及
图5根据本发明的各方面示出了可扩充值的显示、查看和编辑。
详细描述
现在参考其中相似的数字代表相似的元素的附图,描述本发明的各种方面。具体地,图1和相应的讨论旨在提供对在其中可以实现本发明实施例的合适计算环境的简要描述。
一般而言,程序模块包括例程、程序、组件、数据结构和其它类型的结构,它们执行特定的任务或者实现特定的抽象数据类型。也可使用其它计算机系统配置,包括手持式设备、多处理器系统、基于微处理器或可编程消费 电子产品、小型机、大型机等等。也可使用分布式计算环境,其中任务由通过通信网络链接的远程处理设备执行。在分布式计算环境中,程序模块可被置于本地或远程的存储器设备中。
贯穿说明书和权利要求书,下列术语采用与此处显式相关联的含义,除非该术语在其他地方另有清楚指示。
术语“单元格“是在电子数据表的矩形网格线内的位置。单元格可以包含诸如以下信息:公式或文字值;由公式计算的(如果有的话)值(可以是基础的或可扩充的);元数据,或者单元格特性,诸如:格式化单元格本身的信息(单元格背景、边框等);格式化单元格的值的信息(字体、粗体、数字格式等);数据确认;和保护。
术语“值”指的是由公式计算的值。值可以是位于单元格中的值,但也可以是公式中的中间值,因此没有关联单元格。值可以是由电子数据表本身定义的“基础值”,诸如:数字、文本字符串、出错值、数组;或者可以是由用户定义的“可扩充值”。值可以不具有与其相关联的格式化信息。
术语“MDX”指的是多维表达式(MultiDimensional eXpressions)语言。
术语“立方体”指的是可从中检索数据的多维OLAP数据库。术语“成员”是沿着立方体中一个维度的值。
术语“元组”是立方体中一个或多个成员的交汇处,其中每个维度有一个成员。元组表示包括了指定成员的立方体片。
简言之,电子数据表内的单元格可以包含可扩充值数据类型的可扩充值。在各独立单元格内存储可扩充值的能力使电子数据表程序能够以作用于受支持基础值相同的方式作用于可扩充值。例如,假设图片已被定义为可扩充值类型,于是就可将图片值包括在一个或多个单元格内并且使用电子数据表的基础函数和/或创建用来操作图片的函数来对其进行作用。可扩充值的范围可以包括从易于包含在单元格内的值到需要大量存储且可能无法在单元格内轻易示出的值。易于包含在单元格内的值可以是诸如带单位的数字、带通货的数字、MDX成员等的值。可能无法在单元格内轻易包含的值可以是诸如收益率曲线、图片、数组、数据库相关等的值。
现参考图1,将描述在各实施例中利用的计算机2的示例性计算机体系结构。图1中示出的计算机体系结构可以按各种不同的方式配置。例如,计算机可被配置为服务器、个人计算机、移动计算机等。如图所示,计算机2中央处理单元5(CPU)、包括随机存取存储器9(RAM)和只读存储器(ROM)11的系统存储器7、以及将存储器耦合至CPU 5的系统总线12。基本输入/输出系统包含如在启动过程中帮助在计算机中的元件之间传输信息的基本例程,并储存在ROM 11中。计算机2还包括大容量存储设备14,用于存储操作系统16、应用程序和其他程序模块,这将在以下更为详尽地描述。
大容量存储设备14通过连接至总线12的大容量存储控制器(未示出)与CPU 5相连接。大容量存储设备14及其关联计算机可读介质为计算机2提供非易失性存储。虽然将在此处包含的计算机可读介质的描述针对诸如硬盘或CD-ROM驱动器的大容量存储设备,但是计算机可读介质可以是能够由计算机2访问的任何可用介质。
作为示例,而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括易失性和非易失性、可移动和不可移动介质,它们以任意方法或技术实现,用于存储诸如计算机可读指令、数据结构、程序模块或其它数据之类的信息。计算机存储介质包括,但不限于,RAM、ROM、EPROM、EEPROM、闪存或其它固态存储器技术、CD-ROM、数字多功能盘(DVD)或其它光学存储、磁带盒、磁带、磁盘存储或其它磁性存储设备、或能用于存储所需信息且可以由计算设备2访问的任何其它介质。
根据各实施例,计算机2可以在使用通过诸如因特网的网络18与远程计算机的逻辑连接的联网环境中操作。计算机2可以通过连接至总线12的网络接口单元20与网络18相连。网络接口单元20也可用于连接其他类型的网络和远程计算机系统。
计算机2还可以包括输入/输出控制器22,用于接收并处理来自诸如以下多个设备的输入:键盘、鼠标、电子输入笔等。类似地,输入/输出控制器22可以为显示屏、打印机或某些类型的设备(未示出)提供输出。
如前简述的那样,多个程序模块和数据文件可以存储在计算机2的大容 量存储设备14和RAM 9内,包括适于控制联网计算机操作的操作系统16,诸如:来自微软公司的WINDOWS XP操作系统;UNIX;LINUX等。大容量存储设备14和RAM 9还可以存储一个或多个程序模块。更具体地,大容量存储设备14和RAM 9可以存储电子数据表应用程序10,诸如MICROSOFTEXCEL电子数据表应用程序。根据一个实施例,电子数据表应用程序10用于提供与其值被输入电子数据表应用程序10的一个或多个单元格的可扩充值类型交互的功能性。电子数据表10被配置为操作任何可扩充值类型就好像这些可扩充值是受支持的基础类型之一的单值一样。
电子数据表应用程序10被配置为接收用户输入。例如,用户经由图形用户界面将项目数据输入电子数据表。用户输入可以是单值,可扩充值、项目值、项目元数据、函数信息、立方体函数信息或其他数据。用户输入可以是由用户键入、粘贴或将数据输入电子数据表的其他预设动作创建的直接输入,或者可以是由另一程序生成的间接输入。
计算引擎26执行与电子数据表内各单元格相关的操作。根据一个实施例,计算引擎26是电子数据表应用程序10内的一个组件。然而,计算引擎26也可以位于电子数据表应用程序10外部。由计算引擎26执行的操作可以是数学的,诸如加、除、乘和可扩充值的计算等,也可以包括其他的函数或特征,诸如与多维数据存储交互。计算引擎26可被配置为执行许多不同的操作。
电子数据表应用程序10示出了包括电子数据表116的示例性电子数据表窗口104。电子数据表116可以通过交叉行(诸如,行7 118)和列(诸如,列C 120)来形成。交叉的行和列形成单元格,诸如单元格C7 122,而该单元格可以通过其相应的的列和行来标识,例如,在列C 120和行7 118内的单元格C7 122。如图所示,电子数据表116有三列九行。然而,电子数据表116可以包括如由滚动条124和126所表示的更多的行和列。电子数据表程序10还包括用户界面元素用以与可扩充值类型交互。例如,下拉菜单140示出了用于添加(add)可扩充值(extensible value)142和编辑(edit)可扩充值144的菜单。根据另一个实施例,用户可以选择诸如下拉菜单的另一个UI元素,以便 从一可用的可扩充数据类型列表中选择用于帮助填充单元格和/或公式的类型。如图所示,电子数据表包括的单元格含有标准单元格值,诸如文本124和136;以及可扩充值,诸如单元格A3-A5中的货币值(美元,AmericanDollars;英镑,British Pounds)、单元格A8中的图片值164和单元格B8中的收益率曲线值160。可扩充值可能无法总是能够在电子数据表的单元格内完整显示。例如,包括许多值的可扩充值可能就无法在单个单元格内完整显示。由此,当定义可扩充值类型时,可以包括DisplayYourself()(显示你自己)定义,用来定义将如何在单元格内显示该可扩充值类型。在当前的示例中,货币值用其货币符号显示,图片被显示为ICON(图标),收益率曲线则显示为包括在单元格内的该收益率曲线的小型表示。除了定义如何在单元格内显示可扩充值之外,可扩充值定义还包括PopUpViewer()(弹出查看器)定义,用来定义如何整体查看并编辑可扩充值。根据一个实施例,当所选的可扩充值不是由公式计算的值时,就可以显示用于查看并编辑可扩充值的查看器。作为替换,当显示的可扩充值由公式计算并且用户编辑该可扩充值时,随后该可扩充值就变为一恒定值。根据另一个实施例,由公式计算的任何可扩充值都可以在查看器内查看但不被编辑。查看器可以是专门为该可扩充值开发的自定义查看器,或者该查看器可以是对可扩充值类型进行操作的第三方产品。例如,查看器在可扩充值是图片的情况下可以是支持标准图像类型的已开发的图形程序。类似地,当可扩充值包括XML时,查看器可以是标准的XML编辑器。
单元格是电子数据表内的显示和容器两者。由此,每个单元格都能够显示一项目并包含该项目。在当前示例中,已经定义货币可扩充值类型来作用于各种通货,诸如英镑和美元通货。货币可扩充值类型定义连同对由该货币可扩充值类型定义的货币值进行操作的函数28一并存储在数据类型表格28内。函数和数据类型表格28还包括已由电子数据表支持的函数和数据类型,这包括所有的标准基础函数。根据一个实施例,标准操作符可由可扩充值类型函数覆盖。在当前示例中,加法“+”操作符被覆盖以使其可用于将两个货币可扩充值相加。
例如,单元格A3 128显示项目“$5.00”,这表示单元格A3 128所包含的货币值。单元格A4 130显示货币值“£10.00”而单元格A5显示货币值“$23.82”。单元格A4 130包括具有在该单元格内示出的表示所显示的“£10.00”的货币值的项目。与单元格A3 128和A4 130相反,单元格A5 132包括公式项“=A3+A4”,以指令电子数据表计算单元格A3内所包含的货币值和单元格A4内所包含的货币值之和并且将结果返回并显示在单元格A5内。如图所示,函数138是结合可扩充值类型定义开发的函数,它使用加法“+”操作符将两个货币可扩充值相加以生成以美元为单位的结果。为执行通货的加法,无需元数据来执行计算和产生结果。可扩充值是一个值而不仅是对其他单元格的引用。在各实施例中,各单元格内的项目是由各种用户输入到电子数据表中的,诸如用户手动键入该值或者用户将该值复制粘贴到单元格中。
图2根据本发明各方面示出了与可扩充值交互的电子数据表系统200的概观。客户206包括电子数据表应用程序208。电子数据表应用程序208包括电子数据表单元格210。一般地,由黑色边框突出显示的活动单元格212是电子数据表内当前正被作用的单元格。例如,用户正将可扩充值输入单元格。零个或者更多的电子数据表单元格可以包含已被定义的可扩充值类型的可扩充值,并且包括对该可扩充值类型进行操作的至少一个函数。可扩充值可以按与电子数据表基础类型相比基本上类似的方式而被作用,上述基础类型诸如:字符串;数字;出错等。
一般而言,用户在电子数据表208内的一个或多个单元格中输入可扩充值。诸如函数210的函数可以包括在一个或多个单元格内以作用于可扩充值。例如,电子数据表208内可以包括支持一可扩充值类型的函数210。电子数据表内包含可扩充值的单元格可以像该电子数据表内包含单值的任何其他单元格一样工作。可扩充值是真实的值。换句话说,无需访问元数据来确定该值,也无需引用另一单元格来获取该值。
电子数据表应用程序存储并操控诸如电子数据表208的电子数据表内的项目。在一个实施例中,电子数据表应用程序在电子数据表数据存储222内存储电子数据表数据208。电子数据表数据存储222在某些实施例中是单元 格表格。
计算引擎220如上所述是与电子数据表应用程序相关联的能够执行操作的组件。操作可以是数学的,诸如加、除、乘等,也可以包括其他的函数或特征,诸如MICROSOFT PIVOTTABLE(微软数据透视表)动态视图特征。计算引擎220被配置为以与受支持的基础值相同的方式处理可扩充值。由此,就可以在函数表224内存储与该电子数据表应用程序相关联的每个函数。根据一个实施例,可以在电子数据表内操控数据的各个函数都位于包括了基础函数在内的函数表224内。作为替换,函数可以在各存储中分开存储。函数表224可以包括数据类型表,该数据类型表包括所支持数据类型列表,其中既包括基础数据类型又包括定义的可扩充数据类型。
如图所示,系统200还可以包括耦合至客户206的服务器202。除了其他使用,服务器202尤其可被配置为存储多维数据库。诸如OLAP数据库。在电子数据表应用程序和OLAP数据库204之间的通信可以使用MDX完成。服务器202也可被配置为存储与包含在电子数据表内的一个或多个可扩充值相关联的其他数据。
图3和4示出了与单元格内的可扩充值类型相交互的过程。
当阅读对在此提供的例程的讨论时,应当了解,各种实施例的逻辑操作是作为(1)运行于计算机系统上的一系列计算机实现的动作或程序模块,以及/或者(2)计算机系统内互连的机器逻辑电路或电路模块来实现的。该实现是取决于实现本发明的计算机系统的性能要求来选择的。因此,所例示的并且构成在此所述的实施例的逻辑操作被不同地表示为操作、结构性设备、动作或模块。这些操作、结构性设备、动作和模块可用软件、固件、专用数字逻辑以及它们的任何组合来实现。
图3示出了用于将可扩充值类型及其关联函数添加至电子数据表的过程。
在开始操作之后,该过程移至操作310,其中定义了可扩充值类型。可扩充值类型可以是未受包括在电子数据表应用程序的基础类型支持的几乎任何值类型。例如,经济学家或者财务顾问可以定义关于收益率曲线的可扩充 值类型以及对收益率曲线(收益率曲线数据类型的值)执行操作的函数。数学家可以定义关于复数、矩阵、向量等的可扩充值类型,并且扩充电子数据表的数学函数以对这些新的数据类型进行正确操作。银行家可以定义用于不同货币单位(参见上述示例)的可扩充值类型。图形程序员可以定义图片数据类型以及用于对图片执行操作的函数。程序员可以定义与XML一并工作的可扩充值类型:XML节点、XML数的一部分、或者X路径查询(XPath Query)语句以及对这些进行的操作。可扩充值类型还可被定义与OLAP立方体数据一并工作。例如,可扩充值类型可以被定义用于MDX成员、KPI指示符、元组、集合等。也可以定义许多其他的值类型。可以看出可扩充值类型的可能列表是无限的。
移至操作320,开发函数以操控该可扩充值类型的可扩充值。操控可扩充值的函数可以用许多不同的编程语言来开发。例如,可以使用Visual Basic、C或C#来开发函数。一般而言,可以开发任何数量的函数来与可扩充值交互。根据一个实施例,函数可以覆盖基础操作符,诸如+、-、/、*和&操作符,使得可扩充值能够利用这些操作符。例如,加“+”操作符可被覆盖用以将两个或多个可扩充值相加。另一个示例可以是覆盖减“-”操作符用以从一个可扩充值中减去另一个可扩充值。
例如,假设定义一可扩充值类型来操控复数。可被定义用来操控复数可扩充值的函数之一可以是加法操作,诸如:(3+2i)+(4-1i)的结果是(7+i)。类似地,假设定义一可扩充值类型用以带单位的数字,使得3m/s*5s将得到结果15m。可以看出,可扩充值是一个值,并且可以是中间子公式的结果,而根本不与单元格相关联。
表示电子数据表内的值可以通过被称为OPER的数据结构来表示。以下是可以包括可扩充值数据类型的OPER的一个示例性表示:
struct{tag:{Error,Number,Text},
value:union{...出错值表示...,
...数字表示...,
..文本表示},
extensibleValue:*ExtensibleValue}OPER
根据一个实施例,前两个字段是支持基础类型的字段。第三个字段“extensibleValue(可扩充值)”对所有常规基础值而言为空。但是对于可扩充值,ExtensibleValue字段指向extensibleValue对象,根据一个实施例其支持以下接口:DisplayYourself();PopUpViewer();和GetValue()(获取值)。DisplayYourself()方法定义了如何在单元格内显示可扩充值。PopUpViewer()方法定义了在完全显示时如何显示和编辑可扩充值。GetValue()方法返回可由不理解该可扩充值类型的电子数据表函数使用的OPER。
数值可由{Number,3}表示,而#DIV0可由{Error,7}表示,其中7是被零除的内部代码。
计算链处理各OPER。例如,考虑公式:=SQRT(A1/A2)。计算引擎首先计算A1和A2。A1和A2现在具有各自由OPER表示的最新值。计算引擎获取这两个OPER并将他们相除以生成表示该结果的新OPER。所得的OPER取决于是否发生被零除可以是出错值OPER或数字OPER。随后将该OPER传递给SQRT,该SQRT构造一个新的OPER作为其结果。
考虑一个涉及可扩充类型的示例。假设MDX成员是期望被添加的新可扩充值类型之一。为此,存在一个类对象MDX_Member,即ExtensibleValue的一个子类。该类具有用于该成员标题和唯一MDX名的专用字段。MDX_Membe类的GetValue方法返回Text OPER,其“值”字段设置为MDX成员的标题,而extensibleValue字段设置为MDX_Member对象。以此方式,现有的电子数据表函数只看见Text OPER,但是任何知晓MDX的函数可以在extensibleValue字段内看见该MDX_Member对象。ExtensibleValue对象*是*该值;OPER包装仅高速缓存返回该值的函数的结果,诸如对该值的GetValue调用。
移至操作330,定义可扩充值类型的显示特征。显示特征定义了可扩充值应该如何在单元格内显示以及可扩充值如何被查看和编辑。根据一个实施例,开发者定义可扩充值如何在单元格内显示其本身(DisplayYourself())以及可扩充值如何被查看编辑(PopUpViewer())。例如,对于图片可扩充值, DisplayYourself()定义可以指定在单元格内显示该图片的图标。PopUpViewer()定义指定可扩充值如何被查看和编辑。根据一个实施例,当用户选择单元格内的可扩充值表示时,向用户显示由PopUpViewer()定义所定义的查看器。对于许多可扩充值,诸如标准图像类型,查看器和编辑器轻易可用以用于与包含在一个或多个单元格内的可扩充值交互。一般而言,可扩充值的显示留给开发者(参见图5和相关讨论)。
行进至操作340,定义可以包括可扩充值应该如何由受电子数据表支持的基础公式处理。如前所述,可扩充值可被包括在不理解该可扩充值且仅对受支持的基础值进行操作的公式内。例如,假设Sum(求和)公式中包括可扩充值(MyList),诸如:=Sum(Filter(MyList,...);其中MyList(我的列表)是新的List(列表)值,Filter(过滤器)消费MyList以生成新的(更小的)列表作为其结果。“旧的”函数Sum期望接收数组值类型作为其自变量,但给出的是List值类型根据一个实施例,只要函数或公式接收到不是它期望的值,自变量就“向下强制转换”至它期望的值类型。在当前的示例中,My List值强制转换为数组类型。在此情况下,My List值类型的定义包括将列表值类型强制转换为数组类型的操作。
另举一例,假设单个单元格,诸如A3包含可扩充MDX成员值,诸如:=A3&“Wubble”。受支持的基础字符串拼接操作“&”期望其自变量是字符串。然而在此示例中,A3的值是可扩充MDX成员值类型。如果&操作符没有被MDX成员可扩充定义覆盖,这该MDX成员值就被向下强制转换成依据受支持定义的字符串。例如,定义可以陈述何时期望字符串返回MDX成员名。
根据一个实施例,向下强制转换提早进行,使得不知道该可扩充值的任何函数都能够看见受支持的值,并且可以在操作中使用该值。以此方式,基础函数继续以某种方式工作。根据另一个实施例,向下强制转换不提早进行。在此情况下,计算引擎可以在它调用基础函数的前一刻进行向下强制转换。
在操作350处,可扩充值类型的定义及其支持的函数被加入电子数据表应用程序。该函数可被包括在应用程序内,从而能够像对基础函数那样的方 式对其进行访问。根据一个实施例,定义可被加入一表格并在调用时被访问。
转换至操作360,电子数据表提供对可扩充值类型及其支持函数的访问。以此方式,任何用户都可以与包括文本字符串、数字等相同的方式在他们的电子数据表内包括受支持的可扩充值数据类型。
随后该进程移至结束框并返回以处理其它动作。
图4根据本发明各方面显示在电子数据表内使用可扩充值类型的过程。在开始操作之后,过程行进至定义操作410,其中在电子数据表的单元格内包括至少一个可扩充数据值。可扩充值根据包括有可扩充值类型定义的DisplayYourself()定义来显示。
移至操作420,电子数据表内的至少一个公式包括可扩充值作为它的一个参数。公式可以调用已经为该可扩充值数据类型专门开发的函数,和/或公式可以调用期望不同值类型的函数。为了让不理解可扩充值数据类型的公式生成结果,提供定义以将该可扩充值数据类型强制转换成该函数支持的数据类型之一。
行进至操作430,访问包括一个或多个可扩充值的函数。根据一个实施例,该函数位于函数表内。
移至操作440,求值该电子数据表。该电子数据表的求值是基于其内的函数以及包含在各单元格内值而进行的。以此方式,包含可扩充值的每一单元格都可由函数进行合适作用。
在操作450,可将查询及所执行的任何计算的结果向用户显示。在单元格包含可扩充值的情况下,该显示可由可扩充值的DisplayYourself()方法执行,于是就完全处于开发该可扩充类型的用户的控制之下。随后该进程移至结束框并返回以处理其它动作。
图5示出了可扩充值的显示、查看和编辑。因为可在电子数据表内定义和利用的可扩充值数量是无限的,所以图5中示出的可扩充值仅出于示例性目的而非作为限制。
电子数据表的单元格B4示出了关于收益率曲线的可扩充值。收益率曲线可扩充值的显示已由DisplayYourself()方法定义,从而示出了更大的收益率 曲线的图标显示。当选择单元格B4时,弹出的查看器显示收益率曲线510。一旦显示收益率曲线510,用户可以按需操控该收益率曲线。
电子数据表的单元格A1示出了关于图片的可扩充值。在此示例中,图片可扩充值在单元格内显示为图片的文本描述。当选择单元格A1时,将图片520显示给用户。
电子数据表的单元格C1示出了关于复数值的可扩充值。复数值可扩充值的显示已由DisplayYourself()方法定义,从而示出了该复数值。当选择单元格C1时,弹出的查看器显示该复数值530。作为替换,DisplayYourself()和PopUpViewer()定义可以使用标准电子数据表查看器进行操控和操控。在此情况下,可以通过简单地在单元格处键入文本来操控该复数值。
电子数据表的单元格E4示出了与数组有关的可扩充值。数组可扩充值的显示已由DisplayYourself()方法定义,从而示出了该可扩充值是数组的事实以及该数组的代表值。在此示例中,开发者将代表值定义为求和或者包含在该数组内的各值。当选择单元格E4时,弹出的查看器显示数组540。一旦数组540被显示,用户可以按需操控该数组。
从该示例中可以看出,可扩充值可以在单元格内以各种不同的方式显示,并且可以使用各种方法来对其进行查看和编辑。定义可扩充值类型的开发者可以确定在单元格内表示该可扩充值的最佳方式,以及查看并编辑该可扩充值的最佳方式。
以上说明、示例和数据提供了对本发明成分的制造和使用的全面描述。因为可以在不背离本发明的精神和范围的情况下做出本发明的许多实施例,所以本发明落在所附权利要求的范围内。