根据电子表格创建文本函数的制作方法

文档序号:6360898阅读:215来源:国知局
专利名称:根据电子表格创建文本函数的制作方法
根据电子表格创建文本函数背景I.背景和相关技术 计算机系统和相关技术影响社会的许多方面。的确,计算机系统处理信息的能力已转变了人们生活和工作的方式。计算机系统现在通常执行在计算机系统出现以前手动执行的许多任务(例如,文字处理、日程安排和会计等)。最近,计算机系统彼此耦合并耦合到其它电子设备以形成计算机系统和其它电子设备可在其上传输电子数据的有线和无线计算机网络。因此,许多计算任务的执行分布在多个不同的计算机系统和/或多个不同的计算环境中。更具体地,电子表格程序被用在各种不同的环境中。在一些更专业的环境中,电子表格被用在技术计算中。例如,域专家可使用电子表格来构建和运行模型并且从这一形式所提供的快速原型构造中获益。然而,当输入对模型的变更时,使用电子表格作为编程语言的基本局限使得它们很难重用和维护。例如,用户可能必须在多个不同字段中手动地重新输入数据以实现变更。因此,当在这些环境中使用时电子表格通常变得杂乱且难以处理。有些技术使用可嵌入在电子表格内的编程语言构造。但是这些技术缺乏用于从电子表格提取函数的任何机制。其它技术试图通过用源代码取代整个计算链来缓解这些困难。这些其它技术为电子表格提供一定级别的“代码分离(code behind)”。但是这些其它技术缺乏模块性,因为它们取代具有非常少的(如果有的话)结构的大的计算块。简要概沭本发明涉及用于根据电子表格创建文本函数的方法、系统和计算机程序产品。选择电子表格的页面中的一个或多个结果单元格。所述一个或多个结果单元格存储表示执行所述电子表格内的多个公式的结果的相对应的一个或多个值。标识与所述一个或多个结果单元格相关的多个其它单元格中的值。所述多个其它单元格中的每一个中的值与所述多个公式中的一个或多个的组合的执行相对应。标识与所述多个其它单元格中的值相关的另外单元格中的附加数据。所述附加数据描述所述多个其它单元格中的所述值。使用所标识的附加数据来生成供在编程语言中使用的本地变量。所述本地变量与所述多个其它单元格中的所述值相对应。根据所述多个公式和所生成的本地变量生成表示函数的语义树。所述语义树可编译成为被配置为计算表示所述结果的值的可执行代码。提供本概述以便以简化的形式介绍将在以下的详细描述中进一步描述的一些概念。本概述并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。本发明的附加特征和优点将在以下描述中叙述,且其一部分根据本描述将是显而易见的,或可通过对本发明的实践来获知。本发明的特征和优点可通过在所附权利要求书中特别指出的工具和组合来实现和获得。本发明的这些和其它特征将通过以下描述和所附权利要求书变得更加显而易见,或可通过对下文中所述的本发明的实践来领会。
附图简沭为了描述可获得本发明的上述和其它优点和特征的方式,将通过参考附图中示出的本发明的具体实施例来呈现以上简要描述的本发明的更具体描述。可以理解,这些附图仅描述本发明的典型实施例,从而不被认为是对其范围的限制,本发明将通过使用附图用附加特征和细节来描述和说明,在附图中图I示出了便于根据电子表格创建文本函数的示例计算机体系结构。图2示出了用来根据电子表格创建文本函数的示例方法的流程图。图3不出了用于创建文本函数的电子表格的一部分和相对应的用户界面。
具体实施例方式本发明涉及用来根据电子表格创建文本函数的方法、系统和计算机程序产品。选择电子表格的页面中的一个或多个结果单元格。所述一个或多个结果单元格存储表示执行所述电子表格内的多个公式的结果的相对应的一个或多个值。标识与所述一个或多个结果单元格相关的多个其它单元格中的值。所述多个其它单元格中的每一个中的值与所述多个公式中的一个或多个的组合的执行相对应。标识与所述多个其它单元格中的值相关的另外单元格中的附加数据。所述附加数据描述所述多个其它单元格中的所述值。使用所标识的附加数据来生成供在编程语言中使用的本地变量。所述本地变量与所述多个其它单元格中的所述值相对应。根据所述多个公式和所生成的本地变量生成表示函数的语义树。所述语义树可编译成为被配置为计算表示所述结果的值的可执行代码。本发明的各实施例可包括或利用专用或通用计算机,该专用或通用计算机包括诸如例如一个或多个处理器和系统存储器等计算机硬件,如以下更详细讨论的。本发明范围内的各实施例还包括用于承载或存储计算机可执行指令和/或数据结构的物理和其它计算机可读介质。这样的计算机可读介质可以是可由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。承载计算机可执行指令的计算机可读介质是传输介质。由此,作为示例而非限制,本发明的各实施例可包括至少两种完全不同的计算机可读介质计算机存储介质和传输介质。计算机存储介质包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁存储设备、或可用于存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其它介质。“网络”被定义为允许在计算机系统和/或模块和/或其它电子设备之间传输电子数据的一个或多个数据链路。当信息通过网络或另一个通信连接(硬连线、无线、或者硬连线或无线的组合)传输或提供给计算机时,该计算机将该连接适当地视为传输介质。传输介质可包括可用于携带计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的网络和/或数据链路。上述的组合也应被包括在计算机可读介质的范围内。此外,在到达各种计算机系统组件之后,计算机可执行指令或数据结构形式的程序代码装置可从传输介质自动转移到计算机存储介质(或者相反)。例如,通过网络或数据链路接收到的计算机可执行指令或数据结构可被缓存在网络接口模块(例如,“NIC”)内的RAM中,然后最终被传输到计算机系统RAM和/或计算机系统处的较不易失性的计算机存储介质。因而,应当理解,计算机存储介质可被包括在还利用(或甚至主要利用)传输介质的计算机系统组件中。计算机可执行指令例如包括,当在处理器处执行时使通用计算机、专用计算机、或专用处理设备执行某一功能或某组功能的指令和数据。计算机可执行指令可以是例如二进制代码、诸如汇编语言之类的中间格式指令、或甚至源代码。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上述特征和动作是作为实现权利要求的示例形式而公开的。本领域的技术人员将理解,本发明可在具有许多类型的计算机系统配置的网络计算环境中实践,这些计算机系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器的或可编程消费电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机等等。本发明也可在其中通过网络链接(或者通过硬连线数据链路、无线数据链路,或者通过硬连线和无线数据链路的组 合)的本地和远程计算机系统两者都执行任务的分布式系统环境中实施。在分布式系统环境中,程序模块可位于本地和远程存储器存储设备中。本发明的实施例从电子表格提取函数并以文本形式表示函数。用文本形式表示促进代码重用、澄清、表达能力和更好的性能。文本可用基本上任何编程语言呈现,诸如例如C#、C++、Visual Basic (“VB”)等。在一些实施例中,利用了支持电子表格可兼容的数据类型和函数的编程语言可扩展性。图I示出了便于根据电子表格创建文本函数的示例计算机体系结构100。参考

