CN104040535A - 自定义浏览器侧电子表格函数 - Google Patents

自定义浏览器侧电子表格函数 Download PDF

Info

Publication number
CN104040535A
CN104040535A CN201380005102.6A CN201380005102A CN104040535A CN 104040535 A CN104040535 A CN 104040535A CN 201380005102 A CN201380005102 A CN 201380005102A CN 104040535 A CN104040535 A CN 104040535A
Authority
CN
China
Prior art keywords
user
defined function
udf
browser
spreadsheet
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201380005102.6A
Other languages
English (en)
Other versions
CN104040535B (zh
Inventor
D·C·巴塔金
S·普里什
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN104040535A publication Critical patent/CN104040535A/zh
Application granted granted Critical
Publication of CN104040535B publication Critical patent/CN104040535B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45529Embedded in an application, e.g. JavaScript in a Web browser
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • G06F16/986Document structures and storage, e.g. HTML extensions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/177Editing, e.g. inserting or deleting of tables; using ruled lines
    • G06F40/18Editing, e.g. inserting or deleting of tables; using ruled lines of spreadsheets

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

一种启用在主存页面中以及从电子表格内调用用户定义函数(UDF)的能力的体系结构。UDF可被用于向电子表格模型添加功能。电子表格计算跨后端计算服务器和web浏览器传播。电子表格计算状态随浏览器函数被计算而被维护。此外,浏览器UDF可被同步或异步执行。该体系结构还提供在运行时动态注册/注销UDF(随后可从电子表格模型中调用(并远程执行))的能力,以及定义可包括全部UDF定义的清单的能力。还防止无限计算循环的情况。UDF具有对页面DOM(文档对象模型)的完全访问。

Description

自定义浏览器侧电子表格函数
背景
在构建围绕电子表格模型的解决方案时,通常需要提供除构建到电子表格应用内部的功能以外的功能。这对于可能有更少的特征的基于网络的服务特别适用。
然而,在基于网络的服务中提供可扩展性是复杂的。例如,实际计算服务可能是安全的,且不像本地地运行电子表格应用的个人计算机那样,基于网络的服务很少由创建/运行工作簿(或其它类型的文件格式)模型的用户“拥有”。因此,归因于整个服务的可靠性和安全性的关注,将终端用户代码运行成模型的部分通常是不可行的。
发明内容
下面提供了简化的发明内容,以便提供对此处所描述的一些新颖实施例的基本理解。本发明内容不是广泛的概览,并且它不旨在标识关键/重要元素或描绘本发明的范围。其唯一的目的是要以简化形式给出一些概念以为稍后给出的更加具体的说明之序。
所揭示的体系结构采用用户定义函数(UDF),以通过在用户个人计算机的web浏览器的上下文中运行自定义函数UDF来克服现有的限制。因此,UDF不对后端服务造成相同的可靠性和安全性关注,而仍允许作者的解决方案自定义(假设作者可对网页的内容进行写控制,该网页主存例如工作簿等文件的运行时表示)。
通常,该体系结构提供在主存页面内从电子表格内调用函数的能力,将电子表格计算跨后端计算服务器和web浏览器传播,随着浏览器函数被计算来维护电子表格计算状态,并提供同步或异步执行浏览器UDF的能力。此外,该体系结构提供在运行时动态注册/注销UDF(随后可从电子表格模型中调用(但远程执行))的能力、定义可包括全部UDF定义的清单的能力,并防止无限计算循环的情况。
为了实现上述及相关目的,本文结合下面的描述和附图来描述某些说明性方面。这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。结合附图阅读下面的详细描述,其他优点和新颖特征将变得显而易见。
附图说明
图1示出根据所公开的体系结构的系统。
图2示出了在后端计算服务和客户机侧浏览器之间的流程图。
图3示出了在后端计算服务和客户机侧浏览器之间的替换的流程图。
图4示出根据所公开的体系结构的方法。
图5示出图4的方法的更多方面。
图6示出根据所公开的体系结构的替代方法。
图7示出图6的方法的更多方面。
图8示出了执行根据所公开的体系结构的浏览器侧用户定义函数的计算系统的框图。
具体实施方式
所揭示的体系结构允许在主存页中以及从主存在web页面中的电子表格内调用函数(UDF-用户定义函数)的能力。UDF可被用于向电子表格模型添加功能。电子表格计算跨后端计算服务器和web浏览器传播。电子表格计算状态随浏览器函数被计算而被维护。此外,浏览器UDF可被同步或异步执行。该体系结构还提供在运行时动态注册/注销UDF(随后可从电子表格模型中调用(并远程执行))的能力,以及定义可包括全部UDF定义的清单的能力。还防止无限计算循环的情况。UDF可具有对网页DOM(文档对象模型)以及由电子表格运行时环境使得对其可用的任何其它资源的完全访问(这些资源可能不存在于包含网页上)。
用户定义函数(例如JavaScriptTM)是可由网页的作者创作的UDF,并通过主存在同一页中的电子表格文件格式(诸如工作簿)来调用。(以下,文件格式指工作簿;但是,可以理解该描述一般适用于可被用作电子表格的部分的任何文件格式。)这些UDF允许和其它电子表格UDF(例如计算、外部数据等)相同类型的可扩展性,但是目标是web类型的情形,因为UDF依赖于网页上下文来实现。
由于JavaScript UDF在网页中(主体包含在其中)而不是在工作簿中实现,所以UDF可以(经由div聚合(亦称div嵌入);div HTML(超文本标记语言标签))从嵌入在页面中的工作簿调用。
现在将参考附图,全部附图中相同的附图标记用于指代相同的元素。在下面的描述中,为了进行说明,阐述了很多具体细节以便提供对本发明的全面理解。然而,显而易见,可以没有这些具体细节的情况下实施各新颖实施例。在其他情况下,以框图形式示出了各个公知的结构和设备以便于描述本发明。本发明将涵盖落入所要求保护的主题的精神和范围内的所有修改、等效方案和替换方案。
图1示出根据所公开的体系结构的系统100。系统100可包括在客户机设备的web浏览器104的上下文中运行的用户定义函数102。用户定义函数102可经由web浏览器104从主存在网页108中的电子表格106调用。用户定义函数102根据脚本语言(例如JavaScript)来编写。web浏览器104和后端计算服务110共享用户定义函数102的电子表格计算。随着用户定义函数102被计算,电子表格计算状态被维护。用户定义函数102可被同步或异步执行。用户定义函数102可在运行时被动态注册和注销。用户定义函数102可被列在清单中,并从该清单加载。电子表格106基于div聚合嵌入在网页108中。
图2示出了在后端计算服务110和客户机侧浏览器104之间的流程图200。该总体流程图在采用电子表格计算服务110(例如可包括Excel计算服务ECS的Excel服务TM)以及用于呈现Excel文件格式(被称为工作簿)的web前端的上下文中描述。Excel服务可使用异步模型来计算JavaScript UDF。
流从202开始,客户机侧的用户访问网页来使得服务110通过浏览器104呈现工作簿。在204,(例如,通过编辑、刷新等)计算操作从(通过访问了Excel web应用-EWA的)浏览器104开始,直到服务110,其中服务110计算其尽可能多的计算链(执行一遍计算)。当服务110遭遇(例如,因为改变了的参数或因为UDF易失)要被计算的JavaScript UDF(被表示为JS UDF)时,在206,JavaScript UDF被添加到函数的列表以在浏览器104中计算。
一旦没有更多依赖性可被服务110计算时,“半计算”结果连同JavaScriptUDF的列表被发送回浏览器104中的EWA,以在浏览器104中计算。浏览器104计算该JavaScript UDF。浏览器104(通过EWA)按照以下顺序(例如串行地)发起每个JavaScript UDF的计算:异步JavaScript UDF,随后是同步JavaScript UDF。在208,一旦全部的JavaScript UDF被计算,结果被返回服务110,以被插入计算链,且用返回的值重新开始计算。在210,计算结果在浏览器104(它的EWA)中呈现。
图3示出了在后端计算服务110和客户机侧浏览器104之间的示意流程图300。服务110和浏览器104之间的移交可被配置以在单个计算操作期间发生预定次数(例如,五),以防止无限计算的情形。因此,在302,第二或附加的一遍计算可在步骤208之后被执行,而不是移到在前面的流程图200中的210以呈现计算结果。一旦服务110确定全部的依赖性已经被计算,且计算完成了或服务110已到达了循环计数限制,则服务110通知(浏览器104的)EWA计算操作完成。在302,计算结果在浏览器104(它的EWA)中呈现。继续直到到达循环限制。在304,JavaScript UDF被返回到浏览器104中的EWA,且在210,计算结果在浏览器104(它的EWA)中呈现。
在计算操作期间,可通过将单元格的值设置为诸如#GETTING_DATA等值来通知用户未决的计算。因为触及循环限制而未计算的JavaScript UDF留在#GETTING_DATA状态中。
由于在浏览器104中每轮计算JS UDF之后,计算在服务器(服务110)重新开始,所以使用迭代计算的工作簿可显得已经通过了每轮JS UDF计算的迭代。
由于计算操作,EWA将不阻止用户交互。在整个计算操作完成之前改变模型的任何用户操作将中止当前的计算操作,并从头重新开始该计算操作。已中止的计算操作的异步JavaScript UDF所返回的值将被忽略。由于JavaScript可导致浏览器阻塞,所以同步的JavaScript UDF可有效地阻止在JavaScript UDF正在被计算的部分计算操作期间的用户交互。JavaScript UDF在所有计算模式中(例如,自动、手动等)相同地重新计算。当计算被调用时,所有的identically重新计算,不论状态。
在一个示例情形中,用户可使用通常从证券报价网站获得的功能来通过浏览器提供对工作簿的“任何地方”访问。在这个示例中,用户可复制并粘贴JavaScript的部分,并获得用户的工作簿的嵌入式代码。然后,用户能够在工作簿中输入公式和证券报价,例如,开始实时显示。粘贴到浏览器页面的使之可行的JavaScript可看起来如下:
在另一个示例情形中,用户使用电子表格工作簿来跟踪感兴趣的房地产财产。用户将工作簿以及嵌入式测绘组件嵌入一页面中,并采用JavaScript UDF来异步地在地图上创建每个房地产的定位,并返回该定位的纬度和经度,而不是持续地将地址复制/粘贴到测绘点以看出房地产位于哪里。
粘贴到浏览器页面的使之可行的JavaScript可看起来如下:
在简单计算用户示例中,用户可采用在许多用户工作簿中例行使用的且没有被构建到电子表格应用中的常见的“实用程序”函数。使用JavaScript UDF,用户可为用户自定义网页中的工作簿提供简单函数体。因此,除了使用电子表格应用中的工作簿之外,用户现在可在web浏览器中使用包含UDF的工作簿。只要用户使用相同函数名称,用户无需改变工作簿本身来使其可行。
被粘贴到浏览器页面中的使其可行的JavaScript可看起来如下:
可替换地,该功能可根据以下来实现:
以下是一种可能的特定实现的详细描述,以采用Excel电子表格和Excelweb应用的方式描述。然而,不应该以任何方式被解释为限制性的,因为所揭示的体系结构可在这个Excel电子表格/web应用上下文中,以及完全在Excel环境外被不同地使用。
可使用JavaScript来注册和注销JavaScript UDF。在页面中包括ewa.js展示了一种在由EWA avaScript OM(对象模型)定义的Ewa.EwaControl对象上的被称为getBrowserUdfs()(获取浏览器UDF)的新的方法。
BrowserUdfs getBrowserUdfs() (浏览器UDF获取浏览器UDF)
BrowserUdfs对象可具有以下方法:
这些方法可以具有以下性质:
boolean add(udfName,udfFunc,description,isVolatile,isAsync)
boolean exists(udfName)
boolean remove(udfName)
void removeAll()
在调用这些方法中的任何一个之后,不需要自动重新计算。在注册或注销JavaScript UDF之后,可作出对EWA JavaScript OM的调用以计算工作簿。这触发了计算,随后触发JavaScript UDF的执行。在注册/注销之后不需要自动重新计算。
函数可由Excel服务按照以下次序注册到模型/计算空间中:内置函数、Excel计算服务(ECS)UDF,以及随后JavaScript UDF。每个JavaScript UDF用跨Excel模型中所有函数唯一的udfName(udf名称)来注册。如果用户用相同的udfName(由ECS函数比较逻辑确定)来将JavaScript UDF注册为内置函数或ECS UDF,则注册成功,但现存函数占优。如果用户用与现有JavaScriptUDF相同的udfName来注册JavaScript UDF,则新JavaScript UDF代替现有JavaScript UDF。
通过BrowserUdfs.add来注册的JavaScript UDF被显示在下一次显示时自动完成的公式中。通过BrowserUdfs.remove来注销的JavaScript UDF不被显示在下一次显示时自动完成的公式中。
仅在JavaScript UDF被注册和计算发生之后尝试JavaScript UDF求解。在此之前,ECS可返回任何未识别函数的#NAME?且不尝试该函数的计算,即使函数实现被包含在主存页面中。
JavaScript UDF在由div嵌入式嵌入所支持的EWA的全部模式中被支持。EWA被嵌入在包含JavaScript UDF定义的页面中以便执行。这些模式包括,但不限于,视图模式和便签模式。
JavaScript UDF评估单用户和协作性会话中的#NAME?。当EWA处于编辑会话时,调用BrowserUdfs.add方法返回假。
参考参数和返回值,Excel服务可使用以下约定转换传递到JavaScript UDF的值并从JavaScript UDF返回值:
Excel类型 JavaScript类型
数值 数值
布尔 布尔
错误 不允许
丢失 未定义
空值
2D阵列 2D阵列
当范围被传递到JavaScript UDF时,Excel服务在将其传递到JavaScriptUDF之前将那个范围转换成值的阵列,而不是传递实际范围对象。
参考JavaScript UDF运行时环境,JavaScript UDF在web浏览器JavaScript环境中运行,并且大部分地,但不是全部地,不受限(即,JS UDF可做JavaScript运行时所允许的任何事情)。JS UDF可做以下事情:访问包含(通过div嵌入的)嵌入式EWA的页面的DOM,并使用XMLHTTP对象来作出HTTP请求(以从没有嵌入在该页面的其它位置获取数据)。
JavaScript UDF可在返回值之前同步地或异步地进行工作。在用BrowserUdfs.add注册时,异步运行的JavaScript UDF将isAsync参数设置为true,并将UDF的第一参数(由udfFunc参数指定)定义为context(上下文)参数。该context参数由UDF使用来向Excel服务返回一值,如下面所定义的。
一旦注册异步JavaScript UDF,Excel服务将UDF上的context参数设置到xlAsyncBrowserUdfContext对象。该对象具有以下属性:
如果开发者在JavaScript UDF中使用这一对象,这将在全局(JavaScript页面)范围中。
将JavaScript UDF包含在工作簿中,且对作为页面的部分的JavaScript UDF的求值不导致向用户显示任何关于运行自定义代码的提示。
在计算操作的持续时间内,JavaScript UDF调用的结果可被高速缓存。JavaScript UDF的具有相同输入的任何其它实例可使用来自高速缓存的值,而不是被单独地计算。
JavaScript UDF的实现不持久存储在调用它们的工作簿中;然而,包括对JavaScript UDF的调用的公式和任何其它公式一样持久存储/往返。这些公式中的UDF调用被以与储存在同一工作簿中的VBA(应用的Visual Basic)UDF相同的方式持久存储(即,调用就像仅函数调用一样被“未经装饰地”持久存储)。在此持久存储方法中,用户可通过嵌入式VBA、XLAM(Excel插件文件类型)、COM(组件对象模型)、XLL(Excel插件扩展)等,提供UDF在客户机侧上的实现,使得UDF也同样在Excel中工作,尽管实现可能不同。JavaScript UDF可被以Excel服务可保存的任何文件格式持久存储(例如SLSX(开放体系结构XML电子表格)、M、B)。
此处所包括的是一组表示用于执行所公开的体系结构的新颖方面的示例性方法的流程图。尽管出于解释简明的目的,此处例如以流程图或流程图表形式示出的一个或多个方法被示出并且描述为一系列动作,但是可以理解,各方法不受动作的次序的限制,因为根据本发明,某些动作可以按与此处所示并描述的不同的次序和/或与其他动作同时发生。例如,本领域的技术人员将明白并理解,方法可被替换地表示为一系列相互相关联的状态或事件,诸如以状态图的形式。此外,并非方法中所示出的所有动作都是新颖实现所必需的。
图4示出根据所公开的体系结构的方法。在400,从嵌入在网页中的电子表格调用嵌入在该网页中的用户定义函数。用户定义函数经由客户机的浏览器来调用。在402,用户定义函数被计算。在404,基于该计算,结果被呈现在电子表格中。
图5示出图4的方法的更多方面。注意,这一流程表明每一个框可代表一个步骤,其可单独或者与其他框结合,作为图4所示的流程图所表示的方法的额外方面。在500,用户定义函数在浏览器中被计算。在502,计算在web浏览器和后端计算服务之间共享。在504,随用户定义函数被计算,电子表格计算状态被维护。在506,浏览器用户定义函数被异步执行。在508,用户定义函数在运行时被注册和注销以用于由电子表格来调用以及远程执行。在510,创建全部的用户定义函数定义的清单。该清单是用于定义被当做集合来注册/注销的一群/一组浏览器UDF的方式。为了简便,这通常可在用户打算单独地注册/注销该组UDF的任何时候使用。
图6示出根据所公开的体系结构的替代方法。在600,从嵌入在网页中的电子表格调用嵌入在该网页中的用户定义函数。用户定义函数经由客户机的浏览器来处理。在602,用户定义函数使用浏览器和后端计算服务来计算。在604,随用户定义函数被计算,电子表格计算状态被维护。在606,基于计算在电子表格中呈现结果。
图7示出图6的方法的更多方面。注意,这一流程表明每一个框可代表一个步骤,其可单独或者与其他框结合,作为图6所示的流程图所表示的方法的额外方面。在700,网页的文档对象模型经由用户定义函数来访问。在702,计算处理被限制以防止无限计算循环的情形。在704,用户定义函数在运行时被注册和注销以用于由电子表格调用以及远程执行。在706,用户定义函数在web浏览器上下文中运行。
如在本申请中所使用的,术语“组件”和“系统”旨在表示计算机相关的实体,其可以是硬件、软件和有形硬件的组合、软件、或者执行中的软件。例如,组件可以是,但不限于,诸如处理器、芯片存储器、大容量存储设备(例如,光驱、固态驱动器、和/或磁存储介质驱动器)、以及计算机等有形组件,以及诸如运行在处理器上的进程、对象、可执行码、数据结构(储存于易失性或非易失性储存介质)、模块、执行的线程和/或程序等软件组件。作为说明,在服务器上运行的应用和服务器两者都可以是组件。一个或多个组件可以驻留在进程和/或执行的线程内,且组件可以位于一个计算机上和/或分布在两个或更多的计算机之间。词语“示例性”在此处可用于表示用作示例、实例或说明。在此被描述为“示例性”的任何方面或设计并不一定要被解释为相比其它方面或设计更优选或有利。
现在参考图8,示出了执行根据所公开的体系结构的浏览器侧用户定义函数的计算系统800的框图。然而,可以理解所披露的方法和/或系统的某些或全部方面可以实现为片上系统,其中模拟、数字、混合信号以及其他函数都在单个芯片基片上制作。为了提供用于其各方面的附加上下文,图8及以下讨论旨在提供对其中可实现各方面的合适的计算系统800的简要概括描述。尽管以上描述是在可在一个或多个计算机上运行的计算机可执行指令的一般上下文中进行的,但是本领域的技术人员将认识到,新颖实施例也可结合其它程序模块和/或作为硬件和软件的组合来实现。
用于实现各方面的计算系统800包括计算机802,其具有处理单元804、诸如系统存储器806等的计算机可读存储、以及系统总线808。处理单元804可以是各种市场上可买到的处理器中的任一种,诸如单处理器、多处理器、单核单元以及多核单元。此外,本领域的技术人员可以理解,各新颖方法可用其它计算机系统配置来实施,包括小型机、大型计算机、以及个人计算机(例如,台式、膝上型等)、手持式计算设备、基于微处理器的或可编程的消费电子产品等,其每一个都可在操作上耦合到一个或多个相关联的设备。
系统存储器806可包括计算机可读存储(物理存储介质),如易失性(VOL)存储器810(例如,随机存取存储器(RAM))和非易失性存储器(NON-VOL)812(如ROM、EPROM、EEPROM等)。基本输入/输出系统(BIOS)可被存储在非易失性存储器812中,并且包括诸如在启动期间便于在计算机802内的组件之间传递数据和信号的基本例程。易失性存储器810还可包括诸如静态RAM等高速RAM来用于高速缓存数据。
系统总线808提供了用于包括,但不限于系统存储器806的系统组件到处理单元804的接口。系统总线808可以是若干种总线结构中的任一种,这些总线结构还可使用各类可购买到的总线架构中的任一种互连到存储器总线(带有或没有存储器控制器)以及外围总线(例如,PCI、PCIe、AGP、LPC等)。
计算机802还包括机器可读存储子系统814以及用于将存储子系统814对接到系统总线808和其他所需计算机组件的存储接口816。存储子系统814(物理存储介质)可包括例如硬盘驱动器(HDD)、磁软盘驱动器(FDD)和/或光盘存储驱动器(例如,CD-ROM驱动器、DVD驱动器)中的一种或多种。存储接口816可包括诸如,例如EIDE、ATA、SATA和IEEE1394等接口技术。
一个或多个程序和数据可被存储在存储器子系统806、机器可读和可移动存储器子系统818(例如,闪存驱动器形状因子技术)和/或存储子系统814(例如,光、磁、固态)中,这些程序和数据包括操作系统820、一个或多个应用程序822、其他程序模块824以及程序数据826。
操作系统820、一个或多个应用程序822、其他程序模块824,和/或程序数据826可包括例如图1的系统100的实体和组件、图2的流程图200的实体和流程、图3的实体和流程,以及图4-7的流程图所表示的方法。
一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、方法、数据结构、其他软件组件等等。操作系统820、应用822、模块824和/或数据826的全部或部分也可被高速缓存在诸如易失性存储器810等存储器中。应该明白,所公开的体系结构可以用各种市场上可购得的操作系统或操作系统的组合(例如,作为虚拟机)来实施。
存储子系统814和存储器子系统(806和818)用作用于数据、数据结构、计算机可执行指令等的易失性和非易失性存储的计算机可读介质。这些指令当由计算机或其他机器执行时,可使得计算机或其他机器执行方法的一个或多个动作。执行动作的指令可被存储在一个介质上,或者可跨多个介质存储,使得指令共同出现在一个或多个计算机可读存储介质上,而不管所有指令是否都在同一介质上。
计算机可读介质可以是可由计算机802访问的任何可用介质,且包括可移动和不可移动的易失性和非易失性、内部和/或外部介质。对于计算机802,介质容纳以任何合适的数字格式对数据的存储。本领域的技术人员应当理解,可使用其他类型的计算机可读介质,如zip驱动器、磁带、闪存卡、闪存驱动器、磁带盒等来存储用于执行所披露的体系结构的新颖方法的计算机可执行指令。
用户可以使用诸如键盘和鼠标等外部用户输入设备828来与计算机802、程序和数据交互。其他外部用户输入设备828可包括话筒、IR(红外)遥控器、操纵杆、游戏手柄、照相机识别系统、指示笔、触摸屏、姿势系统(例如,眼移动、头移动等)和/或类似物。在计算机802是例如便携式计算机的情况下,用户可以使用诸如触摸垫、话筒、键盘等板载用户输入设备830来与计算机802、程序和数据交互。这些和其它输入设备通过输入/输出(I/O)设备接口832经由系统总线808连接到处理单元804,但也可通过其它接口连接,如并行端口、IEEE1394串行端口、游戏端口、USB端口、IR接口、短程无线(例如蓝牙)和其它个人区域网络(PAN)技术等。I/O设备接口832也便于输出外围设备834的使用,如打印机、音频设备、摄像设备等,如声卡和/或板载音频处理能力。
一个或多个图形接口836(通常也称为图形处理单元(GPU))提供计算机802和外部显示器838(例如,LCD、等离子)和/或板载显示器840(例如,对于便携式计算机)之间的图形和视频信号。图形接口836也可作为计算机系统板的一部分来制造。
计算机802可以使用经由有线/无线通信子系统842到一个或多个网络和/或其他计算机的逻辑连接在联网环境(例如,基于IP的)中操作。其他计算机可包括工作站、服务器、路由器、个人计算机、基于微处理器的娱乐设备、对等设备或其他常见的网络节点,并且通常包括以上相对于计算机802描述的许多或所有元件。逻辑连接可包括到局域网(LAN)、广域网(WAN)热点等的有线/无线连接。LAN和WAN联网环境常见于办公室和公司,并且方便了诸如内联网等企业范围计算机网络,所有这些都可连接到例如因特网等全球通信网络。
当在联网环境中使用时,计算机802经由有线/无线通信子系统842(例如,网络接口适配器、板载收发机子系统等)连接到网络来与有线/无线网络、有线/无线打印机、有线/无线输入设备844等通信。计算机802可包括用于通过网络建立通信的调制解调器或其他装置。在联网环境中,相对于计算机802的程序和数据可被存储在远程存储器/存储设备中,如与分布式系统相关联。将明白,所示网络连接是示例性的,并且可以使用在计算机之间建立通信链路的其他手段。
计算机802可用于使用诸如IEEE802.xx标准家族等无线电技术来与有线/无线设备或实体通信,例如在操作上安置在与例如打印机、扫描仪、台式和/或便携式计算机、个人数字助理(PDA)、通信卫星、任何一件与无线可检测标签相关联的设备或位置(例如,电话亭、报亭、休息室)以及电话的无线通信(例如,IEEE802.11空中调制技术)中的无线设备。这至少包括用于热点的WiFiTM(用于证明无线计算机联网设备的互操作性)、WiMax以及蓝牙TM无线技术。由此,通信可以是如对于常规网络那样的预定义结构,或者仅仅是至少两个设备之间的自组织(ad hoc)通信。Wi-Fi网络使用称为IEEE802.11x(a、b、g等等)的无线电技术来提供安全、可靠、快速的无线连通性。Wi-Fi网络可用于将计算机彼此连接、连接到因特网以及连接到有线网络(使用IEEE802.3相关的介质和功能)。
上面描述的包括所公开的体系结构的各示例。当然,描述每一个可以想到的组件和/或方法的组合是不可能的,但本领域内的普通技术人员应该认识到,许多其他组合和排列都是可能的。因此,该新颖体系结构旨在涵盖所有这些落入所附权利要求书的精神和范围内的更改、修改和变化。此外,就在详细描述或权利要求书中使用术语“包括”而言,这一术语旨在以与术语“包含”在被用作权利要求书中的过渡词时所解释的相似的方式为包含性的。

Claims (10)

1.一种系统,包括:
在客户机设备的web浏览器的上下文中运行的用户定义函数,所述用户定义函数能够从主存在网页中的电子表格调用,所述网页经由所述web浏览器来访问;以及
处理器,它执行与所述用户定义函数相关联的计算机可执行指令。
2.如权利要求1所述的系统,其特征在于,所述用户定义函数是根据脚本语言编写的。
3.如权利要求1所述的系统,其特征在于,所述web浏览器和后端计算服务共享所述用户定义函数的电子表格计算。
4.如权利要求1所述的系统,其特征在于,随着所述用户定义函数被计算,电子表格计算状态被维护。
5.如权利要求1所述的系统,其特征在于,基于div聚合,所述电子表格嵌入在所述网页中。
6.一种方法,包括以下动作:
从嵌入在网页中的电子表格调用嵌入在所述网页中的用户定义函数,所述用户定义函数通过客户机的浏览器来处理;
使用所述浏览器和后端计算服务来计算所述用户定义函数;
随着所述用户定义函数被计算,维护电子表格计算状态;
基于所述计算将结果呈现在所述电子表格中;以及
利用执行储存于存储器中的指令的处理器来执行所述调用、计算、维护或呈现中的至少一个动作。
7.如权利要求6所述的方法,其特征在于,还包括通过所述用户定义函数访问所述网页的文档对象模型。
8.如权利要求6所述的方法,其特征在于,还包括限制计算处理以防止无限计算循环的情形。
9.如权利要求6所述的方法,其特征在于,还包括在运行时注册和注销所述用户定义函数以用于由所述电子表格调用以及远程执行。
10.如权利要求6所述的方法,其特征在于,还包括在所述web浏览器的上下文中运行所述用户定义函数。
CN201380005102.6A 2012-01-09 2013-01-07 自定义浏览器侧电子表格函数 Active CN104040535B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/345,757 2012-01-09
US13/345,757 US9389891B2 (en) 2012-01-09 2012-01-09 Custom browser-side spreadsheet functions
PCT/US2013/020441 WO2013106255A1 (en) 2012-01-09 2013-01-07 Custom browser-side spreadsheet functions

Publications (2)

Publication Number Publication Date
CN104040535A true CN104040535A (zh) 2014-09-10
CN104040535B CN104040535B (zh) 2017-02-22

Family

ID=48744819

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380005102.6A Active CN104040535B (zh) 2012-01-09 2013-01-07 自定义浏览器侧电子表格函数

Country Status (4)

Country Link
US (1) US9389891B2 (zh)
EP (1) EP2803000B1 (zh)
CN (1) CN104040535B (zh)
WO (1) WO2013106255A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111159988A (zh) * 2019-12-31 2020-05-15 软通动力信息技术(集团)有限公司 一种模型处理方法、装置、计算机设备及存储介质

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8856234B2 (en) * 2013-02-28 2014-10-07 Workiva Llc System and method for performing distributed asynchronous calculations in a networked environment
US10013412B2 (en) 2014-08-25 2018-07-03 Purple Robot Software, Inc. Peer to peer spreadsheet processing
EP3452924A4 (en) 2016-04-27 2020-01-01 Coda Project, Inc. SYSTEM, METHOD AND APPARATUS FOR OPERATING A UNIFIED DOCUMENT SURFACE WORKSPACE
US11157690B2 (en) 2017-02-22 2021-10-26 Microsoft Technology Licensing, Llc Techniques for asynchronous execution of computationally expensive local spreadsheet tasks
US10725799B2 (en) 2017-02-22 2020-07-28 Microsoft Technology Licensing, Llc Big data pipeline management within spreadsheet applications
US10846469B2 (en) 2017-03-07 2020-11-24 Microsoft Technology Licensing, Llc Dynamically registered functions for calculations engines
US10140280B2 (en) 2017-03-07 2018-11-27 Microsoft Technology Licensing, Llc Asynchronous dynamic functions for calculation engines
US10572274B2 (en) * 2017-09-22 2020-02-25 Microsoft Technology Licensing, Llc Cross platform custom functions
US10699068B2 (en) 2018-06-29 2020-06-30 Microsoft Technology Licensing, Llc Distribution of lambda functions
US10726201B1 (en) * 2018-06-29 2020-07-28 Microsoft Technology Licensing, Llc Creating and handling lambda functions in spreadsheet applications
US11423116B2 (en) 2018-06-29 2022-08-23 Microsoft Technology Licensing, Llc Automatically creating lambda functions in spreadsheet applications
US11023669B2 (en) 2018-06-29 2021-06-01 Microsoft Technology Licensing, Llc Rendering lambda functions in spreadsheet applications
US11848976B2 (en) * 2020-06-30 2023-12-19 Oracle International Corporation Custom action invocation in a speadsheet integrated with web services
US11423218B2 (en) 2020-12-10 2022-08-23 Microsoft Technology Licensing, Llc Abstraction of formulas into reusable functions

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040044954A1 (en) * 2002-08-29 2004-03-04 Hosea Michael E. Data-bidirectional spreadsheet
US6988241B1 (en) * 2000-10-16 2006-01-17 International Business Machines Corporation Client side, web-based spreadsheet
CN1734448A (zh) * 2004-08-13 2006-02-15 微软公司 对用户指定电子表格函数的支持
CN101650712A (zh) * 2009-08-18 2010-02-17 深圳市科陆电子科技股份有限公司 一种自定义报表的生成管理方法及系统

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6377288B1 (en) * 1998-01-12 2002-04-23 Xerox Corporation Domain objects having computed attribute values for use in a freeform graphics system
US7047484B1 (en) * 2001-10-18 2006-05-16 Microsoft Corporation Method, system, and apparatus for providing access to asynchronous data in a spreadsheet application program
US7266763B2 (en) 2002-11-26 2007-09-04 Microsoft Corporation User defined spreadsheet functions
US20040181748A1 (en) 2003-03-10 2004-09-16 International Business Machines Corporation Thin client framework deployment of spreadsheet applications in a web browser based environment
US7523395B1 (en) 2003-05-30 2009-04-21 Oracle International Corporation Web application generator for spreadsheet calculators
US20050268215A1 (en) 2004-06-01 2005-12-01 Microsoft Corporation Method and apparatus for viewing and interacting with a spreadsheet from within a web browser
US8307119B2 (en) 2006-03-31 2012-11-06 Google Inc. Collaborative online spreadsheet application
US8239751B1 (en) * 2007-05-16 2012-08-07 Google Inc. Data from web documents in a spreadsheet
US8407668B2 (en) 2007-10-26 2013-03-26 Microsoft Corporation Model based spreadsheet scripting language
US8584004B2 (en) 2008-04-23 2013-11-12 Microsoft Corporation Asynchronous user defined functions
US20100211862A1 (en) 2009-02-18 2010-08-19 Microsoft Corporation Facilitating spreadsheet and database views on common data store
US8365143B2 (en) * 2010-06-15 2013-01-29 Microsoft Corporation Dynamic languages for static hosts

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6988241B1 (en) * 2000-10-16 2006-01-17 International Business Machines Corporation Client side, web-based spreadsheet
US20040044954A1 (en) * 2002-08-29 2004-03-04 Hosea Michael E. Data-bidirectional spreadsheet
CN1734448A (zh) * 2004-08-13 2006-02-15 微软公司 对用户指定电子表格函数的支持
CN101650712A (zh) * 2009-08-18 2010-02-17 深圳市科陆电子科技股份有限公司 一种自定义报表的生成管理方法及系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111159988A (zh) * 2019-12-31 2020-05-15 软通动力信息技术(集团)有限公司 一种模型处理方法、装置、计算机设备及存储介质
CN111159988B (zh) * 2019-12-31 2023-09-08 软通动力信息技术(集团)股份有限公司 一种模型处理方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
EP2803000A1 (en) 2014-11-19
EP2803000A4 (en) 2015-08-12
CN104040535B (zh) 2017-02-22
WO2013106255A1 (en) 2013-07-18
US9389891B2 (en) 2016-07-12
US20130179764A1 (en) 2013-07-11
EP2803000B1 (en) 2018-04-18

Similar Documents

Publication Publication Date Title
CN104040535A (zh) 自定义浏览器侧电子表格函数
CN104246759B (zh) 应用程序接口测试服务
US11375030B2 (en) Future event detection and notification
CN104145257B (zh) 用于被连接设备的语义缓存云服务
CN103718198B (zh) 预测模型应用编程接口
US20180060296A1 (en) Personal assistant context building
CN103119586B (zh) 用于多形态序列化的方法和装置
JP2014515133A5 (zh)
EP3161610B1 (en) Optimized browser rendering process
CN102640144A (zh) 协同操作数据的方法和系统
CN107346351A (zh) 用于基于源代码中定义的硬件要求来设计fpga的方法和系统
CN106022483A (zh) 机器学习模型之间进行转换的方法与设备
CN107004024A (zh) 上下文驱动的多用户通信
WO2014036053A1 (en) Graph query language api querying and parsing
CN103518195B (zh) 用于基于矢量的表格字段文档的设备、系统和方法
CN104395881B (zh) 动态型阵列的表达和变换
CN104008089B (zh) 用于验证文档的方法和系统
US9053154B1 (en) System and method for generating a compatibility score for web content
CN104021124B (zh) 用于处理网页数据的方法、装置和系统
CN102279761B (zh) 基于应用程序执行上下文选择性地展示基类库
CN109478117A (zh) 用于生成并显示在在线环境中使用的三维数字资产的方法和系统
CN106230912A (zh) 一种骑友群的骑行信息共享方法和系统
US9230022B1 (en) Customizable result sets for application program interfaces
CN115421693A (zh) 微前端架构的实现方法、装置、计算机设备和存储介质
CN109101544A (zh) 热力图生成方法、装置、计算设备和可读存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150720

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150720

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

C14 Grant of patent or utility model
GR01 Patent grant