图1,计算机体系结构100包括电子表格101、参数选择模块111、分析模块121、转换器131、和编译器133。所描绘的组件中的每一个都通过诸如例如局域网(“LAN”)、广域网(“WAN”)或甚至因特网之类的网络彼此连接(或者是网络的一部分)。因此,所描绘的组件中的每一个以及任何其它连接的计算机系统及其组件都可创建消息相关数据并通过网络交换消息相关数据(例如,网际协议(“IP”)数据报和利用IP数据报的其它更高层协议,诸如传输控制协议(“TCP,,)、超文本传输协议(“HTTP”)、简单邮件传输协议(“SMTP,,)等)。电子表格101包括安排在网格(grid)中的多个单元格。单元格通过列id、行id表示。例如,单元格A2指包含值104的单元格。另一方面,单元格D3是空的。电子表格101可在电子表格应用内运行,诸如例如Microsoft‘'Excel'' !通常参数选择模块111被配置为从电子表格接收一个或多个值并导出供在与电子表格相对应的、基于文本的公式中使用的参数。自动选择模块112被配置为自动地从电子表格101选择值供导出参数时使用。自动选择的值可与用户选择的值替换地或组合地使用以导出参数。调整模块113被配置为在选择后调整值。例如,可使用调整模块113来取消选择参数或选择不同的单元格用作输入。通常分析模块121被配置为分析电子表格和相对应的参数并生成表示文本函数的语义树。解析器122可从结果单元格中的结果值开始解析电子表格内的公式并反向解析用来计算结果值的一个或多个公式。依赖关系检测模块123可标识一个或多个公式中的值之间的依赖关系。本地变量生成器124可生成变量以包括在文本函数中。变量名可根据电子表格中明确定义的名字来推断或根据与给定单元格相邻的单元格(例如,一个单元格中描述另一单元格中的数据的评论)来猜测。语义树生成器126可生成表示电子表格中的公式的语义树。转换器131被配置为将语义树转换成为源代码(文本)。编译器133被配置为将源代码编译成为可执行代码。图2示出了用来根据电子表格创建文本函数的示例方法200的流程图。方法200将参考计算机架构100的组件和数据来描述。方法200包括选择电子表格的页面中的一个或多个结果单元格的动作,所述一个或多个结果单元格存储表示执行所述电子表格内的多个公式的结果的相应的一个或多个值(动作201)。例如,自动选择模块112可从电子表格101的单元格C5和D6选择值102和
103。值102和103可表不执行电子表格101内的一个或多个公式的结果。在一些实施例中,选择连续范围的单元格。参数选择模块111可使用值102和103 (有可能进一步使用通·过调整模块113输入的的修改)来生成参数114。方法200包括标识与所述一个或多个结果单元格相关的多个其它单元格中的值的动作,所述多个其它单元格中的每一个中的所述值与所述多个公式中的一个或多个的组合的执行相对应(动作202)。例如,解析器122可标识单元格A2、A3、B2和A5各自中的值
104、106、107和111。分析模块121可确定值104、106、107和111与值102和103相关。例如,值104、106、107和111可以是在计算值102和103的公式中使用的中间值。依赖关系检测模块123可确定何时中间公式中的值依赖于值102和/或103。方法200包括标识与所述多个其它单元格中的所述值相关的另外单元格中的附加数据的动作,所述附加数据描述所述多个其它单元格上的所述值(动作203)。例如,本地变量生成器124可将数据108、109和141标识为相关于(并可能描述)单元格A2、A3和B2中的值104、106和107。例如,数据108、109和141可包括描述变量和/或指示使用什么公式生成值104、106和107的评论。方法200包括使用所标识的附加数据生成供在编程语言中使用的本地变量的动作,所述本地变量与所述多个其它单元格中的所述值相对应(动作204)。例如,本地变量生成器124可生成供在编程语言中使用的本地变量。本地变量可与单兀格A2、A3和B2中的值104、106和107中的值相对应。方法200包括根据所述多个公式和所生成的本地变量生成表示函数的语义树的动作,所述语义树可编译成为被配置为计算表示所述结果的所述一个或多个值的可执行代码(动作205)。例如,语义树生成器126可生成表示函数的语义树127。语义树127可根据电子表格101中的公式和由本地变量生成器124生成的本地变量而生成。语义树127可编译成为可计算值102和103的可执行代码。转换器131可将语义树127转换成为一种或多种编程语言的源代码132。编译器133可将源代码132编译成为可执行134。图3示出了用于创建文本函数的电子表格301的一部分和相对应的用户界面311。名字312 “CallPrice”表示结果函数的名字。参数313可由参数选择模块(例如,类似于111)从电子表格301内标识。源代码314表不来自电子表格301的一个或多个公式。用户可选中(check)或取消选中参数313中的参数以指示什么参数被传递进函数“CallPrice”中以及什么参数被自动地根据电子表格301中的值填充。因此,本发明的实施例许可用户通过选中电子表格的结果单元格来创建新函数。分析过程可在电子表格上运行,从结果单元格开始并收集所有的单元格依赖关系。根据计算中的叶节点自动地供应参数列表。用户可任选地取消选中这些参数或选取(作为计算的一部分的)不同的单元格用作输入。所选择的计算的区成为函数。由此,电子表格的子集可被捕捉并在不同的执行引擎上运行。产生的函数可与电子表格经由UDF扩展性模块(诸如Excel的XLL)互操作以许可函数被调用如表格上所需要的多次。还可将函数编译成为由其它编程语言在电子表格之外使用的库。函数可捕捉所选择的电子表格的子集的计算语义。更具体地,函数重用电子表格库和运算符,以及操作的次序。重用允许用户确信所选择的函数行为类似于从中提取了它的电子表格的部分。
可用试探法来使源代码更有可读性。变量名可或者根据电子表格上明确定义的名字来推断,或者根据与给定单元格相邻的单元格来猜测。此外,可将代码评论从电子表格中提起。位置遵守计算次序并可使用电子表格中可用的提示来达到类似的次序。当电子表格变更时,产生的代码可通过重新运行分析来自动地更新。分析也可输出单元格和文本中的位置之间的映射。映射可由其它工具使用,例如用来相对代码的区域突出显示表单中的区域,反之亦然。函数的源代码还可用多个语言生成。在一些实施例中,使用“精确”模式以增加的准确度来捕捉语义。精确模式可包括代码中电子表格可兼容的函数和数据类型。在其它实施例中,使用“近似”模式。近似模式只要可能就使用目标语言中的函数和数据类型。近似模式产生有完全兼容性的更少变更。然而,在近似模式中生成的代码在目标语言中看起来更自然,并通常可更高效。本发明可在不背离其精神或本质特征的情况下体现为其它具体形式。所描述的实施例在所有方面都应被认为仅是说明性而非限制性的。因此,本发明的范围由所附权利要求书而非前述描述指示。落入权利要求书的等效方案的含义和范围内的所有改变被权利要求书的范围所涵盖。
权利要求
1.一种在包括一个或多个处理器和系统存储器的计算机系统处的用于将电子表格的一部分转换成为可编译的函数的方法,所述方法包括 选择电子表格的页面中的一个或多个结果单元格的动作,所述一个或多个结果单元格存储表示执行所述电子表格内的多个公式的结果的相对应的一个或多个值; 标识与所述一个或多个结果单元格相关的多个其它单元格中的值的动作,所述多个其它单元格中的每一个中的所述值与所述多个公式中的一个或多个的组合的执行相对应; 标识与所述多个其它单元格中的所述值相关的另外单元格中的附加数据的动作,所述附加数据描述所述多个其它单元格上的所述值; 使用所标识的附加数据生成供在编程语言中使用的本地变量的动作,所述本地变量与所述多个其它单元格中的所述值相对应;以及 根据所述多个公式和所生成的本地变量生成表示函数的语义树的动作,所述语义树可编译成为被配置为计算表示所述结果的所述一个或多个值的可执行代码。
2.如权利要求I所述的方法,其特征在于,所述选择一个或多个结果单元格的动作包括选择多个结果单元格的动作,所述多个结果单元格包括第一结果单元格和第二结果单元格,所述第二结果单元格中的值独立于所述第一结果单元格中的值。
3.如权利要求I所述的方法,其特征在于,所述选择一个或多个结果单元格的动作包括选择连续范围的结果单元格的动作。
4.如权利要求I所述的方法,其特征在于,所述标识与所述多个其它单元格中的所述值相关的另外单元格中的附加数据的动作包括标识被包括在所述另外单元格中的评论的动作。
5.如权利要求4所述的方法,其特征在于,所述使用所标识的附加数据生成供在编程语言中使用的本地变量的动作包括使用所标识的评论选择所述本地变量的变量名的动作。
6.如权利要求I所述的方法,其特征在于,还包括将所述语义树转换成为一种或多种不同编程语言的源代码的动作。
7.如权利要求6所述的方法,其特征在于,还包括将所述源代码从所述不同编程语言中的一种编译成为可执行程序的动作。
8.如权利要求I所述的方法,其特征在于,所述标识与所述一个或多个结果单元格相关的多个其它单元格中的值的动作包括标识供在所述函数中使用的参数的动作。
9.如权利要求8所述的方法,其特征在于,还包括自动地填充所述参数的动作。
10.一种供在计算机系统处使用的计算机程序产品,所述计算机程序产品实现一种用来将电子表格的一部分转换成为可编译的函数的方法,所述计算机程序产品包括其上存储有计算机可执行指令的一个或多个计算机可读介质,所述计算机可执行指令当在处理器处执行时使所述计算机系统执行所述方法,其特征在于,所述方法包括以下动作 选择电子表格的页面中的一个或多个结果单元格,所述一个或多个结果单元格存储表示执行所述电子表格内的多个公式的结果的相对应的一个或多个值; 标识与所述一个或多个结果单元格相关的多个其它单元格中的值,所述多个其它单元格中的每一个中的所述值与所述多个公式中的一个或多个的组合的执行相对应; 标识与所述多个其它单元格中的所述值相关的另外单元格中的附加数据,所述附加数据描述所述多个其它单元格上的所述值;使用所标识的附加数据生成供在编程语言中使用的本地变量,所述本地变量与所述多个其它单元格中的所述值相对应;以及 根据所述多个公式和所生成的本地变量生成表示函数的语义树,所述语义树可编译成为被配置为计算表示所述结果的所述一个或多个值的可执行代码。
11.如权利要求10所述的计算机程序产品,其特征在于,在执行时使所述计算机系统标识与所述多个其它单元格中的所述值相关的另外单元格中的附加数据的计算机可执行指令包括在执行时使所述计算机系统标识被包括在所述另外单元格中的评论的计算机可执行指令。
12.如权利要求10所述的计算机程序产品,其特征在于,还包括在执行时使所述计算机系统将所述语义树转换成为一种或多种不同编程语言的源代码的计算机可执行指令。
13.如权利要求10所述的计算机程序产品,其特征在于,在执行时使所述计算机系统标识与所述一个或多个结果单元格相关的多个其它单元格中的值的计算机可执行指令包括在处理器处执行时使所述计算机系统标识供在所述函数中使用的参数的计算机可执行指令。
14.一种计算机系统,其特征在于,所述计算机系统包括 一个或多个处理器; 系统存储器;以及 一种或多个计算机存储介质,所述计算机存储介质上存储有表示参数选择模块、分析模块、转换器和编译器的计算机可执行指令,其中所述参数选择模块被配置为 选择电子表格的页面中的一个或多个结果单元格,所述一个或多个结果单元格存储表示执行所述电子表格内的多个公式的结果的相对应的一个或多个值; 标识与所述一个或多个结果单元格相关的多个其它单元格中的值,所述多个其它单元格中的每一个中的所述值与所述多个公式中的一个或多个的组合的执行相对应; 其中所述分析模块被配置为 标识与所述多个其它单元格中的所述值相关的另外单元格中的附加数据,所述附加数据描述所述多个其它单元格上的所述值; 使用所标识的附加数据生成供在编程语言中使用的本地变量,所述本地变量与所述多个其它单元格中的所述值相对应;以及 根据所述多个公式和所生成的本地变量生成表示函数的语义树,所述语义树可编译成为被配置为计算表示所述结果的所述一个或多个值的可执行代码; 其中所述转换器被配置为将所述语义树转换成为一种或多种不同编程语言的源代码;以及 其中所述编译器被配置为将所述源代码从所述多种不同编程语言中的一种编译成为可执行程序。
15.如权利要求14所述的计算机系统,其特征在于,所述转换器被配置为将所述语义树转换成为一个或多个不同编程语言的源代码包括所述转换器被配置为将所述语义树转换成为C#、C++和Visual Basic中的一种或多种的源代码。
全文摘要
本发明涉及用于根据电子表格创建文本函数的方法、系统和计算机程序产品。本发明的实施例从电子表格提取函数并用文本形式表示函数。用文本形式表示促进代码重用、澄清、表达能力和更好的性能。文本可用基本上任何编程语言程序呈现,诸如例如C#、C++、Visual Basic(“VB”)等。在一些实施例中,利用了支持电子表格可兼容的数据类型和函数的编程语言可扩展性。
文档编号G06F17/21GK102939585SQ201180029494
公开日2013年2月20日 申请日期2011年5月25日 优先权日2010年6月15日
发明者J·B·梅瑟利, J·J·乌格宁, J·M·斯托尔, C·O·哈根洛赫 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1