基于电子表格的软件应用程序开发的制作方法

文档序号:22626585发布日期:2020-10-23 19:34阅读:109来源:国知局
本专利文件的公开内容的一部分包含受版权保护的材料。版权所有人不反对以专利文献或专利公开中的任何一种在专利商标局的专利文件或记录中出现的传真复制所述专利文献或专利公开,但在其它方面仍然保留所有版权权利。相关申请的交叉引用本申请是2017年12月3日提交的名称为“spreadsheet-basedsoftwareapplicationdevelopment”的美国申请号15/829,979的pct,其是2017年3月10日提交的名称为“spreadsheet-basedsoftwareapplicationdevelopment”的共同未决的美国申请号15/455,909的部分继续申请,要求2016年12月3日提交的名称为“spreadsheet-basedsoftwareapplicationdevelopment”的美国临时申请号62/429,749的优先权,出于所有目的,每个前述申请的全部内容通过引用并入本文。本文描述的方面总体涉及用于计算机和计算机网络的应用程序和软件开发。更具体地,本文描述的方面提供用于诸如交互式web应用程序等的定制复杂软件的低代码和无代码软件开发的系统和方法。
背景技术
::软件开发可能是一个困难且耗时的过程。在个人可以开发复杂和/或定制软件应用程序之前,通常需要专门的培训和知识,并且通常需要多年的经验。不具备这些技能的人必须聘请软件开发人员或软件开发公司来进行软件开发,这通常费用很高。此外,一旦开始软件开发过程,其可能需要数周、数月或甚至数年来开发定制和/或复杂软件。开发在线使用或与移动设备一起使用的定制软件应用程序通常涉及以高级编程语言(诸如c#或java)进行编程。软件应用程序越灵活且功能越强大,许多组织集资或构建其的时间越长,并且成本越高。即使当软件应用程序开发人员利用预构建的组件来在多个客户端之间共享成本,由于每个组织的独特要求,构建许多项目仍然是费时的。在一些情况下,软件应用程序可以现成购买,但是组织限于现成产品的特征。定制通常是困难的、耗时的和/或昂贵的,就像原始软件开发一样。基于其令人难以置信的强大的业务分析、记录保持和组织能力,电子表格现在在商业中变得无处不在。或许除了文字处理器之外,电子表格在商业中的使用比任何类别的软件都要多。但是,电子表格本身缺乏用作平台工具以构建软件应用程序的概念框架。最佳情况下,现有的电子表格软件可以允许用户纳入程序代码以执行一个或多个定制功能。然而,该程序代码仍然必须以高级语言编写,诸如visualbasic,这又需要高级编程技能、功能和资源。技术实现要素:以下呈现了本文描述的各种方面的简要概述。本
发明内容不是广泛的概述,并且不旨在标识关键元素或重要元素或描绘权利要求的范围。以下
发明内容仅以简化形式呈现一些概念作为下面提供的更详细描述的介绍性前序。电子表格是流行工具和独特概念模型,其用于非技术用户执行任务,诸如计算和打印报告。通常以两种方式使用电子表格:其中每个行都是记录的表格,或者使每个记录包含整个表格或文件。虽然电子表格和电子表格应用程序本身缺乏用作构建软件应用程序的平台工具的概念框架,但是本文描述的方面包括可操作以使用一个或多个电子表格作为用于此种系统的基础蓝图自动生成复杂交互式软件和/或web应用程序的工具和功能。此种工具和功能或配置有本文描述的一种或多种工具和/或功能的方法和/或系统也可以称为webifier、webifier系统或webifier软件等。为了克服如上所述的现有技术中的限制,并且为了克服在阅读和理解本说明书时将显而易见的其它限制,本文描述的一个或多个方面涉及基于数据促进交互式web应用程序的创建以及格式化电子表格中包含的模板。本文描述的第一方面提供了用于生成包括至少一个web页面的交互式web应用程序的方法、系统和计算机可读介质。本文描述的技术可以包括分析电子表格以标识一个或多个数据源,每个数据源具有一个或多个数据记录,以及标识一个或多个用户界面模板,每个模板包括一个或多个数据源的数据格式。电子表格可以包括多个工作表(这里也简称为“表格”),并且数据源可以包括第一电子表格的至少一部分,而用户界面模板可以包括第二电子表格的至少一部分。可以基于从电子表格内标识的数据源提取数据记录并将数据记录存储在web数据存储中来生成web数据存储。系统可以基于web数据存储的所提取的数据记录生成交互式web应用程序的特定web页面,并且特定web页面可以包括数据记录和/或对数据记录的引用,该数据记录根据与特定web页面对应的一个或多个用户界面模板进行标识和格式化。系统可以响应于对页面的请求生成特定web页面的呈现。此外,系统可以响应于经由web应用程序接收用户输入来更新web数据存储。用户界面模板可以定义和/或包括用于对应数据源和/或记录的数据格式,诸如字体格式、单元格大小和/或任何其它合适的显示格式。在一些实施例中,用户界面模板可以定义与数据源相关联的一个或多个数据限制。此类数据限制可以用于从数据源中选择数据记录。替代地和/或附加地,用户界面模板可以定义与数据源相关联的一个或多个输入验证控件。系统还可以针对输入验证控件评估用户输入作为更新web数据存储的一部分或附加于更新web数据存储。根据一些方面,一个或多个用户界面模板可以存储在来自一个或多个数据源的单独工作表中。在其它方面,一个或多个用户界面模板可以存储在相同的工作表中作为一个或多个数据源。根据一些方面,系统可以基于标识电子表格中的至少一个数据格式和/或数据记录的一个或多个改变来更新交互式web应用程序。可以在交互式web应用程序中实现对用户界面模板中的数据格式的改变而不影响web数据存储。对数据记录内容的改变可以自动反映在交互式web应用程序的页面中。系统可以自动操作以检测和/或分析对电子表格中的数据记录和/或数据格式所做的改变。根据一些方面,系统可以基于对web数据存储所做的更新来更新基础电子表格。附加地和/或替代地,系统可以基于对电子表格中的数据记录所做的改变来更新web数据存储。类似地,系统可以基于对电子表格的用户界面模板中的数据格式所做的改变来更新交互式web应用程序。根据一些方面,系统可以实现许可控制以限制用户查看和/或修改存储在web数据存储和/或电子表格中的数据的能力。可以在电子表格中定义用户的安全许可,诸如在一个或多个用户界面模板中。可以使用与电子表格相关联的电子表格应用程序的原生公式来定义安全许可。附加地和/或替代地,可以从除电子表格之外的源(诸如管理策略服务器)检索安全许可。系统可以防止具有第一安全许可的第一用户修改web数据存储。系统可以允许响应于从具有第二安全许可的第二用户接收的输入来修改web数据存储。可以使用电子表格应用程序软件生成电子表格。例如,在一些实施例中,可以使用microsoftexcel生成电子表格。电子表格可以包括数据文件和/或文件集合,其符合任何传统电子表格数据格式。例如,电子表格可以符合microsoftexcel中使用的xlsx、ms-xls和/或ms-xlsb二进制数据格式。在一些实施例中,生成的web数据存储可以包括电子表格,反之亦然。根据一些方面,交互式web应用程序可以基于数据记录和/或用户界面模板生成输入和/或输出web页面。在一些实施例中,系统可以基于在一个或多个用户界面模板中标识的数据源生成web输入表单,并且可以经由web输入表单接收用户输入以修改一个或多个记录。系统可以基于第一用户界面模板从web数据存储生成用于输出数据的数据输出web页面,并且可以基于第二用户界面模板生成可用于编辑web数据存储中的数据的数据编辑web页面。在一些实施例中,生成特定web页面可以包括选择与客户端设备特性相对应的用户界面模板,该客户端设备特性与特定web页面相关联。根据另一个方面或实施例,webifier系统可以配置成通过确定电子表格(或多个电子表格)内的一个或多个数据源来生成包括至少一个web页面的交互式web应用程序,每个数据源具有零个或多个数据记录,其中数据源包括电子表格的第一部分;从电子表格内确定一个或多个用户界面模板,每个用户界面模板包括一个或多个数据源的数据格式,其中用户界面模板包括电子表格的第二部分;生成web数据存储,其包括来自电子表格中标识的数据源的数据记录;基于一个或多个用户界面模板生成交互式web应用程序的特定web页面,所述一个或多个用户界面模板对应于特定web页面,其中特定web页面引用基于对应于特定web页面的一个或多个用户界面模板标识的一个或多个数据源;响应于对呈现交互式web应用程序的特定web页面的请求,生成特定web页面的呈现,该web页面包括根据与特定web页面对应的一个或多个用户界面模板进行标识和格式化的一个或多个数据记录;以及响应于经由基于电子表格生成的交互式web应用程序的web页面接收用户输入,更新web数据存储。在一些方面,以下的任何组合可以包括在webifier系统内或由webifier系统纳入组合:基于电子表格生成的交互式web应用程序的web页面是特定web页面;电子表格包括多个工作表,以及电子表格的第一部分位于与电子表格的第二部分不同的工作表上;电子表格包括多个工作表,并且一个或多个用户界面模板存储在与一个或多个数据源相同的工作表中;用户界面模板的至少一种数据格式包括相应数据源的字体格式;用户界面模板的至少一种数据格式基于相应数据源的单元格大小;方法还可以包括基于更新web数据存储来更新电子表格;方法还可以包括分析电子表格以标识对与一个或多个用户界面模板相关联的至少一种数据格式的一个或多个改变,以及基于改变的数据格式更新交互式web应用程序而不影响web数据存储;方法还可以包括分析电子表格以标识对一个或多个数据源的数据记录做出的一个或多个改变,以及基于改变的数据记录更新web数据存储(其中此种修改可以基于用户输入间隔地自动发生等);方法还可以包括分析电子表格以标识对与一个或多个数据源相关联的至少一个数据记录做出的一个或多个改变,以及基于改变的数据记录更新web数据存储(其中此种修改还可以基于用户输入间隔地自动发生等)。在一个或多个实施例中,并且与任何其它实施例组合,webifier系统可以包括安全控件以防止具有第一安全许可的第一用户修改web数据存储,并且允许响应于从具有第二安全许可的第二用户接收的输入来修改web数据存储。可以基于一个或多个用户界面模板来确定第一安全许可和第二安全许可。可以可选地由生成电子表格的电子表格应用程序的原生公式来定义安全许可。在一个或多个实施例中,并且与任何其它实施例组合,电子表格可以包括生成的web数据存储,或者web数据存储可以与电子表格分离。标识或生成web数据存储可以包括存储适用的电子表格或其部分的记录作为存储适用的数据。在一个或多个实施例中,并且与任何其它实施例组合,webifier系统可以使用电子表格,其符合xlsx、ms-xls二进制数据格式或ms-xlsb二进制数据格式。在一个或多个实施例中,并且与任何其它实施例组合,webifier系统可以在生成web数据存储之后,基于对电子表格中的一个或多个数据记录所做的一个或多个改变来后续更新web数据存储。在一个或多个实施例中,并且与任何其它实施例组合,webifier系统可以在生成特定web页面之后,基于对电子表格中的一个或多个用户界面模板所做的一个或多个改变来更新特定web页面。在一个或多个实施例中,并且与任何其它实施例组合,webifier系统可以包括至少一个用户界面模板,其标识与数据源相关联的一个或多个数据限制,并且系统可以基于选择满足一个或多个数据限制的数据记录来生成特定web页面的呈现。一个或多个数据限制可以可选地包括在电子表格中标识的用户等级安全限制。可选地,可以由与电子表格相关联的电子表格应用程序的原生公式定义一个或多个数据限制中的至少一个。在一个或多个实施例中,并且与任何其它实施例组合,webifier系统可以包括至少一个用户界面模板,其标识与特定数据源相关联的一个或多个输入验证规则,并且系统还可以针对一个或多个输入验证规则评估用户输入。可选地,当web数据存储标识与特定web页面相关联的一个或多个输入验证规则时,并且系统可以针对一个或多个输入验证规则评估用户输入。在一个或多个实施例中,并且与任何其它实施例组合,webifier系统可以经由web应用程序接收用户输入,并且系统可以基于在一个或多个用户界面模板中标识的数据源生成web输入表单,以及经由web输入表单接收用户输入。在一个或多个实施例中,并且与任何其它实施例组合,交互式web应用程序可以基于第一用户界面模板从web数据存储生成用于输出数据的数据输出web页面,并且基于第二用户界面模板生成可用于编辑web数据存储中的数据的数据编辑web页面。在一个或多个实施例中,并且与任何其它实施例组合,webifier系统可以通过选择用户界面模板来生成特定web页面,所述用户界面模板对应于与特定web页面相关联的客户端设备特征,例如,以修改特定于移动设备的页面等。根据另一个方面,webifier系统可以包括一个或多个处理器,以及存储指令的存储器,所述指令在由一个或多个处理器执行时使系统生成交互式软件应用程序(例如,web应用程序)。webifier系统可以基于评估电子表格获得电子表格内的一个或多个数据源,每个数据源具有一个或多个数据记录,其中数据源包括电子表格的第一工作表的至少一部分。系统可以基于评估电子表格获得电子表格内的一个或多个用户界面模板,每个模板包括一个或多个数据源的数据格式,其中用户界面模板包括电子表格的第二工作表的至少一部分。系统可以可选地通过从电子表格中标识的数据源中提取数据记录并将数据记录存储在web数据存储中来生成web数据存储,或者系统可以将电子表格用作web数据存储(在本实施例中或在任何其它实施例中)。系统可以基于web数据存储的提取的数据记录生成交互式软件应用程序的特定web页面,其中特定web页面包括对数据记录的引用,该数据记录基于与特定web页面对应的一个或多个用户界面模板进行标识并根据其进行格式化。响应于对呈现交互式软件应用程序的特定web页面的请求,系统可以生成特定web页面的呈现。系统还可以响应于经由交互式软件应用程序接收用户输入来更新web数据存储。在一个或多个实施例中,并且与任何其它实施例组合,webifier系统可以包括至少一个用户界面模板,其标识与数据源相关联的一个或多个数据限制。指令在由一个或多个处理器执行时还可以使系统基于选择满足一个或多个数据限制的数据记录来生成特定web页面的呈现。根据另一个方面或实施例,webifier系统可以生成交互式web应用程序。webifier系统可以基于评估电子表格获得电子表格内的一个或多个数据源,每个数据源具有零个或多个数据记录,其中数据源包括电子表格的第一工作表的至少一部分。系统可以基于评估电子表格获得电子表格内的一个或多个用户界面模板,每个模板包括一个或多个数据源的数据格式,其中用户界面模板包括电子表格的第二工作表的至少一部分。系统可以生成web数据存储,其包括来自在电子表格内标识的数据源的数据记录。系统可以基于一个或多个用户界面模板生成交互式web应用程序的特定web页面,所述一个或多个用户界面模板对应于所述特定web页面,其中特定web页面包括对数据源的至少一个数据源的引用和基于与特定web页面相对应的一个或多个用户界面模板进行格式化。响应于对呈现交互式web应用程序的特定web页面的请求,系统可以生成包括一个或多个数据记录的特定web页面的呈现,一个或多个数据记录与至少一个数据源相关联并且根据与特定web页面相对应的一个或多个用户界面模板进行格式化。系统可以响应于经由交互式web应用程序接收用户输入来更新web数据存储。第一工作表可以是与第二工作表相同的工作表或不同的工作表。根据另一个方面,任何一个或多个实施例还可以包括生成电子表格用户界面,其呈现电子表格的至少一部分以供显示,其中电子表格用户界面包括一个或多个控件,控件允许用户标识电子表格内的一个或多个数据源并标识电子表格内的一个或多个用户界面模板。然后,可以响应于经由一个或多个控件接收用户输入来执行交互式web应用程序的特定web页面的生成,控件标识对应于特定web页面的至少一个或多个用户界面模板。在一个或多个实施例中,并且与任何其它实施例组合,电子表格用户界面包括单元格的二维布置。电子表格用户界面的单元格可以支持数值、文本值和公式。电子表格用户界面中的单元格公式可以允许用户指定数学计算。电子表格用户界面中的单元格公式可以允许对多个其它单元格的引用。电子表格用户界面中的单元格公式也可以支持数学和字符串操作函数。可选地,电子表格用户界面中的单元格公式可以支持对命名函数的引用;电子表格用户界面的单元格可以支持电子表格用户界面的给定行、给定列或给定区域内的异构格式和公式;和/或电子表格用户界面中的单元格公式可以支持对包含其它公式、数值或文本值的其它单元格的引用。在一些方面,电子表格用户界面提供视觉编辑用户界面,其允许用户编辑和格式化电子表格用户界面的单元格,并且视觉编辑用户界面可以基于格式变化、公式变化以及格式化评估值和/或规则来向用户提供视觉反馈。在一些方面,电子表格用户界面可以允许用户指示单个单元格的内容可以在视觉上跨越多个行或多个列,而不影响其它单元格的内容是否可以在视觉上跨越多个行或多个列。在一些方面,电子表格用户界面可以允许用户选择单元格并通过与其交互而将单元格内容移动到其它单元格以突出显示单个单元格或单元格范围。在一些方面,电子表格用户界面可以允许用户选择一个或多个单元格,以便自动地将对那些单元格的引用插入到当前正在编辑的单元格的公式中。在一些实施例中,用户输入可以包括签名和与签名相关联的元数据。在一些方面,webifier系统可以生成移动软件应用程序和/或通过移动设备或移动应用程序显示的内容。webifier系统可以确定电子表格内的一个或多个数据源,每个数据源具有一个或多个数据记录。webifier系统可以确定电子表格内的一个或多个用户界面模板,每个模板包括一个或多个数据源的数据格式。webifier系统可以可选地生成包括来自在电子表格内标识的数据源的数据记录的数据存储,或者可以使用电子表格作为数据存储。webifier系统可以基于一个或多个用户界面模板生成特定web页面的多个版本,所述一个或多个用户界面模板对应于特定web页面,其中特定web页面引用一个或多个数据源,数据源基于对应于特定web页面的一个或多个用户界面模板标识,并且其中特定web页面的至少一个版本是基于与移动客户端相关联的一个或多个用户界面模板的移动版本。webifier系统可以从移动设备接收对呈现交互式web应用程序的特定web页面的请求,例如,其中该请求将用户设备标识为移动客户端或设备。响应于该请求,webifier系统可以生成包括一个或多个数据记录的特定web页面的移动版本的呈现,数据记录由与特定web页面对应的一个或多个用户界面模板以及与移动客户端相关联的一个或多个用户界面模板标识并根据其进行格式化。webifier系统可以响应于从移动设备接收用户输入而更新数据存储。根据另一个方面,并且与任何其它方面或实施例组合,webifier系统可以生成呈现数据文件的数据记录的电子表格用户界面,其中电子表格用户界面以包括多个单元格的行和列表格形式显示数据记录,并且其中电子表格用户界面允许用户定义公式以基于电子表格用户界面的第二单元格的值来计算电子表格用户界面的第一单元格的值。电子表格用户界面可以包括支持数值、文本值和公式的单元格的二维布置。电子表格用户界面中的单元格公式允许用户指定数学计算,对多个其它单元格进行引用,对命名函数(和/或区域)进行引用,和/或数学和字符串操作函数。在一些方面,电子表格用户界面的单元格可以支持电子表格用户界面的给定行、给定列或给定区域内的异构格式和/或对包含其它公式、数值或文本值的其它单元格的引用。在一些方面,电子表格用户界面提供视觉编辑用户界面,其允许用户编辑和格式化电子表格用户界面的单元格,并且视觉编辑用户界面可以基于格式变化、公式变化以及格式化评估值来向用户提供视觉反馈。在一些方面,电子表格用户界面可以允许用户指示单个单元格的内容可以在视觉上跨越多个行或多个列,而不影响其它单元格的内容是否可以在视觉上跨越多个行或多个列。在一些方面,电子表格用户界面可以允许用户选择单元格并通过与其交互而将单元格内容移动到其它单元格以突出显示单个单元格或单元格范围,和/或允许用户选择一个或多个单元格,以便自动地将对那些单元格的引用插入到当前正在编辑的单元格的公式中。根据另一个方面或实施例,webifier系统可以生成交互式软件应用程序。webifier系统可以分析(或处理、确定、获得等)电子表格(或多个电子表格)以标识一个或多个数据源,每个数据源具有一个或多个数据记录。webifier系统可以分析(或处理、确定、获得等)电子表格以标识一个或多个用户界面模板,每个模板包括一个或多个数据源的数据格式。webifier系统可以可选地通过从电子表格中标识的数据源中提取数据记录来生成web数据存储,并将数据记录存储在web数据存储中,或者webifier系统可以将电子表格用作web数据存储。响应于在交互式软件应用程序内创建特定web页面的请求,webifier系统可以标识对应于特定web页面的一个或多个用户界面模板,标识对应于特定web页面的一个或多个数据源,以及基于所标识的一个或多个用户界面模板并基于一个或多个所标识的数据源生成特定web页面。响应于来自客户端设备对特定web页面的请求,webifier系统可以基于一个或多个所标识的数据源从web数据存储中检索一个或多个数据记录,并且服务包括一个或多个检索的数据记录的特定web页面,检索的数据记录根据一个或多个标识的用户界面模板进行格式化。响应于经由web应用程序接收用户输入,webifier系统可以更新web数据存储(或电子表格,如果适用)。根据另一个方面或实施例,webifier系统可以生成交互式web应用程序。webifier系统可以分析(或处理、确定、获得等)电子表格(或多个电子表格)以标识一个或多个数据源,每个数据源具有一个或多个数据记录。webifier系统还可以在电子表格内标识一个或多个用户界面模板,每个模板包括一个或多个数据源的数据格式。webifier系统可以可选地通过从电子表格中标识的数据源中提取数据记录并将数据记录存储在web数据存储中来生成web数据存储,或者webifier系统可以将电子表格用作web数据存储。响应于对交互式web应用程序内的特定web页面的第一请求,webifier系统可以使用来自web数据存储(或电子表格)的数据记录来组成特定web页面,其中数据记录由与特定web页面对应的一个或多个用户界面模板标识并根据其进行格式化。webifier系统可以分析电子表格以标识在生成web数据存储之后进行的一个或多个改变,并使用对电子表格做出的一个或多个改变来更新交互式web应用程序。响应于对特定web页面的第二请求,webifier系统可以组成特定web页面,其包含对电子表格做出的一个或多个改变。在一些方面,对电子表格做出的一个或多个改变可以包括对用户界面模板的编辑,并且组合包含对电子表格做出的一个或多个改变的特定web页面包括生成包含对用户界面模板的编辑的特定web页面,而不改变数据记录。在一些方面,在对电子表格做出的一个或多个改变包括对数据记录的编辑的情况下,然后组合包含对电子表格做出的一个或多个改变的特定web页面可以包括生成包含对数据记录的编辑的特定web页面,而不改变用户界面模板。一些方面可以提供一种用于生成包括至少一个web页面的交互式web应用程序的计算机实现的方法。该方法可以包括确定电子表格内的至少一个主数据源。主数据源可以对应于电子表格的第一工作表。可以在电子表格内确定对应于电子表格的不同第二工作表的至少一个辅助数据源。该方法可以确定主数据源的记录和辅助数据源的记录之间的关系。自动并且基于该确定的关系,该方法可以生成第三工作表,该第三工作表包括主数据源的记录的至少一部分和辅助数据源的记录的至少一部分。第三工作表可以包括主数据源的记录和/或辅助数据源的记录的间接视图。第三工作表的内容可以与第一工作表的内容和第二工作表的内容同步。该方法可以基于与特定web页面相对应的至少一个用户界面模板来生成交互式web应用程序的特定web页面。特定web页面可以引用基于对应于特定web页面的至少一个用户界面模板识别的第三工作表的记录。该方法可以经由与交互式web应用程序的特定web页面相关联的输入控件来接收用户输入,并且基于接收的用户输入并且基于确定的关系来更新主数据源和/或辅助数据源的至少一个记录。在一些实现方式中,该方法可以确定电子表格内的识别主数据源和辅助数据源的第一用户界面模板。作为响应,该方法可以基于第一用户界面模板确定关系,并基于该关系生成第三工作表。该方法可以包括识别主数据源和辅助数据源之间的关系的其他方式,诸如通过从用户接收附加信息和/或通过基于与数据的一个或多个特性(诸如作为本文进一步描述的线索)相对应的信息自动检测关系。还公开了对应系统和计算机可读介质。应注意,上述任何特征可以与任何特定方面或实施例一起使用。对于本领域技术人员来说,对上述实施例的特征和本文所述的特征的许多组合、修改或改变将是显而易见的,并且旨在形成本发明的一部分。与一个实施例或示例相关的具体描述的任何特征可以用在任何其它实施例中。附图说明该专利或申请文件包含至少一幅以彩色上色的附图。将在请求和支付必要费用后由主管局提供具有彩色附图的本专利或专利申请公开的副本。通过参考以下考虑附图的描述,可以获得对本文描述的方面及其优点的更完整的理解,其中相同的附图标记表示相同的特征,并且其中:图1示出了可以与本文描述的一个或多个说明性方面一起使用的系统架构。图2是根据本文描述的一个或多个说明性方面的执行快速软件应用程序开发的方法。图3a和图3b示出了说明性软件系统架构,每个架构可以用于实现本文描述的一个或多个说明性方面。图4至图98是根据本文描述的一个或多个说明性方面的基于电子表格的软件应用程序开发系统的屏幕截图。具体实施方式作为一般性介绍,本文描述的方面可以提供低代码/无代码方法和系统,其可操作以使用一个或多个电子表格作为软件应用程序的基础蓝图自动生成复杂软件应用程序。根据一些方面,所得到的软件应用程序可以是静态的(只读的),或者可以是交互式的(读/写)以允许用户动态地添加、删除、编辑或以其它方式修改应用程序数据,例如,经由一个或多个在线web页面。在一些实施例中,在蓝图电子表格和所得到的软件应用程序之间的数据传输可以是单向的或双向的,从而允许将修改的数据传送到软件应用程序和电子表格表单或从其发送修改的数据,其传送回原始电子表格或新的电子表格。本文使用的电子表格指的是用于呈现给用户的数据的逻辑排列,而不管数据存储的形式如何。电子表格软件应用程序(例如,microsoftexcel、applenumbers和gnomegnumeric)是已知类型的软件,其允许用户创建和编辑电子表格,其中数据按行和列网格排列并且可以在计算中操作和使用。电子表格软件应用程序还可以指代用于以表格形式组织、分析和存储数据的交互式计算机应用程序,其在计算机上本地上或可在基于云的架构中使用。电子表格也被称为纸质会计工作表的计算机模拟。电子表格软件应用程序通常对电子表格单元格中输入的数据进行操作,其中电子表格的每个单元格可能包含数字数据、文本数据或公式的结果,这些公式自动地计算并显示基于数学公式的值,一个或多个其它单元格的内容,或甚至外部链接数据。根据一个说明性方面,电子表格可以定义为可由特定电子表格软件应用程序使用的数据文件。一个或多个电子表格文档或数据文件可以包括多个单独的和/或分开的电子表格(例如,工作表、标签),其可以从或可以不从相同和/或不同的文件引用其它电子表格/工作表中的数据。在一个方面,电子表格就此与数据库不同,因为数据库通常要求将数据存储在一个或多个索引表中,而电子表格同时支持数据库用途和非数据库用途。本文描述的说明性方面可以涉及本地电子表格应用程序软件。然而,在其它说明性方面,可以经由基于云的系统的用户界面向用户呈现电子表格,通过web浏览器或其它联网的用户界面向用户呈现电子表格功能和特征,而不管其中最终存储数据的提供功能或格式的后端系统架构(例如,googlesheets、microsoftofficeonline、editgrid、zkspreadsheet、sheetster、smartsheet、dhtmlxspreadsheet、webix、expresso、thinkfreecell)。本文描述的方面可以应用于本地电子表格应用程序软件实现以及基于云的电子表格实现,或任何其它电子表格实现。电子表格应用程序通常共同具有:当用户查看时以行和列的单元格的特征二维布置;可能地,任何附加维度,其表示为附加二维布置;单元格,其能够包含由用户输入的数值或文本值或和公式;以及单元格公式,其允许用户指定数学计算和/或通过二维布置内的单元格位置引用多个其它单元格。一些现代的、复杂的电子表格应用程序,其包括microsoftexcel和googlesheets,有时共同具有:单元格公式的进一步特征的一个或多个特征,单元格公式可以是数学或字符串操作公式;单元格公式,其可以引用包含其它公式或数值或文本值的其它单元格;用户在视觉wysiwyg(“所见即所得”)编辑器中格式化单元格的能力;将格式改变和公式改变以及公式求值结果值立即视觉反馈给用户;单元格公式,其可以调用命名函数,诸如“sum()”或“concatenate()”;单元格引用,其可以是单个单元格或单元格范围,诸如“a1:b10”或“a1:a10,c1:c10”;单元格范围,其可以被指定有将用于其它单元格引用的文本别名;用户界面,其允许用户选择单元格并通过与其交互而将单元格内容移动到其它单元格以首先高亮单个单元格或单元格范围;用户界面,其允许用户选择一个或多个单元格,以便自动将对这些单元格的引用插入当前正在编辑的单元格的公式中,从而允许用户指定单个单元格或单个单元格的内容可以在视觉上跨越多行和/或列,而不需要同样跨越其它单元格;对数据的逻辑方向的限制最小或没有限制,使得行和列是可互换的,并且因此数据可以以枢转方向输入;单元格,其中格式和值和公式不需要在整个行或整个列或整个单元格区域内保持一致;以及列,其可以作为组在宽度上进行改变。并非所有这些特征都是应用程序成为电子表格软件应用程序所必需的。在以下各种实施例的描述中,参考了形成其一部分的附图,并且在附图中通过图示的方式示出了其中可以实践本文所述的方面的各种实施例。应当理解,在不脱离所述方面和实施例的范围的情况下,可以利用其它实施例并且可以做出系统或功能改变。本文所述的方面能够具有其它实施例并且能够以各种方式实践或进行。而且,应当理解,本文采用的措辞和术语用于描述的目的,并且不应视为限制。相反,本文使用的短语和术语将被赋予其最广泛的解释和含义。“包括”和“包含”及其变体的使用旨在涵盖其后列出的项目及其等同物以及附加项目及其等同物。术语“安装”、“连接”、“联接”、“定位”、“接合”和类似术语的使用旨在包括直接和间接安装、连接、联接、定位和接合。图1示出了网络架构和数据处理设备的一个示例,其可以用于实现本文描述的一个或多个说明性方面。各种网络节点103、105、107和109可以经由广域网(wan)101互连,诸如互联网。也可以使用或替代地使用其它网络,其包括专用内联网、公司网络、lan、无线网络和个人网络(pan)等。网络101用于说明目的,并且可以用更少或附加的计算机网络替换。局域网(lan)可以具有任何已知lan拓扑中的一个或多个拓扑,并且可以使用各种不同协议中的一个或多个协议,诸如以太网。设备103、105、107、109和其它设备(未示出)可以经由双绞线、同轴电缆、光纤、无线电波或其它通信介质连接到一个或多个网络。本文使用的并且在附图中示出的术语“网络”不仅指的是其中远程存储设备经由一个或多个通信路径联接在一起的系统,而且还指的是可以时不时联接到具有存储能力的此类系统的独立式设备。因此,术语“网络”不仅包括“物理网络”,而且包括“内容网络”,其包括可归因于单个实体的数据-其驻留在所有物理网络上,例如,使用存储区域网络(san,未示出)。组件可以包括数据服务器103、web服务器105和客户端计算机107、109。数据服务器103提供数据库和控制软件的总体访问、控制和管理以用于执行本文描述的一个或多个说明性方面。数据服务器103可以连接到web服务器105,其中用户通过web服务器与数据交互并获得所请求的数据。或者,数据服务器103可以用作web服务器本身并且直接连接到互联网。数据服务器103可以通过网络101(例如,互联网),经由直接或间接连接,或经由某些其它网络连接到web服务器105。用户可以使用远程计算机107、109与数据服务器103和/或web服务器105交互,例如,使用web浏览器。客户端计算机107、109可以与数据服务器103一起使用以访问存储在其中的数据,或者可以用于其它目的。例如,从客户端设备107,用户可以如本领域中已知的使用互联网浏览器或者通过执行通过计算机网络(诸如,作为互联网)与web服务器105和/或数据服务器103通信的软件应用程序访问web服务器105。服务器和应用程序可以组合在相同的物理机器上,并保留单独的虚拟或逻辑地址,或者可以驻留在单独的物理机器上。图1仅示出了可以使用的网络架构的一个示例,并且所使用的特定网络架构和数据处理设备可以变化,并且是它们提供的功能的辅助,如本文进一步描述的。例如,由web服务器105和数据服务器103提供的服务可以组合在单个服务器上。每个组件103、105、107、109可以是任何类型的已知的计算机、服务器或其它数据处理设备。数据服务器103例如可以包括控制速率服务器103的整体操作的处理器111。数据服务器103还可以包括ram113、rom115、网络接口117、输入/输出接口119(例如,键盘、鼠标、显示器、打印机等)和存储器121。i/o119可以包括各种接口单元和驱动器,以用于读取、写入、显示和/或打印数据或文件。存储器121还可以存储用于控制数据处理设备103的整体操作的操作系统软件123,用于指示数据服务器103执行本文描述的一个或多个方面的webifier控制逻辑125,以及提供辅助、支持和/或可以与本文描述的其它方面结合使用的其它功能的其它应用程序软件127,例如电子表格软件应用程序。webifier控制逻辑在本文中也可以称为数据服务器软件、webifier系统、webifier软件、webifier插件或简称webifier。数据服务器软件的功能可以指基于编码到控制逻辑中的规则自动进行的操作或决策、由提供系统输入的用户手动制作进行的操作或决策和/或基于用户输入的自动处理的组合进行的操作或决策(例如,查询、数据更新等)。存储器121还可以存储用于执行本文描述的一个或多个方面的数据,其包括第一数据129(例如,电子表格文档或文件)和第二数据131(例如,web数据存储,如下面进一步描述的)。设备105、107、109可以具有与相对于设备103描述的类似或不同的架构。如本文所述的数据处理设备103(或设备105、107、109)的功能可以分布在多个数据处理设备上,例如,以跨多个计算机分配处理负载,以基于地理位置、用户访问级别、服务质量(qos)等来分离处理。本文描述的一个或多个方面可以体现在计算机可用或可读数据和/或计算机可执行指令中,诸如在一个或多个程序模块中,由一个或多个计算机或如本文所述的其它设备执行。通常,程序模块包括例程、程序、对象、组件、数据结构等,其在由计算机或其它设备中的处理器执行时进行特定任务或实现特定抽象数据类型。模块可以用随后被编译用于执行的源代码编程语言编写,或者可以用诸如(但不限于)html或xml的脚本语言编写。可以将计算机可执行指令存储在有形和非暂时性计算机可读介质上,诸如硬盘、光盘、可移动存储介质、固态存储器、usb驱动器、ram等。如本领域技术人员将理解的,程序模块的功能可以根据需要在各种实施例中组合或分布。另外,功能可以整体或部分地体现在固件或硬件等同物中,诸如集成电路和现场可编程门阵列(fpga)等。可以使用特定数据结构来更有效地实现一个或多个方面,并且在本文描述的计算机可执行指令和计算机可用数据的范围内预期此类数据结构。根据一个方面,webifier软件可以包括用于在现有电子表格软件应用程序内使用的插件或模块,例如,在microsoftexcel内的插件。或者,webifier软件可以包括独立软件应用程序,其接受输入并生成一个或多个电子表格数据文件(例如,microsoftexcel.xls/.xlsx工作簿文件或任何其它电子表格数据文件)和一个或多个软件和/或如本文所述的web应用程序作为输出。microsoftexcel仅用于说明目的。本文描述的原理也适用于其它电子表格软件应用程序,以及其它电子表格存储格式、模式和/或标准。例如,可以使用corelquattropro、googlesheets、gnumeric、openofficecalc或任何其它电子表格软件、应用程序和/或文档格式。如上所述,本文的方面可以同样适用于本地电子表格应用程序软件实现以及基于云的电子表格实现。图2示出了根据本文描述的一个或多个方面的生成软件应用程序的说明性方法。最初,在步骤201中,用户(在本文中也称为设计者)可以使用设计者选择的电子表格软件应用程序来创建和/或编辑电子表格。设计者可以将数据源设置并定义为表,其中每个行是数据源的记录,和/或将数据源定义为电子表格文件,其中每个单独的电子表格是数据源的记录。以这种方式,设计者可以定义一个或多个数据源,并在一个或多个数据源中输入数据记录。在步骤203中,webifier软件可以自动地或响应于用户输入分析电子表格以标识数据源和数据记录。当响应于用户输入时,webifier软件可以根据请求的用户动作的类型以不同的方式解析电子表格,如下面进一步描述的。在步骤205中,webifier软件可以分析电子表格以标识一个或多个用户界面模板。用户界面模板可以包括用于一个或多个数据源的数据格式,例如字体、大小、颜色、样式等,和/或可以包括一个或多个数据源的选择或标识,每个数据源可以是包括一个或多个数据记录。用户界面模板还可以包括数据源和记录本身。接下来,在步骤207中,webifier软件可以使用来自电子表格的数据生成web数据存储。web数据存储可以包括来自电子表格的所有数据,或者基于设计者在电子表格本身中或在生成过程期间设置的一个或多个标准或限制仅包括来自电子表格的数据的子集。或者,web数据存储可以包括电子表格本身,或者可以包括在电子表格中。在步骤209中,webifier可以生成一个或多个web页面作为动态交互式web应用程序的一部分。每个web页面可以基于在步骤205中标识的一个或多个用户界面模板。每个用户界面模板可以定义和/或标识数据格式和/或一个或多个数据源以包括在web页面上。在呈现或生成以传输到最终用户浏览器时,每个web页面可以填充有来自web数据存储的数据,其满足用户界面模板中阐述的标准。在用户界面模板包括数据源和记录本身的情况下,所得web页面可以基于电子表格中的数据显示为简单的web表。可以生成一个或多个web页面作为交互式web页面,例如,作为设计者将交互能力指定为用户界面模板的一部分的结果,或者作为在指示webifier软件生成相应的web页面时设计者请求交互能力的结果。在步骤211中,当web页面是交互式的时,web应用程序可以接收用户输入以经由web页面编辑一个或多个数据记录,例如,使用表单字段、输入框或任何其它用户输入机制。在步骤213中,web应用程序基于用户输入更新web数据存储,例如,添加、编辑、删除和/或以其它方式修改先前存储在web数据存储中的数据。在步骤215中,webifier软件和/或web应用程序可以用于更新原始蓝图电子表格中的数据,原始蓝图电子表格用于首先生成web应用程序,或者可以将数据输出到新的电子表格。当替换蓝图电子表格中的数据时,可以保留数据格式,并且仅替换/修改数据。关于web软件应用程序描述了上述方法。然而,代替web页面,webifier软件可以附加地和/或替代地生成用于在特定计算机或计算机上直接使用的独立软件应用程序,从而减轻使用软件应用程序时对网络访问的需要。因此,上述方法可以用于创建定制和/或复杂的软件应用程序。“复杂的”应用程序是指具有多个功能的应用程序,诸如数据输入、报告、多个用户、每用户安全访问设置、工作流、自动通知系统、保存历史信息、记录所有用户的改变、和/或文件附件等。“定制”应用程序可以指为满足特定业务需求而构建的软件,无论需求多么独特。虽然定制应用程序通常也可以这样做,但此种定制应用程序的结果并非设计成执行一项常见操作的现成(开箱即用)软件。因此,webifier软件可能不依赖于单个目的。相反,webifier软件是动态且灵活的,并且可以由具有普通技能的任何人使用诸如生产力软件组的复杂软件应用程序来使用,并从而用作雇用定制软件开发者的替代。在说明性实现中,系统中存在至少两种类型的用户或参与者。首先是设计者,其为使用webifier软件设计软件应用程序、web应用程序或移动应用程序的人员。第二个是访问者或最终用户,即作为访问最终结果web页面、独立应用程序或以设计者预定的方式使用生成的移动应用程序的人员。图3a描绘了说明性软件架构,其中目标系统350包括webifier逻辑353和存储器351,以及安装有webifier附加组件(add-on)357的电子表格客户端应用程序354(例如,msexcel)。附加组件357可以使用http请求从目标系统350加载其接口。如图3a进一步所示,设计者可以使用电子表格应用程序354创建或制作记录表格并将表格改变模板化到熟悉的工作表,并且通过附加组件357观察301a数据变化,例如,使用excel的cominterop库。当设计者完成改变组时,附加组件357可以使用web服务api调用将更新的部分或另选地全部电子表格定义发送302到目标系统350的webifier逻辑353。webifier逻辑353可以处理新数据并更新303存储在存储器351(例如,web数据存储)中的数据。设计者可以使用附加组件357创建或进行对目标页面配置的改变,附加组件可以作为web服务api调用发送302到webifier逻辑控制器353。另外,设计者可以在访问目标系统的浏览器355中创建或进行改变,其可以作为http请求或web服务api调用发送301b到webifier逻辑控制器。响应于来自访问者的浏览器356到webifier逻辑353的httpget请求304以提供目标页面,webifier逻辑353可以从存储器351中检索305电子表格定义。webifier逻辑通过评估和引用模板表格中的值和格式以及评估和引用基于模板表格标识的记录表格中的值,将电子表格定义转换为html目标页面。可以将目标页面发送306到访问者的浏览器356。图3a进一步示出了访问者看到了页面具有:仅在模板表格中找到的文本标签,而不是记录表格中的文本标签;源自recordsheet!a1的文本标签;评估recordsheet!c2的“100”的值;以及由模板表格定义的html输入控件,其具有来自recordsheet、用于复选框的recordsheet!a2和用于文本框的recordsheet!b2的值。图3a示出了访问者检查复选框并在浏览器356中单击提交,使得浏览器将httppost请求307发送到webifier逻辑控制器353。webifier逻辑353可以从存储器重新加载当前电子表格定义305。webifier逻辑353处理发布请求并用更新的电子表格定义更新存储器351。如果设计者的附加组件357仍具有活动会话,则webifier逻辑353可以将更新的部分电子表格定义或者足以更新所呈现的电子表格定义的改变事件发送308到附加组件357,然后使用excel的cominterop库,附加组件357可以在电子表格应用程序354中向设计者呈现309更新版本,使得设计者的工作表然后将在单元格a2中显示为“true(真)”。图3b描绘了使用电子表格和webifier逻辑之间的紧密集成的替代说明性软件架构,下面在标题为“紧密集成”的部分中更详细地描述。现在将在下面附加参考图4至图98更详细地描述关于webifier系统的说明性方面的附加细节,图4至图98示出了根据本文描述的一个或多个说明性方面的基于电子表格的软件应用程序开发系统的说明性屏幕截图。所描绘的屏幕截图本质上是说明性的,并且不旨在限制本文描述的任何方面的范围。说明性屏幕截图并不意味着限制webifier与特定电子表格应用程序或任何特定系统架构一起使用。相反,屏幕截图示出了webifier系统的各种特性和功能,无论是否与本地或基于云的电子表格应用程序一起使用。图4至图10是具有特定于webifier的可用公式函数的电子表格应用程序的屏幕截图,其中安装了附加组件。图11是附加组件页面列表的屏幕截图,其示出了访问者在访问该页面时可能看到的目标页面的弹出缩略图预览。图12是安装有附加组件的电子表格应用程序的屏幕截图,其中在电子表格应用程序工具栏中添加了附加菜单,其中用户登录,并且示出了在具有可用的web应用程序列表的电子表格应用程序的侧内的框架内的附加组件界面。图13是安装有附加组件的电子表格应用程序的屏幕截图,其中在电子表格应用程序工具栏中添加了附加菜单,其中用户未登录,并且示出了login(登录)页面。图14是安装有附加组件的电子表格应用程序的屏幕截图,其中附加菜单选项已被添加到单元格的右键菜单中。图15是游戏化用户通知弹出的屏幕截图。图16是由应用程序的源组织的web应用程序列表的屏幕截图。图17是web应用程序列表上的一个应用程序的激活动作菜单的屏幕截图。webifier限制了可用的应用程序操作,因为web应用程序权限受自有设计者的限制,如图21所示。图18是当前所选应用程序“test-copy(测试-复制)”的空页面列表的屏幕截图。图19是web应用程序列表上的激活的“appinformation(应用程序信息)”对话框的屏幕截图,其示出了关于特定web应用程序的概要信息。图20是示出包含传统电子表格表的源电子表格定义的图,并且该表在报告页面中被引用作为记录源,并且示出了使用电子表格定义定义的结果目标页面。该图进一步说明了对于特定登录访问者“halee”,webifier已将记录集过滤到仅第2行,其中单元格a2与登录的用户名和公式匹配,如屏幕截图右上角所示,“=isloggedinwebuser(a2)”在目标系统上进行评估时返回真(true)。该图还示出了函数isloggedinwebuser在设计时返回交替占位符值,但在呈现目标页面时,在已知登录访问者时正确评估。图21是与其他用户共享的应用程序的屏幕截图,并且设计者指定他们希望添加的设计者对于web应用程序所具有的权限。图22是template(模板)菜单的屏幕截图,其具有单击将模板复制到新的可修改的web应用程序中的选项。图23是在电子表格应用程序中创建新电子表格之后点击upload(上传)选项的用户的屏幕截图,并且现在呈现有上传对话框以命名新应用程序,并且其中名称默认为之前创建的电子表格文件名称。图24是名为“api_page(api_页面)”的目标页面的共享选项卡的屏幕截图,并且设计者指定访问该页面是否需要登录以及允许访问该页面的用户列表。图25是基于用户的电子邮件地址从共享选项卡打开以将用户添加到允许访问该页面的用户列表的对话框的屏幕截图。图26是正被定义的api类型的页面的屏幕截图,其创建可以以编程方式访问并且具有对应于由设计者指定的特定插入页面的输入的web服务api页面。图27是正被定义的calendar(日历)类型的页面的屏幕截图。电子表格示出记录表格,以及缩略图示出访问者将看到的复杂控件。范围控件设置为记录表格上的相应列。图28是可用于定义日历类型的页面的附加选项的屏幕截图。图29是以简易模式定义的container(容器)类型的页面的屏幕截图。图30是以高级模式定义的容器类型的页面的屏幕截图。图31是以图形设计者模式定义的容器类型的页面的屏幕截图。图32是可用于定义容器类型的页面的附加选项的屏幕截图。图33是正被定义的csvimport(csv导入)类型的页面的屏幕截图。缩略图演示了复杂的控件组,这些控件将呈现给页面的访问者,并且源按名称设置为整个工作表。图34是可用于定义csv导入类型的页面的附加选项的屏幕截图。图35是正被定义的详细detailsreport(报告类型)的页面的屏幕截图,其中设计者基于命名范围/definedname(定义名称)选择模板表格。屏幕截图示出了模板源引用的各种选项。图36是正被定义的详细报告类型的页面的屏幕截图,其中设计者基于从电子表格工具的单元格中选择的b9:c12的定制范围来选择模板表单,并且设计者已经点击了模板定义部分中的“useselected(所选使用)”按钮。图37是可用于定义详细报告类型的页面的附加选项的屏幕截图。屏幕截图还示出了电子表格工具单元格上的浅绿色叠加,以及设计者可在模板定义中使用的函数列表。在图4至图10中定义函数细节。图38是正被定义的edit-cells(编辑单元格)类型的页面的屏幕截图。图39是可用于定义编辑单元格类型的页面的附加选项的屏幕截图。屏幕截图还示出了基于电子表格工具中当前选定的b1:c1单元格的定制范围定义的headerrange(标题范围)。图40是用于定义编辑单元格类型的页面的标题范围的各种选项的屏幕截图。图41是正被定义的edit-record(编辑记录)类型的页面的屏幕截图,其中设计者指定源记录表格的方向是基于行的,使得每个行表示不同的记录。图42是正被定义页面的edit-record(编辑记录)类型的屏幕截图,设计者选择more(更多)选项(诸如页面选项),指定自定义headerrange(标题范围),然后从下拉菜单中选择editablerange(可编辑范围)。图43是正被定义的insert(插入)类型的页面的屏幕截图,其中缩略图示出了可由目标页面的访问者看到的自动生成的html表单的预览。图44是用于插入类型的页面的各种选项的屏幕截图。其进一步示出了webifier支持的一些数据验证器。图45是正被定义的link(链接)类型的页面的屏幕截图,其中缩略图示出了将生成的超链接的预览,但是其中公式函数显示占位符值而不是实际值,以及其中在点击链接时访问者将被定向到的目标被指定为特定日历目标页面。图46是正被定义的pdf类型的页面的屏幕截图,其中缩略图示出了具有将基于设计者选择先前创建的插入目标页面作为pdf的基础而生成的嵌入在pdf中的表单的pdf的预览。图47是正被定义的report(报告)类型的页面的屏幕截图,其中报告没有单独定义的模板表格。缩略图示出了行记录表格将导致目标页面列出与行记录表格的单元格格式相同的所有记录。图48是正被定义的report(报告)类型页面的屏幕截图,设计者选择more(更多)选项,诸如headerrange(标题范围)、auto-refreshtime(页面刷新时间)和页面选项。图49是正被定义的tabscontainer(标签容器)类型的页面的屏幕截图,其中设计者已选择了两个先前创建的目标页面以包含在标签中。缩略图示出了目标页面,该页面将在页面的顶部处具有两个可视选项卡,其中每个选项卡都具有一个先前创建的页面作为内容的基础。图50是正被定义的text(文本)类型的页面的屏幕截图,其中设计者可以使用wysiwyg编辑器输入富文本。图51是系统的屏幕截图,该系统在接收到来自设计者的添加页面的请求之后呈现待添加的页面类型的选项。图52是正被定义的report(报告)类型的页面的屏幕截图,其中webifier已经自动检测到电子表格中的图表可用,并且webifier示出了可以在报告目标页面上显示的图表的下拉列表。图53是由目标系统通知的附加组件的屏幕截图,其中已经接收并检测到来自访问者的变化,并且将自动下载或者设计者能够在期望的时间点击下载数据以检索它们。图54是页面列表的屏幕截图,其中设计者已经点击了页面的动作菜单,并且附加组件呈现了目标页面的支持的操作选项,诸如duplicate(复制)或delete(删除)页面。图55是从页面列表内显示web应用程序动作菜单的附加组件的屏幕截图,其具有用于整个web应用程序的各种操作选项,诸如duplicate(复制)web应用程序。图56是可用于外部系统或附加组件的目标系统web服务api函数调用的示例文档,其展示了web服务api调用的典型使用和请求格式。图57是目标报告页面的屏幕截图,其示出了使用模板表格定义的报告页面类型的结果以定义布局,从而具有在左侧列出的行记录,在顶部的一些链接,以及可在右侧点击以弹出聊天的图标。图58是目标系统在访问者访问聊天对象之后检索聊天记录并提示访问者输入新聊天的屏幕截图。图59是具有示例电子表格的屏幕截图,其中正在使用公式函数创建聊天对象,并且将guid作为参数传入以指示哪个聊天记录组与该聊天对象相关联。在此示例中,设计时在单元格中示出的可见占位符文本是传入的guid。图60是具有示例电子表格的屏幕截图,其示出了如何可以在电子表格中使用多个外部补充数据对象:聊天对象、文件对象和图像对象。屏幕截图示出了如何存在占位符文本,如文件的guid或未插入图像时的#none的情况,或如何存在指定为公式函数的参数的其它标题(例如,图5),如在文件对象显示“10kb”的大小的情况下。它还示出了两个单元如何可以引用相同的外部数据对象,在本例中为e7和f7。图61是可以从图60中的电子表格创建的目标报告页面的屏幕截图。该页面示出了如何用交互式聊天对象替换占位符文本,并且单元格e7和f7现在允许页面示出外部补充数据对象的多个属性。图62是图61中的目标报告页面的屏幕截图,其具有通过来自浏览器的上传对话框接受附加图像文件的能力。屏幕截图还示出了与目标页面上的图像对象进行交互导致控件从简单的文本标签改变为适合选择文件的标签,并且系统支持设计者为访问者指定权限以改变图像对象的公式,允许访问者改变上传将传到的文件箱。图63是图61中的目标报告页面的屏幕截图,其显示当访问者经由目标页面将图像上传到图像对象之后用于该图像对象的当前存储的图像。图64是图60中的示例电子表格的屏幕截图,其中公式函数的参数是任意文本字符串而不是guid。图65是目标系统管理页面的屏幕截图,其允许设计者指定被允许连接到目标系统的编程式客户端或自动客户端以及客户端如此做需要什么认证参数。图66是目标系统页面的屏幕截图,其具有从web应用程序“timesheet(时间表)”下拉的其它页面的导航菜单。图67是目标系统管理页面的屏幕截图,其允许将web应用程序导出为包含电子表格定义的单个自包含文件,记录表格和模板表格两者,以及共享设置和通知设置。图68是目标系统管理页面上传对话框的屏幕截图,其允许上传电子表格定义,其具有从图67导出的导入信息的相同选项。图69是web应用程序列表上的一个应用程序的激活动作菜单的屏幕截图。与图17不同,webifier提供了对附加操作的访问,诸如“addpage(添加页面)”,因为设计者具有对web应用程序的适当权限。图70至图73是目标系统管理页面的屏幕截图,其允许设计者定义insert(插入)、link(链接)、report(报告)和text(文本)类型的页面,其分别非常类似于图43、图45、图47和图50,但是不需要附加组件或第三方电子表格工具。图74是传统电子表格表的屏幕截图,其示出了该表可以具有控件以基于列c中的值来过滤电子表格记录,并且示出了使用公式(诸如列h上的日期公式)对电子表格记录的附加过滤。图75是目标系统管理页面的屏幕截图,该目标系统管理页面支持页面类型的web页面到任意外部url并允许各种潜在的源,而不仅仅必需是url。图76是目标系统管理页面的屏幕截图,其示出了webifier具有深度嵌套容器的能力。图77是目标系统支持编辑记录类型页面的一些附加选项的屏幕截图,其具有来自目标系统管理页面的可编辑性。图78是一些附加选项的屏幕截图,类似于图44中所示的选项,目标系统支持插入类型的页面,其具有编辑来自目标系统管理页面而不是附加组件的能力。图79是示出目标系统的屏幕截图,该系统提供限制用户输入的选项,也称为数据验证,并且其中数据验证规则可以特定于所存储的数据值的类型。图80是示出目标系统的屏幕截图,该系统提供restrictuserinput(限制用户输入)的选项,其中部分数据验证规则引用电子表格定义中的单元格范围。在此示例中,系统支持整个工作表或工作表中的定制单元格范围。图81是目标系统支持修改各种类型的页面内的editablerange(可编辑范围)的屏幕截图,使得该范围之外的所有内容都是不可编辑的。其示出了使用命名范围对别名的支持,诸如“everything(所有内容)”,以及由设计者指定的定制范围。图82是html代码的示例,其中目标系统可以自动生成以便在任何外部站点页面内具有嵌入的目标页面。图83是目标系统的通知设置页面的屏幕截图,其示出了用于通知设置的各种选项,对用于向外部自动化系统的通知的web服务api调用的支持,以及多种类型的通知。图84是用于特定通知的目标系统的配置选项的屏幕截图。其示出了通过由设计者指定的url的其webhook功能以及电子邮件能力。图85是用于特定通知的电子邮件模板的目标系统的配置选项的屏幕截图。图86是目标csv导入页面的屏幕截图,其示出了webifier在导入期间接受csv文件,能够通过分析电子表格来利用关于与其链接的记录表格的元数据,并且能够报告插入记录表格的请求的状态。图87是如图86中的目标csv导入页面的屏幕截图,但是示出了当数据经由csv导入表单到达时系统能够强制执行并报告数据验证规则的失败。图88是目标编辑单元格页面的屏幕截图,其示出了从图38中所示的附加组件接口定义的编辑单元格页面类型的结果,并且目标页面的控件改变了切换到“editmode(编辑模式)”的任何单元格作为用户交互的结果。图89是目标编辑记录页面的屏幕截图,其示出了定义的编辑记录页面类型的结果,到用户的动态通知消息作为删除行的结果,以及当目标系统确定“(edit)编辑”和“(delete)删除”权限时启动对模板表格定义的控制修改,并且页面定义已启用了这些选项。图90是当访问者已经点击图89中的“editraw(编辑行)”按钮时目标编辑记录页面的屏幕截图,其示出了在没有定义模板表格时使用的自动生成的输入表单,并且示出了输入表单可以具有控件,诸如下拉框,其中由电子表格定义来定义选项。图91是在访问者填写表单中的任何字段之前的目标插入页面的屏幕截图,其示出了通知访问者确认提交已修改了记录表格并且示出了目标页面可以显示呈现具有默认值的字段以及基于数据验证规则不可编辑的字段。图92是当访问者在电子表格定义的相关联的单元格数据类型设置为日期情况下为字段输入数据时,向目标插入页面的访问者显示的复杂交互控件的屏幕截图,如图91所示。图93是访问者输入数据验证规则失败之后的目标插入页面的屏幕截图,其示出了对界面的修改以通知访问者失败。图94是目标系统管理页面的屏幕截图,其允许具有服务器管理许可的设计者控制与目标系统的管理功能相关的访问许可,对于特定角色,其进一步示出了角色具有级联权限的子角色的能力。图95是目标系统管理页面的屏幕截图,其示出了目标系统的各种细化管理许可。图96是目标系统管理页面的屏幕截图,其示出了对于登录到目标系统或在目标系统上创建帐户的访问者来说,具有多种选项的复杂密码策略是可能的。图97是示出源电子表格定义的图,其在电子表格中设计并且具有由设计者指定的多个格式化选项,以定义为访问者生成的目标页面上的内容的格式。图98是复杂目标页面的屏幕截图,其涉及具有三个页面选项卡的选项卡容器,并且其中第一页面选项卡具有嵌套容器页面,该嵌套容器页面具有多个嵌套页面,嵌套页面包括来自输入页面的自动生成的输入表单、报告页面和其来源是图表的报告页面。电子表格和记录仅作为说明性参考,本文引用了两种使用样式的电子表格。也可以使用其它样式。首先是表格记录,其中每个记录包括整个表格或容纳多个表格的整个文件。例如,许多公司为他们创建的每个销售报价保存新的销售报价电子表格文件。该文件可以具有多个表格,诸如用于后端计算的一个表格和旨在具有可打印报价的一个表格,并且可打印的报价表格通常具有多个行和列,行和列包含文本、数字和公式,其使得文本或数字都代表单个报价。它们还可能包含足够的格式以允许相当可读的打印输出。然后是行记录和行记录表格,其中多个记录一起指定,通常在单个表格中(例如,图53,列a至列d)。电子表格文件可以包含零个、一个和/或多个行记录表格。行记录表格可以仅限于表格的一部分(例如,图60,列a至列b),其上可以具有附加的行记录表格或不相关的数据(例如,图60,列e),但为了简单起见,我们仍将其称为整个行记录表格。例如,许多公司将拥有类似于以下内容的客户列表电子表格。表格可以在顶行1中包含一些列名称,诸如“client(客户端)”和“industry(行业)”和“clientid(客户端id)”。下面的每个行都可以包含与单个客户端相关的数据。例如,行2可以在列a中具有“pleasantsolutions(合适的解决方案)”,在列b中具有“softwaredevelopmentservices(软件开发服务)”,并且在列c中具有“1”。行3可以在列a中具有“newco”,在列b中具有“consulting(咨询)”,以及在列c中具有“2”。不论名称,行记录也表示列表,其目的是翻转行和列,因此记录从左到右列出,就像列记录一样。在上面的步骤201至步骤203期间,可以使用任一种技术或两种技术,从而允许使用webifier软件来创建复杂的、多用户的、完全定制的目标软件,而没有预定的或预先暗示的目的。可以创建独立应用程序、web应用程序或移动应用程序(为了方便起见,web和移动可以统称为“web应用程序”),而不需要编程或数据库经验。本文描述的一些方面可能旨在取代雇用定制软件开发公司的需要,即使对于涉及数据、定制用户界面、不同的查看设备能力、并发使用、数据和用户工作流、自动通知、预定事件、业务逻辑和更多的复杂场景也是如此。模板表格参考说明性实现,现在相对于用户界面模板更详细地描述步骤201和步骤205。无论是在传统电子表格应用程序、基于云和web的电子表格、或嵌入在web应用程序内的简化电子表格界面中完成,都可以使用电子表格工具制作电子表格,该电子表格表示访问者或报告布局所需用户界面。例如,模板可以具有一个表格,其具有多个行和多个列,行和列包含与单个报价相关的值和公式:顶部附近的客户的大字体文本标题,其后是第一值为“invoicenumber(发票编号)”的行和右侧的单元格,以及其右侧的单元格将用于显示实际的发票编号。下面几行可以具有跨越多个行和多个列的单元格并用于以斜体显示注释。在表格的底部附近,标为“subtotal(小计)”的单元格及其右侧的单元格具有单元格格式以指定带有“$”符号的货币,并且旨在具有表示该特定发票的总计的数字(其中该单元格在网格上具有c15的位置)。下几行可以具有与税收和税后总计相关的单元格,而不是旨在稍后使值放置在那里,税收和总计单元格将具有引用小计单元格位置的电子表格公式,诸如“=c15*10%”,其中旨在对c15的改变会影响基于这些公式的总计。模板表可以嵌套,诸如在父模板和嵌套模板之间的多对多关系中,和/或嵌套到多个深度级别(图76)。根据一个方面,webifier软件可以定义电子表格公式函数,诸如“usetemplate()”,其接受应该使用什么模板表格的单元格范围引用或模板标识符。其中使用公式的单元格可能隐含地提供一些信息,诸如根据单元格的位置插入嵌套模板表格的位置,或基于单元格大小分配给嵌套模板的宽度和高度。如果用于填充模板的源记录与父模板不同,则可以将参数传入usetemplate函数,该函数将允许模板知道哪些与非嵌套模板表格的方式非常相似的源数据适用于某些页面类型(如下面进一步描述的)。这允许诸如发票模板的场景,其内包含需要从不同记录表格上的记录填充的“invoiceitem(发票项目)”列表。通常,此种嵌套模板表格将利用传统电子表格“mergecells(合并单元格)”功能,以允许其以足够的宽度和高度显示,而不影响父模板的行或列对齐,以及利用传统表格功能以将记录过滤(如下所述)提供到仅属于特定发票的那些发票项。webifier软件可以允许模板表格单元具有引用模板表格内的其它单元格、其它模板表格内的单元格、记录表格数据或同一单元格内的所有上述内容的混合的公式。所描述的技术还允许用于输入功能的一个或多个模板以及用于输出功能的一个或多个不同模板同时使目标系统的访问者可用,即使基础源引用相同或部分重叠。公式通常在本质上是声明性的,但是可以使用由任何电子表格工具和/或新格式或语法支持的任何公式或等式。具有记录公式(模板指示)或参考表格数据的表格模板在电子表格工具中设计模板表格时,旨在表示特定记录或从多个记录导生的聚集值的单元格可能评估为空和/或具有占位符值,该占位符值对系统没有影响的,而不是向设计者指示格式。外部列表或数据库可能包含单元格位置的交叉引用(诸如c15)以及其预期用途,诸如显示发票的小计。或者,如果记录表格单元格可从模板表格引用,则可以在引用这些记录的那些单元格中插入公式或占位符公式。例如,模板上的客户标题单元格可能具有公式,诸如“=clientlist!a1”,其可能会在设计时作为占位符由电子表格工具评估为文本“client(客户)”,或者公式可能是“=clientlist!a2”,其可能在设计时作为占位符由电子表格工具解析为“pleasantsolutions(合适的解决方案)”。另外,ref可以是“=clientlist!a:a”或“=clientlist!a1:a1000”,其导致空、错误或非预期值。在上述每种情况下,在设计时产生的文本仅是设计时占位符,并不像公式本身那样重要,公式具有clientlist中哪个列用于填写模板的有用信息,以在稍后点处的实际求值期间协助webifier,诸如访问者。为了方便起见,这个概念通常可以称为模板指示。模板指示公式可以由设计者键入,或者从可用或相关数据列的列表中拖放而得到。公式对于电子表格工具的单元格引用(在命名表的情况下为“=clientlist!a1”或“=clientlist!client”)是典型的,典型的函数调用语法为此目的触发专门的动作(“=getrowrecorddata(“client(客户)”)”),或者它们可以是专门的单独格式,诸如“[[客户]]”。公式可以存储在电子表格的典型的单元格中,或者它们可以存储在公式的特殊外部列表中,以及关于它们将被应用于哪些单元格的信息。多个数据源当设计者希望在行记录表格中具有主记录集,而在另一张表格中具有一个或多个“辅助记录”(辅助数据源)时,记录集之间的多种关系是可能的。当设计者指定一个或多个辅助数据源时,webifier可能会要求设计者提供附加信息,以确定关系的类型,以便确定如何填充在模板工作表内找到的参考。如果模板仅使用辅助数据源中的单个记录,即使填充模板的选择的主记录可能有所不同,也可能保持不变,则系统可以允许设计者指定从辅助数据源选择单个辅助记录的一个或多个标准,将由模板使用。例如,在主记录集是发票列表,且模板是访问者选择的任何特定发票的呈现,则设计者可以指定“徽标”表格的辅助数据源以提供公司名称和徽标,以使用开具发票的公司装饰模板,并且要求辅助列a设置的标准为“发票徽标”,使得徽标表格中将仅使用一个记录。标准可以基于选择的主记录,或者以与模板相同的方式引用来自主数据源的数据,或者间接引用引用主数据源的模板上的单元格。例如,发票模板可能具有来自“标志”表格的辅助数据源,其中标准将设置为需要与“客户国家/地区”相匹配的辅助列a,使得该模板将使用1个辅助记录,但是根据选择的发票而有所不同。如果模板将使用来自辅助数据源的一个或多个记录,则标准可能导致从辅助数据源中选择多个记录。可以将对辅助数据源上的数据列的引用评估为若干记录值(仅找到的第一记录值)的级联,或者模板可以指定用辅助数据值之一填充多个单元格中的每一个。模板可以通过引用跨多个行或多列的单元格内的辅助数据源来指定。可选地,模板可以指定嵌套模板以用于定义辅助数据值的呈现。可以通过在模板内使用电子表格公式函数(诸如“usetemplate()”),通过将浮动或锚定控件拖放到模板上,通过利用与模板相关的webifier中的选项来指定模板内插入嵌套模板的位置,以上组合和/或其他方式来指定嵌套模板。可以通过合并单元格,作为usetemplate函数的参数,指定表格外但在与嵌套模板或父模板有关的webifier内的选项,对单元格进行颜色编码,在单元格周围拖动边框和/或选择指定为表示嵌套模板的边界的单元格区域,来指定嵌套模板的边界。模板的嵌套可能会导致插入单元格,并将现有的模板单元格向下和/或向左移动,以提供适当的空间来显示所有适用的辅助数据值。autogen(自动生成)和虚拟表格根据一些方面,webifier可以基于其他表格和/或模板自动生成表格,以方便设计者的工作。如上所述,行记录表格可以在单个表格中组织潜在的许多记录。由webifier或电子表格应用程序自动生成的行记录表格可以称为“autogen”表格。尽管本文中参照webifier进行了描述,但是本领域的普通技术人员将理解,具有以下在下文中进一步描述的特征的autogen表格可以在webifier之外的电子表格应用程序中找到用途。webifier可以响应于各种设计者动作来自动生成行记录表格(“autogen”表格),这些动作包括但不限于在定义页面时选择多个数据源,在模板内或间接通过嵌套模板引用多个数据源,识别行记录表格之间的关系和/或通过显式请求。响应于适当的设计者动作,webifier可以以下面进一步解释的多种方式来生成autogen表格。设计者定义和/或autogen表格可以是完全虚拟的,每个单元格具有以下描述的特性,也可以是部分虚拟的,仅具有某些特性和/或仅将它们应用于某些单元格、列和/或行。传统的电子表格应用程序通常允许在定义另一个单元格时使用一个单元格的两种方法。这些传统方法都可以称为“非虚拟”。在第一种方法中,如果将单元格a1定义为“=1+z1”,并且b1要基于a1,则传统电子表格工具将允许用户将a1的定义复制并粘贴到b1(通过定义一次性使用),使得b1现在将具有定义“=1+z1”;然而,在这种情况下,对a1的后续更改不会反映在b1中。在第二种类型中,传统电子表格工具将允许用户将公式“=a1”输入到b1(供参考使用)中,随后对a1的更改将反映在b1中;然而,存在b1中的公式对于用户进行声明,读取和维护变得复杂的情况,诸如,要使用的单元格的选择根据查找结果或关系而有所不同,部分原因是因为b1的公式内正在定义整个单元格的选择和使用。在这两种非虚拟方法中,对b1的任何修改都不会自动影响a1,并且格式设置更改不会在任何方向上反映。本文描述的方面可以允许使用单元格的第三种方法来定义另一种,其可以被称为“虚拟视图”或简称为“虚拟”引用方法。在这种虚拟引用方法中,用作另一个单元格虚拟视图的单元格可以自动同步以显示对应单元格的内容,并且可以将所有更改等同地反映到对应单元格(诸如该单元格公式中的更改,格式设置,或响应对引用的单元格的更改而更新的值)。在虚拟方法中,对a1的后续更改可能会反映在b1中,用户在维护b1方面没有那么复杂,对b1的更改可能会反映在a1中,并且因为对b1的更改可能会影响a1,所以可能会有可以更改任何数量的视图以自动影响所有视图的多个虚拟视图。像autogen表格一样,本领域的普通技术人员将理解,本文所描述的虚拟引用和虚拟表格在这里讨论的webifier示例性实现之外具有用途和应用。在定义虚拟表格时,设计者可以指定控制是否在虚拟视图中反映了全部,部分格式设置更改或没有格式设置更改的选项,以及控制允许使用直接数据值或公式反映或覆盖哪些方向更改使得覆盖单元格不再是虚拟的选项。根据一些方面,设计者定义的和/或autogen表格可以是具有为电子表格中的其他单元格提供虚拟视图的单元格的虚拟表格。虚拟表格的内容会自动保持同步,以与另一个表格和/或同一表格的单元格内容相同。虚拟表格可以包括对其他数据源(诸如一个或多个其他行记录表格、外部数据库源和/或表格记录的实例)和/或具有直接数据值和公式的列的间接视图或由其组成。根据某些方面,虚拟表格可以作为数据的完全冗余副本独立于其他数据源持久和/或临时存储,可以仅作为视图的定义与任何直接数据一起存储,可以显示给设计者以方便引用而可能完全不被存储,或者可以对设计者完全隐藏,直到设计者指示查看它们为止。虚拟表格可能会排除和/或隐藏在多个数据源之间重复的列。使用本领域技术人员显而易见的任何数量的常见检测方法,虚拟表格中源数据的任何冗余副本都可以是静态的,定期更新的,或者可以在检测到其他数据源已更改时实时自动更新。autogen和/或虚拟表格可以允许和/或不允许设计者进行大量修改,包括添加带有引用表格的其余部分或其他表格的数据或公式的新列,删除列,更改格式设置,添加新记录和/或覆盖特定记录值。它们可以用作设计者在其上进行构建的基础,也就是说,单元格可以通过其他表格、公式或页面定义分别作为区域或以聚合方式引用。当autogen和/或虚拟表格具有表格记录的实例作为其源数据时,webifier可以从设计者获得要包括在新表格中的来自表格记录的单元格或区域的列表。附加地和/或可选地,webifier还可以分析表格记录以定位所有指定颜色的单元格,诸如具有橙色(或其他颜色)背景的单元格,通常由电子表格工具建议为指示输入单元格,然后自动选择要包括在新表格中的那些单元格。webifier可以允许导入功能,其中设计者可以选择和/或上传任何数量的电子表格文件,或者从一个或多个文件中选择任何数量的特定表格,并且所有导入的表格将具有在新表格上表示的选择的单元格。在没有虚拟视图的情况下,例如聚合许多表格记录实例的所有b10单元格的传统替代方法是手动创建可能冗长的公式,诸如“=instancea!b10+instanceb!b10+instancec!b10+instanced!b10..”,如果实例数量更改,则可能经常冒过时的风险。虚拟表格或虚拟列可以分析或监视数据源实例的存在以自动添加或更新其他虚拟单元格。webifier可以跳过导入表格,或警告用户有关导入表格,其中,除了转换为虚拟行记录表格的单元格以外,在内容上存在任何不一致或差异。webifier可以分析不一致,并确定不影响导入的一个或多个,或者导入可以容纳不一致。例如,字体大小和行宽可以是忽略的不一致。空白行的数量在预期的2到实际的3之间变化可能会导致webifier删除或跳过多余的行,使得重要内容可以继续进行,而预期的1与实际0之间的不一致可能不会被忽略。市场上有许多标准电子表格区分方法,通常涉及分析许多内容单元格相对于另一表格的位置:与先前导入表格相比,这些标准方法可用于精确定位已更改绝对位置的单元格内容,但是仍然能够可靠地定位并提取值。在使用这种标准分析时,webifier可以忽略所讨论的单元格的值差异,而集中在附近单元格的定位上,使得即使值始终不一致,所讨论的单元格仍然可以定位。同样,页面定义也可以自动生成和/或虚拟。autogen页面和/或虚拟页面可以使用设计者定义的模板,也可以使用自动生成的模板,并且页面和模板可以使用手动定义的,自动生成的和/或虚拟表格作为源。用于生成页面定义和/或模板的触发器可以与autogen表格的触发器相似,或者由于autogen和/或虚拟表格的创建而可以被触发。可选地,当设计者创建与记录表格相关联的页面时,webifier可以呈现从最相关到最不相关的顺序先前定义的模板的列表。可以通过分析表格是否是已经与不同数据源一起使用的模板(指示相关性较低),表格是否像传统行记录表格那样使用最小格式设置和列而不是模板中一致类型的值来结构化(指示相关性较低),和/或预期表格与页面的选择的记录表格的内容的相似性(诸如行记录表格的列标题和预期模板表格的单元格中两者都出现的单词数)来确定相关性。页面或表格的自动生成过程可能涉及也可能不涉及某些人为因素,诸如与设计者确认是否执行自动生成,向设计者请求附加信息和/或由设计者明确确认结果。webifier可以为当前用户信息(诸如当前访问者用户名、当前访问者属性、角色、上次登录时间等)提供只读虚拟autogen表格,包括特定于用户或特定于浏览器会话的属性,诸如使用的浏览器品牌。这将允许其他表格上的任何公式引用关于当前用户的信息。类似的方法可以应用于目标系统可用的其他上下文。webifier可以提供具有更改历史的只读虚拟autogen表格,其中虚拟表格内的每行表示更改,每列表示任何表格上的任何单个单元格,并且若干单元格可以具有在同一虚拟表格内可用的历史。列之一可以是时间戳列,以表示该单元格的值何时发生。模板指示作为示例,设计者可以在电子表格工具中创建发票的插入模板“invtemplate”,而没有对数据源的任何引用,但是具有对将在何处添加对数据源的引用的指示。设计者可以引用该模板来创建页面的细节类型。webifier可以识别模板中的所有指示,并且可以在无需设计者进一步干预的情况下自动生成虚拟行记录表格virtinvsheet,其中,如果模板的a1单元格具有指示,则为每个指示分配具有列名称(诸如“invtemplate_a1”)的列。webifier还可以使用virtinvsheet作为数据源并使用一列导航链接自动生成虚拟报告页面,以供访问者导航到任何选择额发票的细节。如果invtemplate具有用于输入发票项目的嵌套模板,则webifier可以自动生成第二虚拟行记录表格virtinvitemsheet,具有与invtemplate上的指示相关的列,设计者先前指定的指示对于每个发票都是唯一的,可以视为主密钥。然后,webifier还可以使用virtinvitemsheet作为数据源并使用类似的导航链接来生成虚拟报告页面。webifier还可以基于virtinvsheet或virtinvitemsheet内的列使用聚合公式自动生成模板和页面,以在此示例中使自动生成页面报告每个发票项目的销售频率和每月插入的发票数量。然后,设计者可以引用或修改全部或部分自动生成虚拟表格和报告,以继续构建其他表格和页面。对于嵌套行记录表格,作为识别要由嵌套数据记录引用的父数据表格的主密钥列的替代方法,webifier可以在嵌套表格中具有自动生成和/或虚拟列,对应于父数据表格的每个列,实际上每一列或满足可能成为主密钥的一部分的基本标准(诸如数据类型或长度)的每一列。利用嵌套表格的父模板可以使用嵌套记录上所有这些列的标准自动过滤嵌套记录,以匹配父模板显示的父记录。作为另一替换,当设计者在前面描述的方法中提供标准以从模板中引用和过滤包括嵌套数据源的辅助数据源时,可以使用在标准中指定的过滤辅助数据源的列来向webifier指示哪些列应添加到嵌套表格中。设计者定义、autogen和/或虚拟表格可以具有其他自动生成的与诸如表、列、行或单个数据值的元素相关联的元数据。元数据可以包括元素的唯一标识符、时间戳、关联页面的标识符或相关其他表格的标识符或由其组成。元数据可用于识别元素创建的触发或目的,级联其他元素的修改或删除,对于其他元素、页面和/或表格作为外密钥使用,用作元素的主密钥,或作为进一步分析或报告元素与其他页面和/或表格之间关系的基础。为了便于引用,这种元数据可以作为附加的列或行对设计者可见,和/或可以被电子表格公式、页面定义或以使用其他电子表格数据值的任何方式进一步使用。可选地,通过“resolver(单元格引用)”电子表格公式的方式,设计者可访问元数据。这样的元数据还可用于检测记录之间的关系中的潜在歧义和/或触发从设计者或访问者收集进一步的信息。作为对先前示例的扩展,virtinvitemsheet可能实际上具有virtinvsheet的所有列,使得设计者不需要指定任何主密钥列。webifier可以将虚拟列添加到具有用作发票的主密钥的guid的virtinvsheet,并且将列添加到virtinvitemsheet,以用作该主密钥的外密钥。当访问者在页面上使用invtemplate创建发票项目时,该invtemplate又使用virtinvsheet,virtinvitemsheet的外密钥列将由virtinvsheet主密钥自动填充。然后,webifier可以以关系编程领域的技术人员已知的典型方式使用外密钥和主密钥列,或有选择地确认发票项目与发票相关联,诸如是否存在所有值都相同的两个发票,以至于将virtinvsheet的基本所有列都包含到virtinvitemsheet中不足以唯一地识别发票项所属的发票。然后,webifier可以警告设计者由于数据完整性问题或数据结构原因,发票缺少唯一性,并向设计者建议各种推荐的最佳实践。关系的自动检测webifier可以自动检测记录表格之间以及一般在数据源之间或特定上下文(诸如一个或多个模板或页面定义)内的数据源之间的关系的存在、类型和/或详情。webifier可以使用或分析可用信息的任何组合(可以称为“线索”)来帮助关系的自动检测,包括设计者动作、访问者动作、设计者或访问者输入的记录数据、记录结构、记录表格上的格式设置、模板结构和格式设置、页面定义、全局白名单、静态黑名单、对支持它的电子表格工具或电子表格工具插件(诸如microsoftpowerpivot)声明的关系,和/或其他。可以使用各种静态或动态权衡算法或点系统一起分析多个线索,以提高分析结论的可靠性。可靠性级别可以通过线索的许多特性来衡量,包括可用线索的数量和每个线索结论的一致性。例如,线索可以被组合以获得可靠性级别,诸如通过对表明特定关系的线索数量减去表明不同关系和/或缺乏该特定关系的线索数量进行计数。可靠性级别可用于确定关系是否应被webifier默默接受,设计者应在可靠性级别排序的一个或多个推荐中明确确认结论为推荐,或者因为不足以得出结论而应忽略分析。线索可以包括提供给电子表格功能的参数,诸如“vlookup()”或“countifs()”。例如,包含公式为“=vlookup(detailsheet!c5,parentsheet!b:f,3,false)”的模板或行记录表格可以指示detailsheet上的列c是parentsheet上的主密钥列b的外密钥。线索可以包括电子表格单元格的格式设置,诸如文本或数字格式设置。例如,格式设置为美元符号的值通常会表明包含美元符号的列既不是外密钥也不是主密钥,而间接表明也不是以诸如聚合的方式使用这些美元值列的任何列。线索可以包括列命名,即使记录表格中的记录为零。例如,与列入黑名单的列名称“comment(注释)”相比,名为“uid”或“发票编号”的列更可能是密钥。线索可以包括列中包含的数据的唯一性。例如,如果列始终具有相同的值,则它可能仍然是外密钥,但它不是主密钥,并且不太可能成为复合主密钥的一部分。线索可以包括列内的数据长度。例如,即使每个值都是唯一的,通常包含多个单词的备注列也不可能是密钥,因为某些值的空白列也是如此。线索可以包括列内数据的一致性。例如,如果一个列同时具有数字值和某些单词,则与具有一致数据类型和长度的列相比,它不太可能成为密钥列。线索可以包括将模板定义为具有嵌套模板或引用嵌套表格。例如,如果发票具有发票项目列表,并且设计者指示要过滤由与当前显示记录匹配的invoiceid的嵌套列“belongstoinvoice”显示的发票项目,则belongstoinvoice可能是外密钥,invoiceid可能是主密钥,并且发票和发票项目之间存在关联的可能性会因以下事实而增加:一个以相对于另一个嵌套的方式使用。线索可以包括分析虚拟主密钥和若干非自动生成列,以识别与虚拟主密钥最密切相关的列。线索可以包括对指定特定列或指定与特定列中的值匹配的值的访问者搜索的发生进行计数。例如,在列表报告页面上,如果访问者频繁搜索诸如“inv0511”的文本,则包含诸如inv0511的值的列很可能是主密钥列。线索可以包括数据的顺序。例如,值为1到100且没有任何间隔的列以及在不同表格上存在相似的列(其中两个表格都由同一模板使用)表明这两个表格有关系,并且两个列也有关系。线索可以包括一个表格上的列相对于第二表格上的列的值的分布。例如,如果表格f列a始终具有表格s列a上的值的1:1分布,则第二表格s很可能是表格f上记录的必需细节记录。如果它具有1:0-1分布,则它是表格f记录的可选细节记录。如果它与所有其他列都具有1:0分布,则表格f和表格s之间可能没有关系。线索可以包括列的定位。例如,与中间列相比,记录表格中的第一列更可能是主密钥,或者彼此紧邻的列比相距较远的列更有可能形成复合主密钥。关系的进一步使用电子表格工具的许多传统公式功能可用于引用来自辅助数据源的信息。webifier可以使用识别的关系(诸如自动检测的关系)来进一步简化从辅助数据源访问数据的功能和方法。作为先前示例“=vlookup(detailsheet!c5,parentsheet!b:f,3,false)”的扩展,如果已经定义了细节表格和父表格之间的关系,则通过任何方式,webifier可以允许如果从细节表格中调用,则细节表格上的单元格(诸如z5)将使用简化功能“=webifiervlookup(parentsheet!d)”,因为细节表格和父级表格之间的关系是已知的,细节表格的列c中的外密钥和父表格的列b中的主密钥之间也是如此。函数名称可能与此示例不同,也可能是重载,共享相同vlookup()函数名称,但带有可选参数。另一个示例是sumifs的可选版本,尤其适合于复合主密钥。类似于“=sumifs(detailsheet!f:f,detailsheet!a:a,concat(‘=’,c5),detailsheet!b:b,concat(‘=’,d5))”的传统用法,在本示例中,将细节表格上列f的聚合限制为行记录,其中c5:d5的复合主密钥与detailsheet!a:b的复合外密钥相匹配,可以用可选版本“=sumifswebifier(detailsheet!f:f)”替换,获得相同结果。类似地,可以添加指示在将数据传递给传统函数之前过滤参数的函数。例如,代替sumifswebifier,webifier可以将“=sum(filter(detailsheet!f:f))”评估为等效。为了基于密钥也基于附加标准过滤,filter函数可以接受附加参数,使得“=sum(filter(detailsheet!f:f,detailsheet!c:c,‘>100’))”仍将通过复合密钥过滤,但也将通过具有大于100的值的列c过滤。附加参数的格式可以匹配传统上看到的语法,诸如在sumifs()中,可以是sql样式的查询字符串,可以是在其他常用软件中使用的可选语法,或特定于webifier的语法,诸如“=sum(filter(@f,@c>100))”。可选地,如整个webifier的情况,范围也可以由传统结构化引用(诸如“tablename[columnname]”)指定。然后,webifier可以将其作为公式解析引擎的一部分进行处理,可以在存储到电子表格工具之前将语法转换为传统语法,可以要求使用引号使其与电子表格工具的预期语法部分兼容,或者使用电子表格工具中处理的差异化技术,用于设计者在目标系统中预览与处理。在涉及访问者输入的页面类型(诸如插入或编辑页面)的情况下,可以使用由前述方法中的任何一种定义的关系来允许在辅助数据源上记录的直通插入或编辑,以及插入到辅助数据源中的记录的外密钥列的自动填充。包含利用关系引用辅助数据源的特定记录的公式但也指定为呈现在页面上作为输入控件的输入页面模板上的任何指示,可能会导致辅助数据源上的引用记录表格单元格被编辑或新记录被插入到辅助数据源中。例如,在记录表格invsheet和记录表格invsheetextended之间存在关系的情况下,其中,invsheet上的每个记录在invsheetextended上都有一个相应的记录,当访问者将引用invsheet和invsheetextended两者的插入页面模板提交给目标系统时,webifier将一个记录插入invsheet,并将一个记录插入invsheetextended,并且与定义它们之间的关系的密钥相关的任何列都将被自动填充。类似地,如果插入页面模板引用包括invsheet和invsheetextended列的虚拟表格invsheetcombined,则webifier将解析虚拟引用,使得将一个记录插入invsheet,且将一个记录插入invsheetextended。在可以直通编辑以及对主数据源应在辅助数据源上引用的记录的编辑的情况下,webifier可以通过公式函数参数、页面选项和/或通过向设计者弹出信息请求,从设计者获得附加信息。例如,在用于编辑记录页面的invitemtemplate细节模板上,如果单元格具有公式“=webifiervlookup(invoices[invname]))”和在webifier中声明的适当关系,或者关系在函数的参数中明确描述的传统vlookup,使用该公式编辑模板单元格的访问者可能打算更改发票项目所属的父发票,也可能打算直通编辑发票名称。然后,webifier可以在页面上具有“允许直通编辑”选项,设计者可以设置该选项以确定在编辑模板单元格的相应输入控件时发生哪个更改。如果编辑更改了主数据源在辅助数据源上引用的记录,则webifier可能会更改目标输入页面上出现的输入控件的类型,以便于输入和/或将控件将接受的值限制为在给定关系下有效的值。继续前面的示例,而不是适合输入发票名称的文本控件,呈现的控件可以是带有所有发票名称列表的下拉列表,其中选择发票名称会将发票项目的父更改为与该名称关联的发票。电子表格定义进入目标系统一旦根据需要利用适用数据配置电子表格,参照图2,步骤207可以进一步包括设计者使用webifier软件发起构建目标系统的过程,这里关于一个或多个说明性实施例进行描述。用户可以登录目标系统(图13)并访问接受电子表格的管理web页面。例如,webifier软件可以具有接受上传xlsx电子表格文件(图68)的输入表单,例如数据129(图1)。或者,webifier可以集成以经由web服务api从基于云和web的电子表格工具获取电子表格定义,一次一组表格(如果api允许)或者甚至逐个单元格(如果api需要)。为了简洁起见,所有这些方法在本文中称为“uploading(上传)”,或将电子表格定义或数据文件上传到webifier数据存储器,例如,数据库131(图1)。值得注意的是,上传记录和上传界面模板不需要单独的步骤,它们可以从设计者的一个步骤中从一个电子表格定义中发生,或者它们可以在不同的时间发生。webifier可以临时存储电子表格定义,用替代且更有效的格式替换它,或者用中间格式替换它,该中间格式被认为或不再被认为是电子表格。实现效率化和简化实现的平衡的一个示例是将表格转换成数据库条目,其中表格中的每个单元格是数据库表格中的一个数据库记录,其具有表示单元格和内容的位置的4个字段:表格、列、行、内容。内容可以与电子表格定义的原始方案匹配,但可以在数据库中有效地查找单元格。系统还可以以接收的格式永久地存储它,从而通过直接修改电子表格定义来保持目标系统页面上的访问者输入,如本文所述。创建web页面如上面关于步骤209(图2)所讨论的,所得软件可以包括web应用程序,该web应用程序包括一个或多个web页面,这里关于说明性实现进行讨论。设计者可以在webifier软件的管理界面(图18、图69和图55)中选择“addpage(添加页面)”功能,并从各种页面类型(图51)和配置选项(图52)中进行选择。电子表格定义中的单元格数据或元数据可能包含用于创建新页面的指示或指令,设计者预期哪些类型的页面,以及它们的各种配置选项;但是如果没有此信息,可能会提示设计者。可能在目标服务器上创建各种页面类型。通常,所有生成的目标页面的菜单在所有目标页面上显示为菜单,以便在整个web应用程序中方便地导航(图66,“timesheet(时间表)”web应用程序菜单列出该特定示例的所有三个目标页面),以及目标页面可以按“apps(应用程序)”进行分组,这些应用程序通常根据它们来自哪些电子表格定义或文件进行分组和/或由创建它们的设计者进行分组(登录设计者,或者与登录设计者共享电子表格定义的其他设计者或其它分组)(图16)。设计者可以通过拖放页面来修改目标系统菜单中目标页面的顺序,以便在附加组件中改变其顺序。添加页面(报告页面)+可见的源范围webifier软件可以创建的一种说明性类型的web页面是“report(报告)”页面类型。报告的标题可以由用户指定,或者从电子表格数据或标题生成(图52)。也可以指定源。源可以是电子表格定义中的表格名称(类似于csv_import页面类型的源控件,如图33所示),典型的电子表格单元格范围引用,诸如“=b9:c12”(图36),电子表格中定义的图表名称(图52),或电子表格“namedrange(命名范围)”(有时称为“definedname(定义名称)”),这是可通过名称引用的单元格范围,诸如“totalcolumn(总栏)”或“printablearea(可打印区域)”或“employeelist:employee(员工列表:员工)”(图36)。通常,范围不必是连续的块,它们可以包括多个块和单元格。例如,“a1:a8,a10,a30:b30”。许多页面可以引用相同的源单元格,源单元格可以与另一页面的源部分重叠,或者页面可以具有待组合的一系列源。这可以是目标系统基于设计者在电子表格工具中设计的报告向访问者显示htmlweb报告或移动屏幕的足够配置。例如,可以指定clientlist(客户端列表)表格,其中列表中的所有行记录现在都可供访问者访问。可以指定许多可选配置,诸如“showpagetitle(显示页面标题)”(图28)。还可以在应用程序或页面上指定权限规则,以控制是否需要登录以查看页面(图24)允许哪些登录用户或用户组或角色查看页面以及从哪些设备、网络或一天中的哪些时间查看页面。图25示出了简化示例,其示出了允许哪些登录用户在页面上查看。最终结果是显示报告的web页面,其看起来类似于提供数据的原始模板电子表格,包括数据的布局和格式(图97),而无需用户具有web设计的相关知识。目标页面的源数据而不是单元格范围可以链接到电子表格定义内的特定元素,诸如定位成悬浮在单元格之上的图表。某些页面类型可以具有自动将若干预先配置的控件添加到目标页面的选项。例如,“allowsearch(允许搜索)”(图48)或“allowpdfexport(允许pdf导出)”(未显示)选项在某些页面类型(诸如日历页面类型)上可用,这可能导致目标页面不仅具有预期的日历,还具有多个控件,诸如搜索文本框和搜索提交按钮以通过诸如滚动和聚焦搜索结果的方法将用户的注意力吸引到特定数据。可以在客户端或服务器端执行搜索结果的处理。添加插入页面+默认表单生成根据说明性实施例,webifier可以创建的另一种类型的页面是“insert(插入)”页面类型,例如,如在步骤211(图2),上面(图43)中可以使用的那样。类似地,可以指定clientlist的源,并且如果设计者希望,可由访问者插入行或列的指示。可以自动标识或检测表示标题行的单元格范围并将其呈现给用户以进行覆盖(图39)。例如,可以基于单元格的位置(图40显示检测到第一项是标题)、格式的差异(诸如,与下面列出的行相比的字体粗体或下划线)或者仅仅取表格的第一行进行检测。目标系统可以提供其它页面的列表作为在访问者完成插入后自动重定向访问者的选项(图44)。然后,目标系统可以向访问者显示自动生成的输入表单,其具有基于其各自输入控件旁边的标题行中的列的标签,并允许访问者插入数据(图91)。电子表格的clientlist中的单元格格式可能影响自动生成的输入表单上的单元格标签和输入控件的html格式。每个输入字段的标签可以由“headersource(标题源)”确定,并且通常是源范围的第一行,已定义名称或用户选择的范围。除了在电子表格定义中指定限制之外,可以由设计者利用在更多设置选项卡上的用于附加组件或目标系统管理页面的每个字段的“restrictionuserinput(限制用户输入)”选项手动指定或进一步限制表单上的输入类型(图78):例如,“userofpage(页面用户)”和“currentdate(当前日期)”限制(图44)可能显示不可编辑的字段,其中包含已登录用户的名称或已填写的当前日期(图91);某些列可能具有从以前的记录中复制的公式,并且也是不可编辑的;“wholenumber(整数)”和“decimal(十进制)”具有当前数字输入,其仅允许所选类型的数字;“list(列表)”可以显示包含指定范围内的值的下拉框输入;“date(日期)”显示用于选择日期的日历(图92);“time(时间)”显示24小时时间选择器;“none(无)”和“textlength(文本长度)”可以显示文本字段。添加插入页面+定制ui(模板源)根据说明性实施例,如果插入页面具有更多复杂性或定制要求,则除了电子表格内的第一clientlist源之外,设计者还可以在电子表格内指定“templatesource(模板源)”(图35)。它仍将执行到客户列表的插入,但输入表单用户界面可以由模板源定义。只要在模板源上找到模板指示,单元格的显示都可以替换自动生成的输入控件,其中输入控件的格式取自模板指示单元格的格式。添加细节页面+细节列表导航根据说明性实施例,另一个页面类型是基于指定记录源和模板源的“details(细节)”页面。目标系统可以将控件置于呈现模板化报告的结果之上,这允许访问者选择模板应该应用到的记录。作为替代方案,细节页面可以与报告页面结合使用。报告页面和细节页面都将具有clientlist电子表格作为源。clientlist电子表格可能具有名为“gotodetails(转到细节)”的添加列,并且每个行都将有公式,诸如“=navigateto(‘detailspage’,a3:z3,blue,linkstyle)”,它将向目标系统指示显示列出所有客户的主报告页面时,超链接样式的导航控件应在每个行上可视,行都会将访问者带到由行3或者被点击的相应行填充的detailspage。作为另一个替代方案,在报告页面创建期间的配置选项可以提示设计者指定待生成的导航链接而不是直接在clientlist电子表格内指定它们。细节页面上评估记录值的单元格格式可以是模板指示单元格格式组合使用记录数据填充模板指示单元格的单元格的任何给定行的格式的混合,其中根据目标系统默认值行为和设计者选择的首选项一个格式覆盖另一个格式,如果两个单元格都具有冲突的格式与可组合的格式(著如记录上的颜色改变组合模板上的较大字体大小),则格式优先于设计者选择的首选项。目标系统还可以分析记录以确保最常见的格式不会覆盖模板格式,但是可以允许一些少见且因此有意的格式改变来覆盖模板格式。添加编辑单元格和编辑记录页面对于访问者在目标系统上的目标页面内编辑单元格,设计者可以根据说明性实施例创建编辑单元格页面(图38)或编辑记录(图41)页面。从页面创建web页面来看,可以通过输入标题并选择页面类型“edit-cells(编辑单元格)”或“edit-record(编辑记录)”来类似地创建它们。编辑单元格页面允许访问者编辑单个单元格,但显示与报告页面非常相似的页面,直到访问者开始与可见元素交互(图88)。编辑记录页面可以允许访问者浏览记录(图89),编辑和/或删除行或列,并且可以类似于具有默认表格生成的插入页面(图90)。页面源可以是待在页面上显示的单元格值的范围,并且默认情况下,指定可以编辑哪些单元格的第二范围(图42)匹配页面源,使得所有单元格都是可编辑的。范围可以是整个工作表、已定义名称和/或定制范围。目标系统查询源范围以显示具有数据的每个单元格和其间具有数据的单元格。两个编辑页面还可以具有空的空间的附加行和/或列,以允许用户通过插入来扩展记录集。已定义名称或定制范围将仅包括由该范围引用的单元格。目标系统可以通过在设计者指定范围之后创建已定义名称来实现定制范围选项。编辑记录页面类型还具有行或列的附加选择(图41),其可以确定页面上可用的编辑按钮。在“more(更多)”部分中存在用于两种类型的编辑页面的附加设置(图39和图42)。设计者可以使用第一行/列或使用已定义名称或定制范围指定“headerrange(标题范围)”。如果选择了标题范围,则设计者可以指定是否可以由访问者编辑这些标题。标题将显示为页面的第一列(图90)或列编辑记录页面的顶行。设计者还可以选择可编辑范围,该范围必须包含在主页面源中。该可编辑范围可以是可以由用户编辑的所有单元格。还存在显示页面标题的一些选项以允许搜索页面,显示单元格之间的网格线,以及显示行和列编号/字母。对于编辑记录类型页面,可能存在允许删除和编辑的附加选项(图42)。两者都是默认允许的。这可以使得在每个记录旁边的目标页面上显示其它控件(图89)。如果选择“allowdelete(允许删除)”并且行/列中的所有单元格都在可编辑范围内,则只能从页面删除行/列。如果选择“allowedit(允许编辑)”并且行/列中的至少一个单元格在可编辑范围内,则只能从页面编辑行/列。在这种情况下,根据一些方面,可以仅编辑实际在可编辑范围内的单元格。根据说明性实施例,当查看编辑单元格类型目标系统页面时,用户可以点击任何可编辑单元(在创建/编辑页面时定义可编辑单元格范围)以进行编辑。可以暂时隐藏表格单元格的内容,并且利用依赖于单元格编号格式的输入元素替换,其中单元格的当前内容作为默认值(图88)。保存和关闭按钮也是可见的。文本单元格将显示文本字段,数字格式(诸如十进制或货币)将显示具有键入文本的选项的数字选择器,日期显示日期选择器,以及时间显示时间选择器。如果为单元格设置了传统的电子表格数据验证,这也可能影响显示的输入元素,其中列表验证显示下拉框,以及数字显示数字选择器。应用于页面的目标系统验证还具有日期、时间或地图/gps的选项。日期和时间将分别显示日期选择器和时间选择器。地图/gps将允许用户输入gps坐标,或点击地图以生成它们。改变这些值并保存将以在电子表格工具中一样的方式改变电子表格定义中单元格的值/公式。如果单元格包含使用webifierinsertfile公式函数的文件引用,则将为用户提供上传新文件或图像的选项(图62)。在选择保存后,新数据将发送到服务器,并返回字符串值以替换已编辑单元格的内容。可以隐藏保存和关闭按钮,并且单元格像往常一样显示其值。如果上传了文件,则刷新页面。在单击保存按钮后,可以将以下内容发送到服务器:页面id,新单元格值,单元格的行和列,描述数据类型的单元格类型,以及指示目标系统页面是否嵌入在另一个web页面上的布尔值。如果上传了文件,则也会发送文件密钥、文件id和文件数据。在服务器处理编辑请求后,会将json对象发送回客户端,其指定待在单元格中显示的新文本。添加日历页面可以在附加组件中创建日历页面(图27),但是根据说明性实施例,它们也可以通过网站创建。为了创建日历页面,可以使用三个数据:事件日期(必需,日期格式化单元格),事件时间(可选,时间格式化单元格)和事件标题(必需)。用户选择添加页面按钮,然后选择日历作为页面类型。两个选项可用于如何输入每个参数的单元格范围:已定义名称和定制范围。已定义名称允许用户从附加的工作簿提取的已定义名称选项列表中进行选择。定制范围允许用户通过按“usecurrentselection(使用当前选择)”按钮或手动输入选择器来指定范围。在指定这些参数后,可以保存页面。事件的日期可以是唯一必需的字段,没有标题的事件可以默认为“event(事件)”,以及没有时间的事件可以默认为“allday(全天)”。在将改变上传到服务器后,日历页面视图将显示包含指定事件的日历小部件。提取三个指定的参数源并用于构造由标题、日期和时间属性组成的事件对象。然后,这些对象显示在日历小部件上,通常作为其适当日期内的标题列表。设计页面上的缩略图反映并匹配呈现的日历小部件。添加嵌套的容器页面容器页面是可以包含另一个页面的一个或多个实例的页面。在页面创建期间,通过从类型下拉框中选择‘容器’来创建它们。可能至少有三种不同的模式,其可以用于创建容器页面:简易、高级和图形设计器,可以经由ui中的按钮进行选择(图29)。简易模式可以将子页面呈现为网格布局。可能需要两个数据:列数和子页面,其将包含在容器中(图29)。最终布局中的行数将取决于为容器选择多少页数。在简易模式创建期间,经由下拉框选择每个子页面。下拉框以网格布局,其反映每个子页面将在呈现页面上的显示位置。在添加页面时,可以附加下拉框的新的空白行,以便可以添加更多的其它页面。还可以存在创建新页面的选项并将其添加到容器中,该页面可以在保存容器本身时保存。同样,如果改变了列数,则可以添加或删除下拉框以反映新列数。在简易模式下创建的容器中的列数可能被限制为某个数字,例如三。高级模式可以使用wisywyg-“所见即所得”-富文本编辑器,其允许更多地控制容器页面的显示(图30)。编辑器允许高级格式化,如字体大小和颜色,粗体文本,项目符号列表等。用户可以在容器中包含他们想要的任何文本数据。当保存后,文本数据另存为html模板。根据说明性实施例,可以通过键入由文本“{{“and(和)“}}”包围的页面名称来完成经由高级模式在创建的容器内纳入子页面。例如,键入短语“{{datapage}}”将在容器中包含名为“datapage(数据页面)”的页面。当呈现容器页面时,在模板的“{{“and(和)“}}”标记之间搜索短语。如果短语与系统中的有效页面名称匹配,则该短语将替换为呈现匹配页面的html。高级模式的优点是可以使用交错的文本布置多个页面,而无需创建多个文本类型页面。它还允许更好地控制容器页面的最终外观。图形设计器模式类似于高级模式,但是可以包括完整的html文本编辑器和预览功能(图31)。通过使用位于编辑器顶部的选项卡,图形设计器中的编辑器可以在“edithtml(编辑html)”、“preview(预览)”和“editor(编辑器)”视图之间切换。“editor(编辑器)”选项卡包含与高级模式编辑器相同的编辑器。html编辑器位于“edithtml(编辑html)”选项卡下方。使用html编辑器,用户可以输入任意标记,以允许甚至更好地控制容器页面的最终外观。“preview(预览)”选项卡功能获取当前标记并进行呈现,因此用户可以快速查看呈现模板的外观,而无需正常保存和查看页面。高级和图形设计器都在右手侧具有当前页面的列表。当从该列表中单击页面时,页面可以自动插入当前光标位置处的模板中。高级和图形设计器模式还可以具有“importfromeasymode(从简易模式导入)”的按钮。可能需要首先使用简易模式输入数据才能使用此功能。当按下时,高级和图形设计器编辑器将预先填充模板,该模板与容器处于简易模式时的原始外观相匹配。对于所有容器模式,一个或多个规则可能会限制创建。一个规则是容器页面不可以多次包含相同的插入类型页面。第二规则是容器不能包含自身或将导致无限循环的另一个容器页面(容器循环的示例:页面‘a’包括页面‘b’,但页面‘b’也包含‘a’)。在保存时检查这些规则,并且如果违反,则可以防止容器的创建。根据说明性实施例,webifier允许访问者动作(诸如插入)的记录列表和用户界面两者在很大程度上由电子表格工具内的非技术设计者定义。所有这些报告类型都可以作为源或模板源电子表格,其具有表示记录的聚合数据的公式,表示聚合数据的图表,或基本上在电子表格中可见的任何内容(图98)。例如,插入页面可以具有关于先前插入的记录的引用信息,或者到目前为止的所有记录的图表,以帮助访问者输入下一个记录。数据和界面之间关系的本质可由设计者非常广泛地定义。将源数据的电子表格和电子表格的组合再次用于用户界面布局和设计的灵活度出乎意料地强大,其为以前没有软件开发经验或培训的数百万用户提供新功能。容器页面类型也可以是选项卡容器类型(图49)。比起将多个子页面定位在同一个页面上,例如在多个列中,当目标页面加载到访问者时,每个子页面将显示为单独的选项卡(图98)。公式的嵌套容器页面容器页面可以具有附加模式,由此容器的定义(例如,要显示的子页面的列数和要示出什么子页面)可以由容器模板表格定义。容器模板表格的单元格可以只是子页面的名称或其他唯一标识符,并且根据某些方面,表格中使用的列数将表示要在容器页面上显示的子页面的列数。这为设计者提供了很大的灵活性。例如,以与定义数据和其他模板的方式一致的熟悉方式,设计者可以跨多个列合并单元格,诸如单元格a1:a3,在其周围放置边框,然后将单元格内容设置为文本“标题页面”以指示标题子页将具有边框和跨越3列。设计者还可以使用公式来指示应向访问者显示哪些子页面。诸如“=if(items.count(a:a)>50,‘linegraphpage’,‘barchartpage’)”的公式将更改显示的子页面,使得当计数中存在很多项目时,显示线形图,但是当存在项目少时,显示条形图。诸如“=if(item.a1<edate(now(),-1),‘readonlypage’,‘editablepage’)”的公式可以允许对记录的编辑,直到它们存在一个月之久,此后该页面会显示一个只读视图,而不是编辑控件。webifier可以允许任何各种类型的模板(包括容器页面)的单元格包含html标记文本,该标记文本将由目标系统作为html标记而不是文本传递给访问者浏览器。设计者可以指定应使用作为标记检测和传递的html标记来呈现哪些页面,诸如通过页面配置选项。附加地和/或可选地,设计者可以通过向webifier指示应该允许特定单元格或区域html标记呈现来指定应该呈现哪些特定单元格,并且webifier可以将这种首选项存储为元数据和/或与表格分开存储。添加csv导入页面根据说明性实施例,csv导入页面(图86)允许访问者从csv文件一次将多个行插入电子表格中。设计者可以选择工作表、已定义名称或定制范围作为csv导入页面的源(图33)。该源指定将在页面上输入新数据的位置。它可能会或者可能不会限制导入的csv文件中允许的列数。例如,覆盖范围为$a$1:$c$1的已定义名称源将只允许csv文件具有3个列,并且数据将插入到跨越列a、列b和列c的最高可用行中。或者,其可以忽略额外的列。当使用页面时,可以告知访问者要插入的预期列数。它们也可以具有排除csv文件的第一行的选项。然后,访问者使用标准文件上传控件选择csv文件,并提交页面。该页面可以将上传控件限制为仅接受.csv扩展名。如果页面不包含数据或包含格式不正确的数据,则返回错误(图87)。可以以与插入记录页面相同的方式将每个行一次一个地插入由源指定的列中。如下所述,数据验证仍然适用,因此,如果任何值不符合对单元格设置的限制,则将拒绝、限制或以其它方式修改导入,并且访问者会收到警报。如果插入成功,则访问者可以收到显示插入行数的成功消息。添加嵌入式电子表格页面根据说明性实施例,可以用标题和源范围指定的另一个页面类型是嵌入式电子表格页面。该页面类型显示访问者的嵌入式电子表格界面,并允许访问者以与设计者相同的方式编辑电子表格的设计者指定部分的值和公式。电子表格控件的实现不需要是全面的,也不要求访问者具有引用电子表格之外的数据的能力。该实现可以使用许多市售电子表格web控件中的一个,其以电子表格定义格式接受数据,并且在访问者保存时,以电子表格定义格式产生结果,其中单元格公式或单元格值可以容易地一个接一个地复制到提供给电子表格控件的临时表格中或从其复制。附加页面类型根据说明性实施例,webifier可以以类似的方式支持多种其它页面类型。例如,类似于上述“report(报告)”页面类型,但目标系统可以使用市售转换器或打印到pdf库来执行将报告页面的html转换或打印成pdf文档的附加步骤,当访问者访问该pdf页面的url时,该文档被下载并且由浏览器或移动应用程序打开。另一个示例页面类型是将外部web页面嵌入目标页面上的框架中,其中框架的url在创建页面时在页面配置中指定,或者通过解除引用电子表格定义中的指定单元格来获取,其允许由静态值或公式提供。在电子表格记录数据应定义访问者所指向的web页面的情况下,这可能是特别有用的。提取电子表格定义根据说明性实施例,一旦定义了电子表格,webifier可以基于电子表格定义生成目标系统页面。在其中电子表格定义持久地存储在目标系统上的示例中,该过程开始于提取并使落于适用源范围的内的单元格的定义可用(图2中的步骤207)。如果电子表格定义以xlsx文件格式开始,则可以解压缩该文件以获取xml格式的内部内容。各种xml解析选项(从基本的字符串解析到复杂解析通常通过调用xml解析库中的函数完成)用于提供方便的访问来迭代所有单个数据项,包括单元格及其属性,以及将它们加载到替代或中间格式,诸如内存中面向对象的类和实例。或者,可以使用与xlsx、ms-xlsb、spreadsheetml、ods格式和类似模式兼容的市售电子表格文件格式解析器来公开面向对象类中的电子表格的数据,这些类方便地专用于通常在电子表格数据中找到的属性和格式。在其中电子表格定义未持久存储,而是以中间格式或数据库格式持久存在的示例中,上述步骤中的一些步骤仍然适用,但是可以在较早阶段对系统上的所有表格执行这些步骤,其在设计者提供电子表格定义之后不久,而不是由于系统接收到对目标系统页面的请求而按需执行。中间格式可以包括在较早阶段并部分基于每个请求部分遵循这些步骤。例如,早期阶段可以接受xlsx文件,将其解压缩,并将必要的文件转换为表示整个表格的数据库记录,而不进一步解析。在这种情况下,到目标系统的每个页面请求期间的步骤都较少。格式和属性的转换根据说明性实施例,在步骤207和/或步骤209期间(图2),可以将数据转换为中间格式,这可以使得在类中更方便地访问相关数据属性,该类更类似于css类或html类而非电子表格类。例如,类上的属性名称可能与css的属性名称匹配,或者类上可能有方法,诸如“obtaincssdefinition()”。然而,不需要中间格式的便利性,因为可选地,webifier可以根据目标页面的css和html的输出格式存储数据,或者可以以原始电子表格格式存储数据,并且稍后直接流到输出表单,其中没有中间存储。例如,为了处理列的宽度,可以读取xml片段“<colmin=”1”max=”2”width=”11.8”>”的“width(宽度)”属性的值,转换为由css支持的单位,并将结果存储在列类的“csswidth”属性中,或者将其流出作为“width:100px;”,作为css输出流功能的一部分。在电子表格定义内找到的条件格式化条目(其对于传统电子表格是共同的)可以使目标系统对公式执行公式求值,即指定的设计者与单元格的格式化定义相关联。如果在目标系统响应目标系统的访问者请求时公式评估为true(真),则条件格式条目中包含的格式也将转换为css,以使目标页面将具有不同格式的元素。按页面类型改变输出根据说明性实施例,作为将对象的属性序列化为将被发送给访问者的css文本定义的流的一部分,目标系统可以考虑诸如哪种页面类型以及哪种类型的访问者设备特征适用于给定的目标页面的因素。例如,如果页面是“report(报告)”类型,则webifier可以输出具有边界的单元格作为htmltd单元格,如下所示“<td>celltext</td>”,以及一些相关的css,诸如“td{border:1pxsolidblack;}”。但是,如果页面的类型为“editdetails(编辑细节)”,并且单元格落入指定为可以编辑的单元格的范围,则webifier可以替代输出与“<td><inputtype=textvalue=”celltext”/></td>”相同的单元格和根据所需的输入控件的样式的不同的css。其它类型的输出可以更加专业化。例如,代替尝试呈现单元格,日历的页面类型可以呈现为字符串格式,其可以由诸如日历控件(图27,在缩略图内)的第三方小部件接受,其以浏览月份或切换到每周视图或议程视图等功能以交互方式显示,如访问者在客户端上指定的。目标系统还可以将具有名称列和gps坐标列的表格字符串呈现为逗号分隔列表,该列表由第三方映射应用程序小部件接受,该小部件与第三方服务器交互以使用指定的位置呈现地图。数据验证有时,电子表格工具包括数据验证能力。例如,可以在电子表格工具中指定数据验证规则,其中单元格应仅允许整数,仅允许十进制数字,仅允许指定最小和最大范围内的数字,仅允许可能在最小值和最大值内范围的日期或时间,限制允许的最大字符数,或限制所需的最小字符数等。还可以将数据验证设置为仅允许单元格包含在列表中指定的值中的一个值。该列表可以在数据验证定义期间作为值的简单文本列表提供,或者其可以指定对电子表格中的单元格范围的引用,其中工具将从电子表格中获取可接受值的列表,并且其可以导致下拉控件显示在该单元格的电子表格工具中。还可以将数据验证设置为仅允许导致典型电子表格公式的值返回true(真)。例如,对于单元格b1,公式可以指定“=or(b1>=0,and(a1=0,a2<40))”,在这种情况下,b1可以是正数,或者如果单元格a1为零并且a2为小数,则其可以是负数。某些工具允许指定例外以允许空值通过验证。根据说明性实施例,目标系统可以从电子表格和电子表格单元格定义中读取设计者已指定的所有上述数据验证类型和选项。数据验证可以在单元定义xml上,或者数据验证规则可以在别处定义为电子表格定义中的组以及应用规则的单元格列表。目标系统可以从电子表格定义中提取和处理该信息。在输入期间,诸如插入或编辑来自目标系统的值,该值对应于在电子表格中应用了数据验证规则的单元格,然后与这些验证规则相比,目标系统将评估访问者的输入值。评估可以在服务器上完成,或者可以通过将规则传递给客户端javascript来完成,例如,其将评估用户的输入,而不需要发送到服务器的请求。如果数据验证失败,可以向访问者显示标签或弹出警告,以便向他们提供机会更正值。如果数据验证规则涉及从其获取可接受值列表的单元格引用,或者如果数据验证规则涉及取值为true(真)的公式,则系统可以解除引用评估公式所需的其它单元格值或系统获知可接受值列表所需的其它单元格值,这反过来会允许或不允许访问用户的输入。如果电子表格定义指定基于日期的规则,则目标系统可以将控件输出修改为插入或编辑表单,使得用户具有弹出日历控件以从中选择日期,并且可选地键入文本框控件本身将被禁用以防止无效值特定于开头,而不是允许使用警告键入无效值但不提交给服务器。为了超出诸如“a1=0”的验证的电子表格样式,目标系统在页面创建期间具有附加选项,其中设计者可以添加诸如“currentuser(当前用户)”或“currentdate(当前日期)”的验证,其根据从服务器检索的信息自动设置单元格的值。还可能指定地图或gps坐标限制,其中用户可以输入gps坐标或选择地图上的某处以生成坐标,并且它们也将被验证为值的正确gps格式。通过将多边形指定为边界或预定义的多边形(如“europe(欧洲)”)而使最小和最大区域指定给提供边界矩形的目标系统,也可以更深入地验证gps坐标。其它便利数据验证器也是可用的,即使它们与传统的电子表格工具验证器具有相同的效果。例如,允许设计者指定有效值列表(图80)的验证器是可用的,并且验证器导致下拉控件呈现在插入页面上。第二示例是日期验证器,其可以限制选择的日期(图79)。目标系统可以强制执行数据验证规则,而不管访问者输入的方法如何,包括输入方法,诸如输入表格(图93)、csv导入页面(图87)或外部自动化webifierapi调用。瞬态数据使用webifier,所有类型的表格都可能包含瞬态数据,这些数据是工作格表数据的并行版本,长期而言,所有用户之间的并行版本不一致。存在许多类型的瞬态数据,例如,特定于正在传递的单个目标页面的数据、每个访问者浏览器会话的数据、诸如每天的周期性数据、每个访问者但在浏览器会话之间持续的数据、每个角色或用户组但是永久性的数据和/或上述各项的组合(诸如每天每个访问者)。目标系统可能会在访问者浏览器会话开始或结束时要求访问者继续使用或重置瞬态数据,使得瞬态数据适用于一组浏览器会话。对于所有类型的瞬态数据,数据可以存储在目标系统内,访问日志,可供设计者用户查看和修改,以及可供webifier系统的其他组件使用,以像使用非瞬态数据一样使用。设计者可以在各种粒度级别(包括每个应用程序、每个页面、每个表格、每个列或行、每个范围和/或每个单元格)将数据声明为瞬态。可以由设计者使用多种方法来提供该声明,诸如在目标系统管理页面(诸如应用程序或页面配置选项)上呈现的配置选项,自动地(诸如对于autogen表格),通过具有所有瞬态范围的可编辑列表的配置表格,和/或通过设计者选择表格、范围或表格的组成以指示其瞬态类型。声明可以以多种方法存储,包括与目标系统的配置选项一起存储和/或作为表格或表格内容上的元数据存储。例如,银行的抵押贷款计算器应用程序的设计者允许访问者将其财务参数输入到web页面中以查看其抵押贷款还款的图表,可以通过目标系统的应用程序选项将整个应用程序设置为瞬态,并指示瞬态范围为各个浏览器会话。得到的应用程序可以使每次访问都从原始数据开始,并且访问者所做的所有更改都不会影响其他访问者,也不会影响同一访问者的未来访问。另一个示例是“to-dos(待办事项)”页面,其中基础记录表格是瞬态的,瞬态范围为每个用户,使得每个用户在他们可以从多个设备访问的编辑单元格或报告页面类型都具有他们自己的to-dos持续永久列表,而访问同一页面的其他用户将拥有单独列表,而不会在用户之间共享to-dos。另一个示例是这样的应用程序:在所有员工之间共享页面以指示每个员工今天是在办公室还是不在办公室,而在/不在列是瞬态的并且范围到日期,使得员工每天都会通过每天早上将自己设置为“在”向所有其他用户指示他们已经到达,员工忘记在前一天将自己标记为“不在”的情况不会导致错误地指示他在第二天才到达,因为值可能会在两天内重置为空白。另一个示例演示了一种在访问者的目标页面上构建附加导航的技术,其中访问者可以从下拉列表中指定国家,然后显示对该国家特定的数据。设计者创建包含两个子页面的页面容器,一个子页面是报告页面,另一个是带有用作报告页面的导航控件的下拉菜单的编辑页面。编辑页面的模板在国家/地区下拉列表中引用了电子表格单元格a1,每个页面传递范围设置为瞬态;报告页面模板上有一列包含带有条件逻辑的电子表格公式,引用单元格a1并根据a1的值更改公式的结果。例如,如果公式为“=if(a1=’canada’,‘north’,if(a1=’us’,‘south’,‘unknown’)”,则访问者将下拉列表设置为“canada”将会看到报告页面显示“北”,将下拉列表更改为“us”将显示“南”。报告的许多单元格可能会根据下拉列表中的瞬态值而有所不同,以提供有关国家/地区的完整报告,但是页面的许多并行访问者将各自看到与他们自己的导航国家/地区选择相对应的值,并且不会受到其他用户的导航选择或他们自己在先前浏览器会话中的选择的影响。尽管如此,在该示例中,目标系统仍可以存储瞬态导航选择。类似地,可以通过动态计算单元格范围的公式来引用瞬态数据,该公式又可以被页面的源配置用来指定要显示和编辑的范围,使得访问者可以看到和编辑仅影响访问者当前已选择的国家/地区的值,但已编辑的值本身将是非瞬态的。通常,使用电子表格作为主方法来组合瞬态和非瞬态用户界面和/或数据的能力的价值和灵活性大于各部分的总和。在某些实现中,webifier可以通过为每个瞬态范围复制整个应用程序的简化方法来提供瞬态功能。附加地和/或可选地,为了获得更高的性能,webifier可以利用sql数据库来存储每个电子表格单元格的内容,这些内容存储在表的单独记录中。将支持若干类型瞬态数据存储的简化示例数据库记录格式可能包括以下几列:guidid、int行、int列、guiduserscope、guidsessionscope、文本内容、文本格式设置、datetimecreatedtimestamp和datetimelastmodifiedtimestamp。这种数据库记录格式可以支持任何给定单元格的多个并行版本。例如,为了获取任何单元格的主非瞬态版本,例如,sql查询可以在where子句中包括“userscopeisnullandsessionscopeisnull”。如果启用了若干瞬态选项层,则sql查询可以在单个嵌套查询中获得最相关的单元格值(该嵌套查询返回带有sessionscope设置的任何记录,否则,如果没有找到,则返回带有userscope设置的记录),否则,如果没有找到,主非瞬态版本。使用这种sql数据库存储,如果设计者在所讨论的单元格上方插入行,则sql更新查询可以使插入的单元格下方的所有单元格的行递增,并且也可以使用相同单个查询递增单元格的所有瞬态版本。webifier可以使设计者可以访问数据的瞬态版本,以查看,创建报告,在汇总公式中使用,创建允许编辑每个用户的瞬态值的编辑页面和/或以可以使用非瞬态单元格的各种方式使用。当打开任何具有瞬态的表格时,webifier可以允许设计者指定范围的任何实例。例如,如果设计者指示打开具有每个用户范围的表格abc,则webifier可以询问设计者是否应该查看和修改非瞬态版本,或者从提供的列表中选择用户打开用户的abc的瞬态版本。通过使用向设计者提供autogen和/或虚拟表格的方法,webifier还可以允许访问设计者,其中表格具有每个瞬态版本的行和每个单元格地址的列。例如,在瞬态范围是每个用户的baserecordsheet!a1:b2中单元格的瞬态范围的情况下,autogen表格autogentransientsheet上的列标题可以识别带有标签“user”、“cella1”、“cella2”、“cellb1”、“cellb2”的列,然后是空白用户的行以指示非瞬态值,然后是每个具有瞬态值的用户的行。对于像cella1列这样的列中的每个值,值、公式甚至格式设置都可能有所不同。然后,设计者可以创建带有标签“highestvalue”和传统电子表格公式“=max(autogentransientsheet!b3:b1000)”的新表格,将排除非瞬态行,并可以创建关联的报告页面,将显示所有用户为单元格recordsheet!a1设置的最大值。然后,设计者还可以创建编辑单元格页面,具有整个autogentransientsheet的数据源,从而允许访问目标页面的访问者修改其他用户的瞬态值。通过将传统sheet!startcell:endcell语法扩展为transientscope!!!app!!sheet!startcell:endcell的范围引用,webifier还可以允许访问设计者,其中,transientscope可以是范围关键字(诸如“用户”)和范围标识符(诸如用户名或guid)的级联,并且应用可以是简单名称或guid。例如,单元格可以具有公式“=average(group-employees!!!forecast!!projects!b1:b1000)”。目标系统将以通常方式解析语法以评估公式,并且add-on可能会使电子表格工具向设计者显示占位符值,或者add-on可能会对目标系统进行api调用以向电子表格工具提供实际值。可选地,可以为电子表格功能的附加重载版本提供参数,诸如““=averageex(transientscopetext,apptext,sheet!startcell:endcell)”。webifier可以允许从一个范围到另一个范围移植表格数据的瞬态版本。例如,在具有每个用户瞬态范围的页面的情况下,webifier可以向访问者john提供可以与其他访问者jane共享的url链接,使得jane对页面的访问将显示属于john而不是她自己的的瞬态视图。url链接可能对瞬态视图具有有限的访问权限,诸如只读或无法导航到显示其他范围为john的瞬态数据的其他页面。webifier还可以为jane提供选项,以采用john的瞬态数据,并在jane自己的瞬态范围内进行修改。webifier还可允许为瞬态范围添加书签,或重新使用url链接,使得访问者能够访问维护并有选择地恢复若干瞬态范围之一。即使设计者没有指定任何瞬态,webifier仍可以为访问者提供进入或退出沙箱模式的选项以及用于选择瞬态范围的选项。结果将类似于设计者指定瞬态。如果访问者指示他们希望沙箱化单个值、值的页面或整个应用程序,则目标系统可以创建关联数据的瞬态版本,并允许访问者编辑数据而不会影响数据的非瞬态版本。如果访问者随后指示他们希望退出沙箱模式,则可能会丢弃瞬态数据,并且访问者的视图将返回到正常状态,其中进一步编辑会影响非瞬态数据,或者可以为访问者给出对非瞬态数据应用其沙箱更改的选项,有效地为访问者提供更改的过渡区域。webifier还可以向设计者提供类似的沙箱模式,以作为更改的过渡区域。当对单元格、区域和/或其他方面的引用未明确指定瞬态或非瞬态时,目标系统可能会自动尝试使用具有与当前请求上下文的范围相匹配的窄范围的瞬态版本,诸如访问者浏览器会话,并且在没有任何窄范围的情况下,可能会尝试使用较宽范围的过渡版本,诸如访问者,依此类推,直到没有任何适用的瞬态版本的情况下,可能会退回到非瞬态版本。并行和公式引擎许多访问者可以登录到目标系统并且并行请求只读页面。对于涉及编辑的请求,根据说明性实施例,服务器可以将所有传入请求或修改记录的请求的核心代码序列化到队列中,其在考虑到现今的处理能力的情况下有效地看起来是并行的。适用于许多不同的页面类型,目标系统可以将单元格引用和源自电子表格定义的公式解析为简单的文本和数值,以显示给用户或递归地用于电子表格定义中的其它公式中或目标系统的其它区域内。可以以多种方式完成公式的解析。可以重复使用与电子表格工具相同的核心处理引擎或库,或者可以构建定制解析和公式处理引擎以嵌入到目标系统中。在任何情况下,引擎可以具有一个或多个回调,这些回调基于行和列索引值来解析单元格引用,或者其可以传递电子表格定义或访问存储单元格定义的数据库。传入的电子表格定义可能是简化的或以其它方式修改的重新生成的定义,其与传入的原始电子表格定义不同,或者可以传入原始电子表格定义。在编辑之间发生任何冲突的情况下,系统可以基于时间(例如,最后一个人获胜)或任何其它期望的启发法来选择或指定接受的编辑。工作流和过滤结果根据说明性实施例,webifier可以允许使用报告页面类型和其它页面类型的变体来定义工作流的某些表单。在行记录表格上,设计者可以添加列以影响每个行的访问者权限,并且因此每个记录的基础,其中特定列的单元格公式的结果导致目标服务器在输出结果中包含该行或不包含。例如,设想员工时间表电子表格,其中列a包含员工姓名,并且列b包含小时数,以及报告页面类型,其包含该表的源区域。对于表示记录的每个行,添加的列c可以具有类似于“=isloggedinuser(a1)”的公式,其中a1将针对第二行改变为a2,依此类推。尽管在设计时不能够解析以向设计者显示值,但目标系统会在访问者访问时间表列表报告页面时评估公式列。在迭代期间,如果在该行的列a中指定的员工不是访问者,则目标系统将跳过访问者的行的呈现。如果行匹配列a中的访问者,将继续呈现行。最终结果是,员工可以基于电子表格定义访问时间表web页面,其将仅显示与该员工相关的时间记录的行(图20)。同样,如果表格具有指定主管的列,则主管时间表概述页面可能仅列出该主管权限内的时间记录。如果页面类型是编辑页面,则公式的相同评估可以跳过行,从而不仅隐藏信息,并且防止提供输入控制以防止用户编辑某些行同时允许编辑其它行。将这些组件放在一起的意外效果是允许用户定义工作流的能力,诸如员工在时间表页面上只看到他们自己的时间表,并且能够为一个或多个记录将“readytosubmit(准备提交)”列改变为true(真),让主管看到这些记录显示在具有基于“readytosubmit(准备提交)”列限制行查看的公式的页面上,让主管能够仅为他们监督的员工改变“approved(已批准)”值,以及最后让经理仅看到批准的记录和聚合的总批准时间。简而言之,本文描述的方面允许创建先前需要有经验的软件开发者的帮助的定制和复杂工作流。按钮为了方便访问者,根据说明性实施例,可以在单元格上指定元数据,例如使用电子表格工具的注释功能的单元格注释,其包括目标系统视为将值的文本编辑改变为按钮控件的信号的标签。例如,如果设计者在每个数据记录上需要“approved(已批准)”值,则设计者可能更优选访问者能够通过单击按钮以将单元格的值从false(假)改变为true(真)来指示对记录的批准,而不是向访问者显示文本框以键入字符串“true(真)”,并且其中访问者可以改变以将“true(真)”返回到“false(假)”。这导致更容易使用的系统以及在其中对值的改变是单向的情况下提供帮助(例如,从false(假)到true(真),但是设计者不认为记录不断地变回false(假)是有效的)。对于插入页面,即使目标系统的默认提交表单按钮可以具有由具有webifier定义的单元格或webifier理解的公式函数定义的外观和位置,诸如放置在电子表格模板中的某处的“=submitbutton(done,green)”。如果电子表格工具支持浮动按钮,则拖放浮动控件也可以用于定位浮动按钮,目标系统将使用该浮动按钮作为目标页面上的提交按钮的位置的基础。以这种方式,目标系统的实际“hard-coded(硬编码)”接口(即电子表格未定义的接口)在目标页面上是最小化的。安全+间接(级联)过滤防止输入可以涉及禁用或隐藏页面的控件,其中设计者已经指定源是记录表格,或者让服务器根本不会向访问者发送控件。为了安全起见,根据说明性实施例,服务器还可以基于相同的逻辑确认是否允许使用httppost请求发布的提交输入,无论控件是否呈现给用户,因为访问者可能是恶意终端而不是正常的浏览器。使用其它模板电子表格的其它目标页面(其用于填充各种行记录)也使用相同的逻辑评估容差。例如,如果目标系统访问者正在访问带有发票明细模板的模板源的发票明细报告页面,并且在发票记录列表表格上的行2上正填充有发票205,则目标系统可以检查列的发票记录表格,该列指定行2是否具有限制对行2的访问的公式。如果是,则目标系统还将限制对发票205的发票明细报告页面的访问。在嵌套模板的情况下或在单个模板和其它此类复杂场景中使用多个源表格的情况下,目标页面的一部分可能被填充或呈现,并且不是部分,但是基础的级联方法仍然存在。单个公式而不是整个列根据说明性实施例,添加具有每个记录公式的列的替代方案是将单独的单个公式输入到表格上的指定或引用位置或表格外部并存储在目标系统内。在本替代方案中,目标系统将然后遍历每个行并相对于正在迭代的当前行或记录应用公式。webifier的其它领域可以使用替代公式的相同对中。例如,在与每行权限有关的较早示例中,该文档给出了列c的示例,其具有诸如c1内的“=isloggedinuser(a1)”的公式,诸如行2的“=isloggedinuser(a2)”的公式,依此类推。然后,设计者可以对所有记录复制公式,其中登录用户参数引用每个相应行的列a。这会起作用,但可能很麻烦。替代方案的示例是具有“=isloggedinuser(a)”或不同的语法,而不是通常的电子表格公式语法,其在创建引用源记录的页面期间作为选项相对于表格单独定义。然后,目标系统可以理解“a”参数(其通常指列)等同于“表示当前关注记录的行的列a中的值”。换句话说,它可以理解该公式等同于具有上面的列c。作为另一个示例替代方案,“=isloggedinuser(a)”公式可以放置在与行记录相同的表格上的某处的单个单元格中,可能在单元格“z1”中行记录信息的最右侧,以及字段可以在页面定义步骤期间存在,该步骤指定哪个单个单元格表示每行权限的公式,并且在此种示例中可以设置为“z1”。叠加表格有时,单个记录表格是许多目标系统页面的基础,该页面具有不同的许可和不同的预期访问者。在此种情况下,根据说明性实施例,可以使用多个列来包含不同的公式以影响相应目标页面的许可。作为替代方案,目标系统可以将叠加表格添加到电子表格定义中。叠加表格最初可能是具有所有相同值的行记录表格的副本。它可能由目标系统标记为叠加表格,其中元数据在表格的电子表格定义中,因为表格旨在基于行记录表格并旨在进行页面特定的修改。然后,设计者可以将列c添加到叠加表格,目标系统可以以与上面大致相同的方式使用该列c,但是它可以评估该公式,就好像它替代地被添加到行记录表格,这使得它处理最新的行记录列表,以防在创建叠加表格后列表发生改变。不同目标页面的不同叠加表格可能具有不同的列c公式。每当改变行记录表格时可以更新叠加表格,以使基本内容保持同步,但仅保留预期的新列c作为示例差异。叠加表格可以不对单元格位置或插入的任何新单元格进行改变,但是仅包括对单元格的视觉格式改变。例如,叠加表格可以改变字体颜色、字体大小,或也使用电子表格工具的传统“hidecolumns(隐藏列)”功能来隐藏目标页面中的相应内容。为了避免与常规表格混淆,可以以各种方式向用户指示叠加表格作为覆盖。例如,电子表格背景可以在整个表格中设置为指定的颜色,例如浅蓝色(图39)。如果电子表格工具支持从表格列表中隐藏表格,或者另外模板表格可以与其它类型的表格分开列出,则有时模板或覆盖表格可以是“hiddensheets(隐藏表格)”。当设计者正在查看特定页面时,在完成查看之前,这些附加表格将自动取消隐藏。传统的电子表格表根据说明性实施例,比起目标系统在页面创建期间使字段指示列c指定基于行的许可,替代方案是让电子表格定义暗示这一点。电子表格可能有传统的“电子表格表(spreadsheettables)”,其通常包含单元格区域,并且可以使电子表格工具显色,在标题行上具有过滤和排序选项,以及当在传统的电子表格工具中查看时管理表格中行的显示的其它功能(图74)。webifier可以在用于页面的源行记录表格的电子表格定义中或在用于页面的叠加表格中检查是否存在传统的电子表格表,如果该表存在,则webifier可以查看用于过滤、排序等的该表的持久化状态。如果设计者按列a对表格的单元格进行排序,则目标系统也将按列a对输出进行排序。对于基于列c中的公式选择基于行的过滤许可的较早示例,设计者可以将表设置为对列“c=true(真)”进行过滤,并且目标系统将使用相同的逻辑过滤结果输出。以这种方式,不需要页面的创建器,其指示列c具有需要评估为true(真)以查看该行的基于行的许可。适用于本文所述的任何情况或方法,其中许可是过滤记录,其包括上面的传统表方法作为示例,目标服务器可以可选地呈现报告页面和其它页面类型,这些页面类型依赖于具有电子表格公式中的聚合函数的行记录表格而排除不允许的记录。使用此方法,每个记录的许可也将影响例如具有聚合图表的报告页面。设计者还可以在每个页的基础上禁用此功能,以使聚合图表不受基础的行记录许可的影响,其有效地为访问者提供聚合信息,但继续保留细化的每个记录信息。提取更新的电子表格定义根据说明性实施例,在目标系统已经使用设计者的电子表格定义来为目标系统的访问者提供只读和/或可输入表单和内容之后,并且在目标系统的访问者可能已经修改或输入记录之后,目标系统可以以与电子表格工具完全兼容的电子表格格式为设计者提供所有数据和模板的更新、统一或多部分表示。为了方便起见,这可以称为提取,如可以在步骤215(图2)中执行。提取可以作为文件下载或者通过更新电子表格工具提供,其使用从目标系统接收信息并更新电子表格工具中的表格的目标系统附加组件或插件(图54,“downloaddata(下载数据)”按钮)。在大多数情况下,设计者随后会收到电子表格,该电子表格不仅具有更新的记录,而且还具有基于记录表格显示实际数据的报告,所有这些都不需要目标系统的进一步参与。可以类似于电子表格定义首先如何被放入目标系统中来执行提取,但是反过来执行。在一个示例中,如果目标系统持久化电子表格定义并按请求进行所有修改,则目标系统仅需要执行与设计者原始上传文件相反的操作;也就是说,将xlsx数据提供作为文件以用于由浏览器进行下载。在另一个示例中,如果目标系统在解压缩xlsx数据并将每个包含的解压缩文件存储在数据库中之后持久化电子表格定义,则系统可以通过为每个记录创建解压缩文件、将所有数据压缩为xlsx文件、然后将该文件作为下载提供给设计者来反转这些步骤。作为第三示例,如果数据库表在每个单元格存储一个记录但不改变存储在数据库中的单元格内容的模式,则反过来可以包括迭代所有数据库条目并将单元格内容序列化为xml,并重新引入存储在其它数据库表中以生成解压缩的表格文件的每个表格定义,然后继续在其它示例中提到的步骤。作为第四示例,如果源电子表格定义是通过获取定义的web服务api调用提供的,则反过来可以包括递送新电子表格定义以替换另一个定义的api调用。在某些情况下,设计者或其他用户可以执行提取,其中设计者获得一个或多个电子表格文件或一个或多个电子表格表,其具有由一个或多个记录填充的一个或多个表格模板。例如,这种提取可能导致具有100个表格的电子表格,并且其中每个表格是以表格模板中的一个表格模板的形式显示的发票。为设计者打包提取的步骤和示例可能是类似的,其中不同之处在于目标系统将需要按照填充模板表格的步骤,就像在生成报告页面的早期阶段中一样,但然后重定向上面提供的提取步骤的结果,而不是将单元格转换为其它格式,并且然后与填充模板表单的其它记录进行迭代。经由典型的推送通知或轮询方法,附加组件(插件)可以提供实时重新加载并在目标系统使它们可用时向设计者更新。通常,这意味着提取步骤限于在由于访问者而改变的任何表格或单元格上执行,并且附加组件仅更新这些表格或单元格,同时保留其余的不动。附加组件可以采用混合方法,其对更新进行实时检查,但下载并保存任何新的电子表格定义作为硬盘驱动器上的本地文件,并然后触发电子表格工具打开它,所有这些都是用户参与最少或没有用户参与。继续编辑电子表格的定义根据说明性实施例,无论是经由附加组件还是以其它方式提取为文件或提取成电子表格工具,设计者现在能够使用目标系统像他们之前那样对模板表格和/或记录表格进行进一步修改。实际上,设计者可能已选择将空的或接几乎空的电子表格定义放入目标系统,然后仅在提取电子表格后才开始构建电子表格,以利用在设计时相关的任何目标系统功能。作为简单的示例,由于目标系统在应用程序列表中显示这个新的web应用程序,使其他设计者意识到协调目的,即该用户正在设计指示特定的新web应用程序的特定的新的电子表格。在设计者已经指示访问者正在编辑电子表格的时间或者在附加组件通知目标系统服务器设计者正在编辑情况下,目标系统可以从访问者具有锁定或阻止所有访问的选项,仅允许读访问,或者仅允许读取和插入访问。通过确定访问者的页面是否需要最初来自与设计者正在编辑的表格相同的文件的表格,或者可能通过确定其是来自相同的文件或者是否存在任何直接或递归寻求从访问者的表格到正在编辑的设计者表格的间接引用,此种阻止通常仅限于与设计者当前正在编辑的内容相关的表格。这防止了访问者的改变与设计者的改变之间发生的意外冲突,或者防止访问者看到设计者正在进行的和不完整的改变集导出的页面。帮助避免这些情况的另一种技术是指示他们将要对电子表格定义进行改变,再次手动指定或经由附加组件自动检测它的设计者使得目标系统将其存储的表示复制到暂存区域,其中设计者的改变仅影响暂存区域,直到设计者指示他们已完成改变组并准备好改变生效,此时将暂存区域复制回实时web应用程序。在此期间,实时web应用程序被完全阻止,设置为只读或允许继续,但设计者在暂存区域上操作时所做的改变将作为组合并到实时应用程序,同时通过相同的方法保留实时应用程序,即可以将个别设计者编辑与实时web应用程序的记录合并,或者可以上传新的电子表格定义并将其与实时web应用程序的记录合并。web应用程序的来自访问者的最新变化的合并,以及设计者的变化的合并可以采用许多流行和常用的方法来合并数据,因为当双方都处于电子表格定义表单时可以这样做。市售的库和工具可以用于标识电子表格之间的差异,并允许迭代这些差异以接受或拒绝每个改变,以及比较3个电子表格的库和工具:原始的、改变的版本a和改变的版本b。它们迭代并处理不冲突的改变,并完全拒绝冲突或向用户提供冲突信息以决定关于哪个版本获胜。一种合并方法是以最有利于webifier软件的预期使用的方式组合多种其它技术。例如,可以允许设计者开始对模板表格进行改变,并且目标系统不阻止访问者对记录表格的改变。目标系统具有改变模板表格的访问者是很少见的,尽管当然是可能的,因为目标系统尤其可以在设计者选择要报告的工作表时一般地处理所有表格。尽管如此,通过迭代设计者如何在页面创建期间引用该表单,目标系统可以默认仅阻止对模板表格的改变,可以知道其都是模板表单,无论其是否作为模板源表格引用。如果设计者想要预览其建议的改变的效果,则目标系统可以自动设置暂存区域。如果设计者被检测为修改记录表格,则webifier系统可以提示设计者阻止web应用程序的其它相关部分来自并发输入。在这种方法中,可以避免向设计者提供冲突解决提示,并且设计者仍然能够经由模板表格改变来更新目标系统的用户界面,并使目标系统不丢弃其包含的任何先前记录或新记录。在插入和一些其它类型的编辑的情况下,甚至可以在目标系统和设计者的工具上并行对记录进行插入类型的编辑,而不提示解决冲突。简单的方法是保留原始电子表格定义的副本,该副本在其会话开始时或在他们表示有意进行设计工作之后发送给设计者,并在下次上传时将设计者的改变与原始的进行比较以确定哪些记录是新的并且使得目标系统添加记录中的每个记录,其具有短锁定以允许目标页面继续操作和插入,同时合并来自设计者的这些新插入的记录。以类似的方式,可以保存预设计原件并与设计者的下一个上传进行比较以确定哪些记录丢失,并因此打算删除、修改和打算更新。另外,与预设计原件相比较相同的方法可以揭示从记录表格中添加或删除列,以及相应的模板表格改变以匹配并指示设计者对web应用程序结构的改变。在所有情况下,目标系统上的旧记录以及访问者新添加的或访问者修改的记录都保持不变,并且最终结果是设计者和访问者对记录的改变之间的合理合并,并同时能够例如在一个步骤中更新目标系统发送给访问者的接口以及记录的结构。允许继续编辑电子表格定义的挑战在于设计者可以对列或行进行改变,使得对目标系统存储的范围的任何引用可能变得过时。对此的一个解决方案是使用附加组件监视对所引用的电子表格单元格的位置、行和列索引的改变,并相应地在每个事件或每个事件组基础上相应地更新目标系统。例如,如果目标系统的范围引用为“a5:a10”并且在顶部处插入行,那么套入到相应事件侦听器的webifier附加组件会通知目标系统将行1下方的任何范围向下移动,例如在这种情况下,到“a6:a11”。为了允许设计者能够离线并且在没有安装附加组件的计算机上(基本上是仅具有未修改的第三方电子表格工具和电子表格定义的副本的计算机)(称为“断开”设计)修改电子表格定义的进一步灵活性,加深了该挑战,并且上述解决方案可能还不够。在这种情况下,目标系统可以背负电子表格的传统命名范围特征的补偿,因为电子表格工具基于设计者改变更新命名范围,并且通过webifier系统可以观察到对命名范围的此类改变。该方法允许在断开时修改影响目标系统的电子表格定义的这种期望的灵活性。值得注意的是,上传记录和上传界面模板不需要单独的步骤,它们可以由设计者或自动地在一个步骤中发生,并且其中一个电子表格定义被提供给目标系统。当然,如果需要,也可以使用单独的步骤。可以从设计者或访问者通知设计者,诸如通过“serverchangesasof<date>(截至<日期>的服务器改变)”弹出,即目标系统已经接收到附加的改变(图53)。可以使用公共推送通知或目标系统的轮询来实现此目的。这允许设计者在设计者完成编辑后减少并发编辑冲突。命名范围根据说明性实施例,当通过附加组件完成时,webifier系统可以从电子表格(例如,经由cominterop库,如下所述)或从目标系统服务器检索命名范围,并且使用javascript将名称传递给附加组件的基于web的用户界面。webifier可以创建新的命名范围,以便在创建或编辑目标页面时或者在任何其它字段或目标系统需要对电子表格单元格的引用和目标系统需要访问该引用才能处理访问者请求的情况下捕获数据源的当前选定的单元格。例如,这些范围的名称可以是“webifiercustomrange(webifier定制范围)”并且附加有从0到2,147,483,647的随机生成的数字。如果已存在具有该名称的范围,则可能生成新的随机数,直到创建的名称未附加到现有范围。或者,可以使用增量数字。如果已存在所选单元格的定制范围,则系统可以选择使用现有名称而不是创建另一个名称。在电子表格工具中执行的操作(诸如插入行或插入列)会根据正常的电子表格工具使用扩展命名范围。如果经由具有命名范围的插入或csv导入页面插入记录以作为其源,则它将扩展该范围以包括插入的记录。如果从电子表格定义中删除任何webifierweb页面引用的命名范围,则在上传工作表时,系统将标记受影响的页面,这些页面具有无效的源并且在编辑源或恢复已删除的命名范围之前,它们将无法访问。命名范围可以用于定义插入、编辑单元格、编辑记录、csv导入、报告、web页面、日历和明细报告页面的边界。命名范围还可以用于定义插入、编辑单元和编辑记录页面的标题范围,以及设置编辑单元格和编辑记录页面的可编辑范围(图81)。使用编辑记录页面,如果删除范围中的所有单元格,则可以自动删除命名范围。作为示例,具有自动生成的表单界面的插入页面需要通常引用行记录表格的源范围。如果设计者在断开时向行记录表格添加了列,但稍后上传了更新的定义,则目标系统将能够看到包含新插入列的更新的命名范围。在此示例中,当插入页面将表单发送给访问者时,该页面现在将生成额外的标签和html输入控件,并且在此情况下,访问者将在没有设计者需要的进一步操作的情况下开始生成新记录,该记录包含信息的新列。按单元格跟踪根据说明性实施例,如果要跟踪的单元的量非常高,则命名范围可以与具有附加属性、包含由目标系统生成的唯一单元格id、插入到所提取的电子表格定义的每个单元格中组合或完全由其替换。尽管电子表格工具不了解属性用途,但即使在电子表格工具中修改或移动或复制单元格时,许多电子表格工具也会将此属性保留为元数据。这提供了命名范围的许多相同优点,但在电子表格工具的用户界面中设计者不太可能看到它们。然后,目标系统以与其它单元格属性非常相同的方式提取唯一id,以获得关于用户在断开时所做的改变内容的知识。然后,可以使用该知识将目标系统上的引用更新到这些单元格,或者在某些情况下,那些唯一的单元格id可能足以作为目标系统用于引用单元格的方法而不是使用传统行和列索引。偶数范围可以指定为uid:uid,其表示范围的左上角和右下角。以类似的方式,其它元数据可以存储在电子表格定义的其它部分中,这些部分对设计者是隐藏的。例如,指向需要表格的目标页面的链接可以存储在表格的xml定义中的属性中。如果电子表格工具支持此方案,其中存在像命名范围一样自动获取更新的范围,但是其中范围对用户不可见,则该功能也可以替换命名范围。用于目标系统的配置表格根据说明性实施例,命名范围的替代方法(称为“配置表格”)也可以代替命名范围来替换。该方法可以包括名为“destinationsystemranges(目标系统范围)”的附加表格,如果电子表格工具支持隐藏表格,则该表格可能隐藏,其中表格具有名称和范围2个列。然后,目标系统将在上传期间或每个访问者请求时迭代该表格,并通过第一列中的值找到目标系统正在寻求解析的范围。例如,“page1_sourcerange(页1_源范围)”可以是名称中的一个名称。然后,目标系统可以在第二列中获得单元格的值或公式,并且以与命名范围定义非常相同的方式使用它。这种方法的优点是该值实际上可以是传统的电子表格公式,并因此即使范围定义也可能受到电子表格定义的其它元素的影响。这提供了意想不到的功率量和灵活性。例如,可以指定一个公式,其中如果发票总额>$5000,那么明细页面应在其页面源配置中包含额外的5个行,页面源配置可能具有附加的精细打印,该打印对于向访问者仅显示该发票是需要的。同时,电子表格工具将自动使范围以与命名范围大致相同的方式保持同步。这允许设计者尤其有效地修改定制报告的配置,而需要最少的或不需要附加的努力或训练。目标系统用于服务目标页面所需的数据和元数据信息(诸如页面标题)可以存储在与电子表格定义分开的数据库中。可以以与配置表格大致相同的方式替换命名范围,特定于目标系统的所有数据都可以包含在电子表格定义中,并且重要的是,其可由设计者在熟悉的电子表格界面和方法中进行编辑。另一个示例是定义在配置表格中的页面标题,它将允许页面标题是设计者选择的任何公式的结果。如果单元格>=$0,则“profit/lossreport(损益报告)”等页面标题可以是“profitreport(利润报告)”,如果单元格<=$0,则标题将是“lossreport(损失报告)”。又一个示例是进入通知系统的条目。诸如“=if(othersheet!a1>10,“thomas”,”patrick”)的公式可以根据记录表格中的值改变通知的目标。它还可以基于设计者指定的公式来改变递送时间或任何其它通知属性,并且以某种循环的方式利用本发明的基本概念以便由设计者自己配置。某些电子表格工具能够接受单元格元数据,其中单元格在工具中访问时是只读的。在此种情况下,配置表格可能会将某些单元格标记为只读,以减少设计者对配置表格进行意外或不兼容的修改的可能性。例如,除了上面描述的destinationsystemranges表格上的第二列之外,配置表格可以使所有单元格都是只读的。最终,始终如一地实现该方法,目标系统的web应用程序的整个定义可以在断开时是可移动的并且是可配置的。同时,web应用程序的整个定义可能是公式驱动的,根据定义的其它部分任意可定义的,或者以其它方式与记录表格、模板表格本身、当前日期等的函数结果之间具有无限且不可预测的连接。外部补充数据:文件根据说明性实施例,可以使用webifierinsertfile函数将文件上传到目标系统(图7)。当在为插入或编辑记录页面构建表单时遇到包含webifierinsertfile列的字段时,可能会为该字段显示文件上传控件(图62)。同样,在编辑单元格页面上编辑包含webifierinsertfile函数的单元格时,设计者可以选择编辑公式或上传新文件。当在带有附加组件的电子表格工具中遇到webifierinsertfile时,它可以显示密钥,该密钥可以用于使用webifierfileattributes函数检索有关该文件的信息(图64)。如果在报告或编辑单元格页面中遇到webifierinsertfile,则该文件可以显示在目标页面上。访问者可以根据文件类型以不同的方式查看这些上传的文件。如果文件是图像,则可以在单元格内显示(图63)。如果文件是音频文件,则访问者可以使用html5音频播放器收听该文件。如果文件是视频,则访问者可以使用html5视频播放器观看该文件。如果该文件是任何其它类型的文件,则显示链接,访问者可以按照该链接下载该文件(图61)。来自目标系统的管理页面的设计者可能能够查看和排序系统上的文件,并获得诸如文件密钥、大小以及每个文件属于哪个web应用程序的明细。也可以通过web应用程序查看文件,以便轻松查看与web应用程序相关联的文件。许可也可以应用于文件,因此只有特定用户或用户组可以访问该文件。目标系统可以基于可访问引用公式中的该组文件的任何单元格的访问者来获得这些许可,或者目标系统可以具有列出文件组的单独配置界面,允许修改其共享设置,并为新文件集指定了默认的许可集。上传的文件可以存储在实际文件目录中,或者数据库虚拟文件列表,与其中文件上传到的web应用程序成形并相关联,位于以webifier提供或生成的密钥之后命名的目录中。存储的文件类型可以由文件的mime内容类型确定并记录以显示文件。多个文件可以存储在同一个密钥下,并且可以通过webifier文件函数的索引参数访问。webifierinsertfile函数可以允许由值或公式组成的零个、一个或两个参数(图7)。第一参数是可选的字符串参数,该参数是稍后可以用于检索上传文件的密钥。如果未指定密钥,则可以生成全局唯一标识符(guid或guid)并将其用作密钥。如果指定了密钥,则用户还可以包括可选的整数参数,该参数可以是待显示的该密钥下的文件的索引。如果未指定索引,或索引大于文件数量,则该函数可以在显示时显示最近上传的文件。当在插入页面中上传文件时,可以使用webifierinsertfile函数自动填充新插入的单元格。公式中的第一参数可以是与前一个单元格相同的密钥。如果先前的单元格密钥参数是单元格引用,则其可以自动递增以引用下面的单元格。第二参数可以是新的文件数,使得当在网站上查看单元格时,它可以显示新上传的文件。webifierfileattribiutes函数可以允许由值或公式组成的一个、两个或三个参数(图5)。第一参数是文件的字符串键;第二个参数(其可以是可选的(未示出))是存储在密钥下的文件的索引以用于获取最后参数的属性;最后参数(也是可选的)是要检索的属性的名称或编号。“name(名称)”或0表示文件名称,“size(大小)”或1表示文件大小(kb),“dateuploaded(上传日期)”或2表示文件上传的日期,以及“link(链接)”或3表示在网站上查看文件的url。如果未指定索引,或索引大于文件数量,则该函数可以获取最近上传的文件的属性。如果未指定属性,则该函数可能默认显示文件的名称。外部补充文件系统的所有上述变体和特征可以应用每个单元格变化的单个文件或每个单元格变体的多个文件和文件夹。外部补充数据:签名可以使用与上述基于文件的外部补充数据用于上传图像的访问者基本相同的方法将签名上传到目标系统。然而,在签名是外部数据的形式的情况下,文件上传对话框和控件可以用允许用户输入签名的控件替换。例如,记录表格可以具有列,其中每个行记录的公式类似于“=webifierinsertsignature(a2,’thumbnail’)”,其中列“a”具有可以用作唯一标识符的数据,诸如员工姓名,以及a2中的“2”改变至适当的行,并且其中“presence(存在)”表示单元格显示签名的缩略图(如果可用),或者还如果没有可用的签名,则显示文本“n/a”。在设计时,附加组件可以为每个记录获取此类缩略图,以便在单元格中显示它们。对于将源设置为整个记录表格的报告页面的访问者,签名缩略图可以呈现在目标页面上显示的每个记录行旁边。缩略图可以是可点击的,以打开捕获的签名的大部分弹出视图以及诸如捕获签名的日期和时间的元数据。在插入或编辑目标页面上,大弹出视图也可能具有大的画布区域,其中用户的鼠标移动、数字平板电脑上的无墨笔或触摸屏上的手指将导致画布区域处理随着笔的移动并在画布上绘制相应的线条。存在用于捕获运动的市售模块,诸如通过此种画布签到图像文件中,通常使用javascript代码来执行此操作,并提供具有要在表单提交上上传到服务器的图像数据的html输入表单。继续该示例,目标系统可以将表示签名的图像文件存储在数据库中以在后续请求中检索,以查看报告页面上的记录的签名数据。作为视觉签名的替代方案,表示数字签名的数据可以通过客户端javascript从pgp签名的签名的众多第三方发行者中的一个以及使用类似手写字体的文本摘要或令牌人工签名中获得,其中可以在签名图像的位置上显示此种数字签名。可能要求访问者使用用于此种硬件的市售集成点输入认证信息,诸如用户名和密码对或在移动设备的拇指扫描仪上的指纹,以便第三方发行者发布数字签名。外部补充数据:聊天根据说明性实施例,聊天对象特征允许嵌入聊天讨论流或与电子表格的一个或多个单元格相关联。聊天对象允许访问者向其他访问者然后可以查看的单元格添加消息,以及查看其他人或他们自己在单元格上留下的消息(图58)。聊天对象表示消息对象列表,其中每个消息对象通常至少由三个部分组成:消息文本,指示消息何时提交的时间戳以及提交消息的用户的用户名。每个聊天对象还可以具有唯一标识符,即与其它聊天对象不同的标识符(例如,图59,“6ea6cc…”)。标识符可以是用户分配的或系统分配的。webifier可以使用聊天对象的标识符来引用聊天对象并将其与其它聊天对象区分开。可以通过输入名为webifierinsertchat的插入聊天公式函数来创建聊天对象,该函数是由webifier系统定义的定制公式函数(图6)。要将此函数输入单元格,可能要求用户具有为该单元格设置公式的许可。这可以通过各种方式完成,包括通过允许它的webifierapi调用,或通过安装了webifier附加组件的电子表格工具。为了在单元格中创建聊天对象,设计者可以将单元格的公式设置为不具有参数的插入聊天函数(即’=webifierinsertchat()’),设置为具有表示作为唯一参数(例如,‘=webifierinsertchat(”dc40fca2-d72a-4afd-80e4-76782b47d960”)’)的全局唯一标识符(guid)的标准连字符分隔字符串的插入聊天函数,或者设置为被评估为唯一标识符的公式,无论所标识的是否是guid或字符串,诸如“pleasantsolutions(合适的解决方案)”,其将表示与用于该公司的记录相关的聊天流。不同工作表格或同一表格上的多个单元格可以将相同的参数传递给webifierinsertchat,从而允许页面中的多个目标页面或位置引用相同的共享聊天流。当用户为单元格设置插入聊天公式并将其保存到目标系统时(例如,如果他们使用电子表格工具和附加组件,通过将电子表格定义改变上传到目标系统),则webifier执行几个步骤。首先,它可以用包含单个guid参数的版本替换插入聊天公式的无参数版本的每个实例。它可以使用版本4(ietfrfc4122)算法生成guid参数的每个实例,这意味着生成的参数实际上与任何其它单元格中的插入聊天函数的guid参数不同。然后,它将更新的电子表格定义上传到目标系统。访问者可以在页面上使用聊天对象,该页面允许访问者查看其中嵌入聊天对象的单元格(图57)。例如,如果聊天对象嵌入在电子表格的特定表格上的单元格中,并且访问者可以访问其源是该表格的报告页面,则访问者可以通过目标页面与该聊天流交互。当目标系统呈现包含其公式为插入聊天函数的单元格的页面时,它解析该函数的guid参数并检查其数据库以查看是否存在其唯一标识符与解析的guid匹配的聊天对象。如果没有匹配,它将创建新的聊天对象,聊天对象的标识符是已解析的guid并且聊天对象的消息对象列表为空,将其保存到其数据库并使用此新聊天对象作为单元格的聊天对象。如果匹配,则使用匹配的聊天对象作为单元格的聊天流。在任何一种情况下,目标系统都会在单元格内显示聊天气泡图标和单词“chat(聊天)”。如果访问者单击该图标,它将在该页面上显示模式窗口,该页面按时间顺序显示该聊天对象的过去消息对象(如果有的话)。显示每个过去消息对象,其包含发布的完整日期和时间,然后是发布它的用户的用户名,然后是消息文本。在过去消息列表的下方,它显示了其中访问者可以写入新消息的文本框和提交新消息的按钮。如果访问者在聊天对象的过去消息列表下方的文本框中写入新消息(图58)并提交此消息,则目标系统创建新消息对象,将其时间戳设置为系统时间,将其用户名设置到访问者的用户名,以及将其消息文本设置为文本框中提交的文本。然后,它将聊天对象与消息对象相关联,并将消息对象和关联信息保存在数据库中。最后,它将新消息对象返回给客户端,客户端可以使用javascript以在过去消息对象列表下方但在模态窗口中的文本框上方显示新消息对象,以及清除文本框,所有这些都不刷新页面。访问者可以在文本框中写入更多消息,并且提交这些更多消息可以再次触发相同的步骤。如果访问者不希望再输入任何消息,他们可以点击模态窗口外的任何地方,这可以关闭模态窗口并显示其后面的页面,其中他们通过该页面访问聊天对象。由于插入聊天公式的guid参数被用作聊天对象的唯一标识符,如果几个不同单元格的插入聊天公式具有相同的guid参数,则添加到嵌入在一个单元格中的聊天对象的消息对象可以显示在嵌入在其它单元格中的聊天对象的消息对象列表中,因为这些单元格的嵌入式聊天对象都是相同的聊天对象。可能存在几种外部补充数据系统。上述两者仅仅是该方法的示例,并且针对上述示例中的一个示例描述的特征中的许多特征适用于另一个示例。根据另一个方面,还可以使用或替代地使用视频聊天模块。可以通过输入名为webifiervideochat的插入视频聊天公式函数来创建视频聊天对象,该函数是由webifier系统定义的定制公式函数。要将此函数输入单元格,可能要求用户具有为该单元格设置公式的许可。这可以通过各种方式完成,包括通过允许它的webifierapi调用,或通过安装了webifier附加组件的电子表格工具。为了在单元格中创建视频聊天对象,设计者可以将单元格的公式设置为不具有参数的插入视频聊天函数(例如,’=webifiervideochat()’),设置为具有表示唯一参数(例如,’=webifiervideochat(”gc40fca2-d73a-4afd-80e4-76782b47d960”)’)的全局唯一标识符(guid)的标准连字符分隔字符串的插入视频聊天函数,或者设置为被评估为唯一标识符的公式,无论所标识的是否是guid或字符串,诸如“pleasantsolutions(合适的解决方案)”,其将表示与用于该公司的记录相关的视频聊天。不同工作表格或同一表格上的多个单元格可以将相同的参数传递给webifiervideochat,从而允许页面中的多个目标页面或位置引用相同的视频聊天。在一些方面,webifiervideochat函数还可以在设计时需要输入目标以在由最终用户启动视频聊天时连接到该目标。当生成目标页面时,webifier逻辑然后可以包括、合并或引用web页面上的视频聊天模块,当由用户激活时,该视频聊天模块在终端用户和预定义端点(例如,由设计者在设计时标识的目标)之间建立视频聊天。视频聊天模块随时可用,例如drupalvideochat(drupal视频聊天)、avchat、bigbluebutton(大蓝色按钮)等。访问者输入的影响下面在一个说明性使用案例场景中描述了访问者输入对目标系统的过程和效果。当访问者提交由webifier系统生成的插入页面表单时,目标系统可以首先确认该页面是公共的,或者该用户已经被授予使用它的适当许可。如果用户被允许,则目标系统将检索与包含页面的应用程序相关联的电子表格定义并启动插入过程。如果不允许用户使用插入页面,则可以丢弃他们的提交,并且系统可以通知用户。在将记录插入电子表格定义之前,可以将日期、时间和gps坐标数据转换为适合于电子表格工具的字符串表示,并且可以通过引用webifierinsertfile函数的公式来表示上传的外部补充文件。当在电子表格工具中查看时,函数可以返回密钥,该密钥可以用于稍后使用webifierfileattributes函数从目标系统检索文件。一旦所有数据都处于待保存的适当格式,如果整个表格被用作源并将新数据插入到电子表格中,则目标系统将在源范围或下一个空行或列之后立即找到行或列。此时,可以评估电子表格定义验证,然后分别在目标系统中创建验证。如果验证中的任何验证失败,则可以通知用户并提供机会以更正其提交。如果范围中存在包含webifier公式的任何行或列,则即使它们已被覆盖表格隐藏,也可以使用适当的公式自动填充它们。在成功插入数据之后,将需要更新对构成插入新数据的数据集的单元格的范围的所有引用。这可能包括页面的源(如果是命名范围,则覆盖表格中保存排序和过滤范围)以及显示已扩展数据范围的任何图表系列。一旦完成所有的更新,则修改后的电子表格可以与任何新上传的文件一起保存到数据库。将范围转换为r1c1字符串格式,使得可以解析它们以获取当前包含哪些行和列的数字表示。然后,范围值对于行插入增加一个行或对于列插入增加一个列,转换回r1c1字符串并保存回电子表格。目标系统根据插入页面中的数据更新将在目标系统管理页面中或附加组件内显示的任何页面缩略图,并引发由通知系统使用的插入和页面改变事件以发送电子邮件警报。如果为插入页面配置了“nextpage(下一页)”,则用户将被重定向到页面。动态页面选择如本文所述,可以同时存在多个模板和多个页面以用于相同的记录和相似或相同的目的。目的可以是任何目的或页面类型,其包括只读和访问者输入页面两者。根据说明性实施例,目标系统可以利用来自浏览器或移动客户端的信息来帮助确定要显示哪个模板。例如,信息可以包括任何数量的设备属性或能力,诸如屏幕尺寸、屏幕分辨率、os版本、浏览器品牌和版本、来自访问者的关于哪些模板集是优选的手动指定的偏好以及它是否主要是鼠标、键盘或触摸屏设备。在web应用程序的情况下,可以从http“useragent(用户代理)”标头或者通过在浏览器上执行javascript获取大部分此类信息,浏览器将由web服务器临时存储为会话信息的此信息带内或带外传输到目标服务器。在移动应用程序的情况下,应用程序可以设计为在首次登录认证时收集并传输此信息到目标系统。设计者可以在页面上指定规则集以指定每个页面对访问者可访问所需要的标准,以及后退默认值。目标系统可以允许设计者将此类页面分组为指示它们具有共同目的的方式,以实现单个url或页面标识符,并且使对该单个位置的请求触发目标系统选择要选择哪个模板。在此种分组的情况下,目标系统将具有能够使设计者将列表与规则一起订购,以便系统知道每个页面的优先级顺序,其中最后一个是默认的。创建表格软件的游戏化如本文所述,使用表格构建复杂软件对于非技术人员而言比通过其它方式容易得多。尽管如此,根据说明性实施例,webifier系统和/或附加组件(插件)可以观察设计者的可以被认为是成果的部分的各种动作或动作组。如果这些动作符合各种标准,则可以向设计者简要地显示视觉弹出窗口以指示他们已获得成果(图15)。弹出窗口可以中继他们刚刚创建的内容的值,诸如“yourweb-appisnowreadytoreceivenewrecords(您的web应用程序现在已准备好接收新记录)”或“youaredonemakingyourfirstweb-appreport(您已完成制作您的首个web应用程序报告)”。标准可以包括多个标准,诸如,设计者采取这些动作的前两次中的一次,设计者在过去几个月内未完成此类动作,访问者也访问了与设计者的动作相关的目标页面,用户已经在比前一次对计时此类步骤更短的时间内完成了一些动作,或者用户尝试了不同的工作流或不同的方式来完成某些事情。这些操作不仅可以涉及与目标系统的用户界面或附加组件的用户界面的交互,或与设计者创建的目标页面相关联的访问者的交互,而且也可以基于对设计者电子表格的分析。例如,游戏化系统可能会查看设计者是否创建了传统的电子表格表,他们是否在模板表格上使用了传统的条件格式,或者甚至他们是否在公式中使用了基本的聚合函数,例如“=sum(a1:a10)”。设计者可以具有与他们的用户帐户相关联的点或几种类型的点,这些点基于这些成果而递增。随着时间的推移累积足够的点可以允许设计者使用目标系统或附加组件中的新功能。点的各种动作或级别可以触发目标系统的用户界面或附加组件的用户界面被修改为“advancedmode(高级模式)”。这可能涉及添加附加控件,删除提示标签,改变用于更复杂的控件(诸如带有验证的文本框而不是下拉框)的控件,或通过改变页面的顺序和设计器将显示的按钮位置来改变其工作流程,使得它可以更快速地进行表格软件开发。达到某些点级别还可以改变围绕使用webifier的许可权限规则,例如以允许大量访问者(匿名的或利用用户帐户创建的)访问由设计者创建的目标页面。通知在目标系统中,根据说明性实施例,通知规则提供了程序,其中某些事件的发生可以触发指定的动作(图83)。普通用户可以为自己设置通知。管理员或设计者用户可以自己设置通知,以及为管理域中的用户设置通知。为了处理多个事件和/或执行多个动作,用户可以设置多个通知。每个通知规则的设置要求用户指定应触发通知的事件的详细信息以及在触发通知时应执行的动作的详细信息(图84)。可以禁用通知规则,同时保留其所有其它详细信息,使得在需要重新启用规则时,无需重新输入设置即可。当事件传播到服务器时,可以基于完全在电子表格工具附加组件/插件内的操作来触发通知,或者web浏览器可以触发发送到服务器的通知请求,但是直到动作本身已经传播到或持久化到服务器才可以。示例事件包括何时将数据插入页面,何时编辑页面上的数据,何时改变页面配置以及何时改变应用程序的配置。为了清楚起见,示例事件可以处于以下类中:访问者高级别事件触发(插入页面的提交按钮被按下),设计者高级事件(创建新页面),单元格事件触发(单元格已改变),区域事件触发(单元格组中的至少一个单元格已改变),表格事件触发,并且可以是直接的(单元格的公式改变)或间接的(单元格公式的结果已改变,即使单元格公式本身未改变)。当发生此类动作时,该动作可以引发与该动作相对应的域事件。可以用于通知的相同域事件也可以用作日志记录程序的基础。管理员可以选择记录比人们感兴趣的收到通知的更多事件,诸如关于表格数据、页面配置或应用程序配置的所有crud(创建、读取、更新、删除)操作,以及诸如拒绝访问的事件。可以对这些日志进行分类、过滤或将其用于统计分析。目标系统包含处理这些事件的通知服务。webifier服务可以将通知规则列表过滤到当前启用的通知规则列表,其设置指定它们应该由与发生的动作匹配的事件类型以及在其上进行动作的特定页面或应用程序触发。对于每个此种通知规则,目标系统执行由规则指定的动作。可能的动作包括电子邮件动作和webhook动作(一个通知规则可以指定多个动作),如下面进一步描述的。为了执行电子邮件动作,目标系统可以首先确定是否应该针对该规则发送电子邮件。如果不应该,则其不会继续执行其余的电子邮件动作步骤。如果应该发送电子邮件,则系统使用由规则指定的模板来构建电子邮件消息的各个部分(主题、正文等),将关于事件的信息替换为可能存在的任何相应占位符。如果事件指定目标页面并且规则指定应与电子邮件一起发送的页面的pdf副本,则它可以生成关联页面的pdf副本并将其添加为电子邮件消息的附件。或者,目标页面html可以嵌入到电子邮件中,包括页面包含的任何插入表单或编辑表单。html可能进行或未进行修改,以考虑到在支持html的电子邮件客户端中查看它,诸如删除页面导航菜单,删除背景图像,删除javascript引用,或者对输入字段使用更多标准和简化控件而不是专用控件,诸如标准文本框而不是弹出日历来选择日期。提交嵌入的表单将导致对目标系统的httppost请求。在没有嵌入电子邮件的情况下呈现时,post请求的url可以与同一目标页面不同,并且可以触发不同的用户认证,由此不需要登录,因为授权令牌嵌入在表单和httppost中,或者可以考虑输入控件的不同的数据验证规则是更不可预测的自由形式的输入。然后,webifier将消息发送给规则中列出的电子邮件收件人。可以在电子邮件模板表单中指定电子邮件的内容,其包括主题行的选项,富文本模板的wysiwyg编辑,不处理html的电子邮件系统的后退,多个收件人(包括抄送和密件抄送),回复和附件(图85)。或者,可以使用市售的电子邮件模板模块。此外,电子邮件内容本身可以使用表格模板指定,其中目标系统将以html格式输出,就像它对目标页面一样,但也会针对不处理html的电子邮件客户端以后退、简化、纯文本格式输出。为了执行webhook动作,目标系统可以首先确定是否应该针对该规则调用webhook。如果不应该,则其不会继续执行其余的webhook动作步骤。如果应该,它会向由规则指定的webhookurl发送httppost请求,其中包括关于在post请求的正文中发送的事件的信息。webhook信息可以是但不限于json格式。所有通知操作可以进入队列并且可以异步处理,使得触发动作的事件可以继续,并且触发它的用户可以继续在系统上执行其它功能,即使电子邮件或webhook动作失败或需要延长的时间才能完成。因为它们是异步的,所以还可以存储通知以用于批处理(例如,用户可能偏好接收所有事件的每日或每周摘要,而不是连续的通知流)。过程动作通知事件的可能动作(例如,关于上述按钮和通知等)可以包括在任何类型的表格(诸如记录表格、模板表格、虚拟表格、瞬态表格、配置表格以及webifier中的所有其他类型的表格)上对单元格进行插入,删除和设置值的过程动作。可以使用类似于传统声明式电子表格公式的语法(如在“=setvalues(source,destination,params)”),其他传统公式函数内的嵌套(如在“=if(a1=100,setvalues(a1:a2,b1:b2,false)”),和/或过程编程通用的语法(如“dest=source),声明这些过程动作的细节。源和/或目标可以是整个表格、表格范围(包括命名范围),引用其他表格数据的公式或对插入页上控件的引用(其效果与引用基础单元格相同,将受到该插入页面控件的影响)的混合。在源的情况下,它也可以是静态值,诸如1、“hello”或1+1。如果源是静态值而目标是范围,则可以为目标范围中的每个单元格设置静态值。在插入值时,过程函数setvalues的参数可以指定是否覆盖现有值,插入和下移现有值,插入和左移等。过程函数deletevalues可以指定是否删除和向上移动,删除和向左移动,留空等。参数还可以指定是否应将源单元格中的任何公式解析为值(可以称为复制为值),或者目标副本是否应保留源单元格的公式定义(可以称为通过公式复制)。对通知事件的可能动作还包括更复杂的程序,诸如循环或复杂条件,可以由设计者使用电子表格用户熟悉的vba脚本语法,过程编程语言(诸如c#)和/或多种常用或自定义脚本语言来指定。例如,设计者可以将以下代码与名为venturecapital的表格的插入事件相关联:“for(intx=0;x<10;x++){setvalues(offset(departmentsizes!a1,x,0),offset(departmentsizes!a1,x,0)*2,setvalueparams.overwrite|setvalueparams.copybyvalues);}”。当插入新的风险投资记录时,相关动作将使a1到a10中的部门规模值加倍,并且如果任何单元格最初具有公式,则它们之后将具有简单数值。webifier可能会限制脚本的执行时间,限制可用的功能或特征,并采取允许脚本逻辑的系统所特有的其他安全措施。webifier可以仅在目标系统上执行脚本,并且可以避免和/或阻止在exceladd-on内执行脚本。webifier可以允许脚本具有多种能力,诸如访问表格的元数据,修改如页面选项的表格外webifier数据,发送webhttps请求,执行api调用,连接到sql数据库以执行sql查询和/或触发其他webifier通知事件动作,诸如发送电子邮件(例如,通过执行脚本函数,诸如execevent(guid))。由于先前与此类更改相关联的事件,使用这些过程动作更改表格可能会间接触发附加通知。通知事件的其他可能触发包括日期或时间滚动,诸如午夜或设计者以cron表达式或者在单元格中使用公式“=buttonevent(buttonlabeltext,waitorqueue)”定义按钮的按钮点击的形式指定的间隔,waitorqueue向目标系统指定是否应使访问者点击按钮以等待相关事件全部完成执行,或者是否应将事件排队并且应同时允许访问者继续使用webifier。通知事件列表将通过找到的特定单元格的位置来唯一识别所引用的特定按钮,诸如“buttonlabelledresetatfirstsheet!a1”。不变性webifier的用户可能希望构建这样的应用:使用电子表格公式声明一些数据,但是数据在最初创建后不会更改,或者在未来某个时间点之后会冻结,这可以统称为不变性。不变性可以通过已经描述的webifier的过程能力来实现。例如,设计者可以创建发票行记录表格invrecords以及关联发票插入模板和细节报告模板。行记录表格可以具有若干列,这些列由诸如税收和总额计算的计算公式组成,并且税收公式可以引用第二表格上名为globalvariables的单个值,该值设置为静态6%。为了允许将税率更新为4%,而又不更改所有历史发票的税收和总额,设计者可以具有由插入页面触发的通知事件设置,执行该页面时执行带有“setvalues(invrecords,invrecords,setvalueparams.copybyvalues|setvalueparams.overwrite)”orthesimplifiedequivalent“freezevalues(invrecords)”的脚本。结果,每次插入任何发票时,由于copybyvalues参数,过去发票中的所有公式都会解析为静态值,包括那些在两个模板上都不直接可见或不可编辑的公式的单元格。通过使用用户界面模板和具有过程表格更改功能的事件模型将记录的电子表格表示与记录输入相结合的能力,允许将webifier有效地用于大量附加场景中,并且灵活性大于这些部分的总和,使得需要更少的单独工作流程和功能。虽然如此,webifier可以提供一种在插入或编辑页面上使用“使值不可变”页面选项指定不变性的可选方法,该方法将在访问者使用该页面提交数据后将所有公式解析为静态值。移动考虑因素根据说明性实施例,目标系统优选地是响应的并且在所有设备平台上完全兼容,并且与诸如html和文件传输的多种标准浏览器特征集成。目标系统还可以通过对目标系统的标准web服务api访问方法而直接集成到原生应用程序中,使得用户在原生应用程序体验中访问目标系统中包含的数据。目标系统通过原生sdk环境或其它开发框架(例如androidstudio、applexcode、xamarin或cordova)中的附加编码来实现此种方法中的数据呈现。此外,目标系统可以通过使用webview来与移动设备集成,以用于访问功能和显示数据。这可以在应用程序内完整地访问目标页面,或者可以用于显示较小的数据段或访问特定的功能。目标系统可以执行完全交互的模块和其它代码片段(代码片段可以是脚本或编译的),其允许在其它页面上包括所有的目标系统元素。例如,目标系统可以支持htmliframe元素以在第三方托管网站上显示任何页面类型。目标系统还可以以此模式操作,其中从基于云的文件存储应用程序接受文件上传,基于云的文件存储应用程序可以在同一移动设备上或不在同一移动设备上运行。这种转移可以通过直接的文件访问或通过互联网可访问的api来完成。尽管本文档中的描述涉及web页面和浏览器,但是在移动端点的情况下它们基本上没有变化,诸如上面的移动端点是浏览器的替代。说明性的变化可以概括为首先在移动设备上安装应用程序,其设计和构建成以与web浏览器非常相似的方式操作,无论其是否主要作为页面的浏览器或获取多个片段的多个请求而实现,这些片段与使其与移动平台一致的一些用户界面元素放在一起。第二变化是,目标系统服务器在某些情况下可以使用软件开发行业中常见的多种格式和方法中的一种生成不同的输出格式,而不是生成用于所得目标页面的css和html。最后,与html菜单相反,移动应用程序可以具有一些硬编码的用户界面元素,诸如页面菜单,其对于移动平台可以是特定的且一致的。此种硬编码的用户界面元素可以是用于获取数据列表的web服务api调用和用于处理这些数据列表的移动应用程序内的硬编码用户界面代码的组合。自动转换为流布局许多设备(例如,移动电话)具有各种分辨率的小屏幕。在这种情况下,现代基于流的布局可以改善用户体验。无论访问者正在使用浏览器、本机移动应用程序还是其他方式,webifier都可以使用多种方法将模板表格完全或部分转换为流布局,以优化访问者体验和/或屏幕空间的使用。在基于模板生成页面时,webifier可以分析模板格式设置、模板内容、模板用法、模板数据源的内容、数据源用法、甚至是与数据源相关联的其他模板,以便确定如何转换为流布局。转换为流布局可能涉及识别对布局的最佳修改,诸如单元格换行到特定行,对间距的修改,帮助可视分组的格式设置(诸如边框或背景色)的添加和/或单元格宽度的修改。webifier可以分析许多因素,诸如以下所述的因素,并以多种方法结合使用它们来确定对布局的修改。例如,webifier可以通过该因素重要性的静态值对每个因素进行加权,最重要的因素将确定最重要的修改,计算支持每个修改的因素数量,并对支持每个修改的因素进行加权求和,或者对于本领域技术人员而言显而易见的许多其他方法。webifier可能倾向于在空单元格上换行,而不是在它们之间没有空列的两个单元格之间换行。在这种情况下,很像自动换行通常在换行到新的文本行时跳过在行尾呈现空白,因此可能不会呈现空单元格。对于所有行或大多数行,webifier可能更倾向于在完全为空的列上换行。当模板的行换行时,webifier可以增加该行之前或之后的垂直间距,使得访问者可以更轻松地将一组呈现的行识别为单个模板行,或者在模板行表示单个记录的情况下,作为单个记录。然后,webifier还可以增加所有其他模板行之间的垂直空间以提供一致性。可选地,webifier可以例如通过围绕完全空的换行的模板行定位第一较低或较高模板行来识别垂直部分,并且仅增加该部分内的模板行之间的垂直空间;在保持清晰度和有效利用空间之间取得平衡,尤其是在具有多个部分的模板中。webifier可以分析模板内容以及进行格式设置,并确定许多行非常相似,并且可以将其识别为垂直部分,并且可以进一步倾向于该部分内的所有行的相同列换行。webifier可以分析边框以识别垂直或水平部分;例如,如果边框在3个水平相邻的单元格周围,则webifier可能会倾向于在它们之间不换行,并且可能会增加这些单元格之前和/或之后的垂直空间。webifier可以确定模板行从第一列开始的左侧具有一个或多个空单元格,并且可以跳过呈现那些空单元格,使得该行上具有内容的第一单元格将更靠近屏幕的左边缘进行呈现。webifier可以确定若干行在垂直部分内并且在内容的左侧具有不同数量的空单元格,并且可以对该部分中所有行跳过左侧的相等数量的空单元格。webifier可以分析数据源(例如记录表格)的元数据,以帮助自动转换为流布局。例如,如果模板有两个单元格,一个单元格引用记录表格列a,则第二单元格引用记录表格列b,具有诸如“=a*2”的公式,而第三单元格引用记录表格列c,没有对a或b的公式引用,则webifier可能倾向于第二单元格和第三单元格之间的断开,使得在视觉上第一单元格和第二单元格更像一组。webifier可以确定具有附加信息的第二模板使用模板的数据源,可以对该附加信息可以被分析以确定呈现流布局的最佳方式。例如,reportinvoice模板可能具有“invoicerecords”数据源,“insertinvoice”插入模板也使用该数据源。webifier可以确定insertinvoice在引用invoicerecord的列d和列l数据的单元格周围具有许多空行和边框。即使在呈现的reportinvoice上没有引用相同invoicerecords的列d和l的单元格密切相关的任何指示(诸如边框或空行),webifier仍可能倾向于不在它们之间换行或以视觉方式对他们进行分组。与周围的单元格相比,webifier可以用与边框相同的方式来处理与周围单元格相比具有不同背景或文本颜色的单元格区域定义关系在一些高要求的使用场景中,根据说明性实施例,设计者可能希望在记录表格中具有主要记录集以及在每个主记录的另一个表格中具有用于每个主要记录的一个或多个“次要记录”,其中设计者打算通过主要记录集的“主要密钥”将次要记录标识为属于主要记录,如在传统的数据库软件意义上。简而言之,设计者可能打算在记录集之间表达关系,以便使模板表格不仅填充有主要记录数据,而且填充有次要记录数据。例如,一个记录表格可以具有列“companyid(公司id)”和“companyname(公司名称)”,并且一个行具有值“1”和“pleasantsolutions(合适的解决方案)”。第二记录表格可以具有列“companyid(公司id)”和“specialization(专业化)”,并且一个行具有“1”和“softwaredevelopmentconsultants(软件开发顾问)”。根据说明性实施例,如果设计者希望基于提及“pleasantsolutions(合适的解决方案”和“softwaredevelopmentconsultants(软件开发顾问)”的模板表格来显示明细页面,则webifier系统支持此种使用。例如,目标系统可以在高级模式或部分中请求设计者在一格表格上选择列或行并且在另一个表格上选择另一个列或行,以指示它们之间的主要密钥关系作为主要和次要记录集。或者,可以在配置表格中完成此关系的规范。之后,目标系统可以允许设计者在源输入控件中不仅指定一个范围或表单,而且还指定它们的列表;或者目标系统可以根据指定的第一范围或表格以及将其与次要表格绑定的主要密钥关系自动隐含其它输入。其它地方描述的用于从模板表格内引用记录数据的方法在那时可以是适用的。设计者可以使用对任一记录表格的单元格公式引用,并且通过解析该公式引用,将清楚其是设计者打算从中获取数据的主要记录集还是次要记录集。使用来自次要记录集的引用数据填充的目标系统将以与从主要记录集填充的相同方式完成。“应用程序模板”的库根据说明性实施例,在具有或不具有来自附加系统的附加信息(诸如,页面列表及其共享许可)的情况想,可以从设计者社区向其他设计者用户提供包括预先设计的和/或预先配置的电子表格定义的整个应用程序模板,以便将该模板作为其自己的web应用程序的起点进行复制和使用(图22)。根据应用程序中的页面类型,记录表格上的列名称,来自任何单元格内容中的关键字,单元格格式(诸如存在的日期字段),以及与哪些设计者正使用该应用程序模板web应用程序或设计者的雇主所处的行业的关联,这些可以单独列出并且可按目的、类别、行业或智能搜索进行搜索。智能搜索还可以检查是否已经从相同的其他设计者使用任何其它应用程序模板,以将两个设计者关联为更相似。或者,目标系统可以基于存在来自单元格内容的关键字或上述任何搜索参数,将一个设计者的多个电子表格定义的组与另一个设计者的多个电子表格定义的组进行比较,以确定两个设计者之间的相似性水平。然后,搜索可以基于上述因素中的一个或多个因素,因素发生的频率以及因素的重要性来对搜索结果进行排序。然后,系统可以利用常见的市场上已知的技术和市售的库来优化用户的搜索体验。附加组件集成和通信电子表格工具内的插件或附加组件可以与目标系统服务器通信,并以对软件开发行业而言典型的多种方式显示其用户界面以用于客户端服务器应用程序模型。例如,一些图表说明了使用web服务api的附加组件调用目标系统以获得主要的html界面、传统的web页面,并且说明性地在框架中显示web页面的结果,框架类似于嵌入式浏览器窗口进行操作。这允许重复使用许多附加组件用户界面元素并且使其与未安装附加组件的设计者在目标系统的管理页面上的其各自对应部分大致一致。可以限制、删除或改变附加组件中的某些功能(诸如,使用鼠标选择单元格范围的功能)以限制设计者键入范围,或者可以在具有目标系统管理页面的嵌入式电子表格工具上执行这些功能。为了简洁起见,即使没有附加,表示附加组件用户界面或目标系统管理页面的附图应假定具有其各自的对应部分。附加组件到电子表格工具的集成可以根据其中插件集成到的电子表格工具而变化。例如,可以使用excel的cominterop库(可在https://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel(v=office.15).aspx上公开获得的开发使用文档)或office的javascriptapi(可在https://dev.office.com/docs/add-ins/develop/understanding-the-javascript-api-for-office上公开获得的开发使用文档)来完成与excel的集成。基于云的电子表格工具(诸如google表格)可以与使用web服务集成,诸如google表格api(可在https://developers.google.com/sheets/上公开获得的开发使用文档),该web服务具有易于访问且易于理解的web服务api函数,诸如使用“spreadsheets.get(ranges,includegriddata)”检索表格范围。如果电子表格工具的集成程序允许,则系统可以集成到右键菜单,以用于诸如单元格或表格选项卡的区域,从而允许用户指示他们打算执行与诸如添加页面的项相关的动作的修改过程。例如,用户可以右键单击单元格组并选择“addpage(添加页面)”,而不是选择添加页面然后指定源,由此添加页面屏幕就已经知道了源的指向而不需要提示用户提供该信息(图14)。附加设计者导航webifier可以处理大量表格,并且可以同时作用于多种类型的表格,因此,表格的附加组织和导航可能对设计者有利。webifier可能具有带有嵌入式电子表格工具的目标系统,也可能具有与外部电子表格工具集成的add-on。以下方面可以类似地应用于任何一个。电子表格工具通常单个行选项卡,其中每个选项卡表示工作簿中的单个表格。webifier可以根据选项卡的类型自动将其分组;例如,autogen表格、虚拟表格和/或设计者构建表格每个分组在一起,并且可以基于子类型进行分组,诸如虚拟模板表格和虚拟记录表格,或者用户未修改的autogen记录表格和用户修改的autogen记录表格。webifier可以记录每个表格的元数据,指示如何首先创建表格以帮助进行分组。更改表格可能会导致选项卡从一个组移动到另一组,诸如用户修改在“用户未修改的autogen记录表格”组中的表格。可以采用熟悉的菜单样式完成选项卡分组,其中仅出现组名,但是通过点击组名,出现子组列表或表格列表。webifier可以根据其代表的表格或组的类型自动为代码加色和/或更改选项卡的外观。当设计者正在将公式输入到单元格中时,电子表格工具通常允许用户通过点击单元格来选择单元格范围,而不是键入范围定义,并且该工具可以允许用户点击在另一表格的选项卡,从该表格中选择一个或多个单元格,并仍聚焦在正在输入的单元格公式文本上,使得将选择的范围自动键入到公式中。类似地,webifier可以允许在不失去聚焦的情况下点击选项卡以及组和子组。当点击组或子组中的特定表格并且该表格变得可见时,webifier可能还会临时移动或复制表格的选项卡,使其位于组旁边的选项卡的顶层。在用户选择不同表格之后,webifier可能会向后移动或删除表格的顶层选项卡,或者可以将选项卡保留为最近使用的选项卡,直到达到了显示为顶层的最近选项卡数量的限制,届时,最不常用的顶层选项卡将被删除。通常,设计者可以使用很多可能的autogen和/或虚拟表格,但是可能尚未访问。例如,可以为选择作为基础的单元格的每个不同区域创建不同的虚拟行记录表格。在这种情况下,组下的一个选项卡可能是动态的,并导致出现对话框,从设计者请求所需表格的附加信息,诸如表格所基于的单元格的区域。一旦选择,该表格将直接显示为最近访问的虚拟表格,而无需再次向对话框提供输入,并且如果设计者正在键入公式,则将保留聚焦,并且设计者可以继续从表格中选择区域,而不向工具指示正在继续进行公式编辑。与电子表格工具的紧密集成webifier不需要是与电子表格工具分开的应用程序,并且不需要限于经由外部应用程序可访问的装置与电子表格工具进行通信。webifier可以替代地具有紧密的关系,由此它可以具有与电子表格工具更深和/或更多基于后端的集成和通信信道。这在本文中也可以称为“紧密集成(tightintegration)”。根据一些实施例,电子表格工具可以是具有电子表格控件的基于web的电子表格系统,电子表格控件嵌入在目标系统服务器的页面内并且在设计者访问目标系统的管理页面时,允许以传统电子表格工具的任何熟悉的方式编辑电子表格定义。或者,反过来是可能的,由此webifier可以是嵌入在云电子表格工具的web界面内的控件。在任何情况下,呈现给设计者的用户界面能够比作为允许有限集成点的单独应用程序的电子表格工具的用户界面对于设计者是更加紧密地集成和简化的。例如,使用浏览器导航将具有电子表格和目标系统url两者的统一历史,并且可以组织菜单,使得电子表格工具菜单链接和目标系统菜单链接都按逻辑组进行分组,而不是被应用程序边界部分分隔。如上所述,无论用户界面是否实现成更紧密地集成,电子表格工具和webifier之间的数据传输、同步和其它后端处理也可以具有或不具有紧密集成。例如,比起web服务api调用,部分地或作为web服务api调用的完全替代,webifier可以使用对电子表格工具的dll库的函数调用,或者相反,电子表格工具可以使用对webifier的dll库的公共函数调用。这可以为webifier提供性能优势,并且允许集成以利用本领域技术人员已知的附加编程技术,诸如共享存储器访问、低级协调对象(诸如互斥量和信号量)、访问共享文件、对基础数据库的共享访问以及dll库的共享使用。例如,此种灵活性对于两个组件之间的实时改变通知可以是有利的,其中两个组件是指webifier和电子表格工具。或者,紧密集成可以允许webifier更直接地访问基于web的电子表格工具的基础数据库数据,或者相反地,允许基于web的电子表格工具更直接地访问webifier的基础数据库数据,或者使完全共享的数据库具有专门设计的设计模式以允许每个组件的数据直接引用另一个组件的数据,诸如通过从一个组件的数据库表引用到另一个组件的数据库表的数据库外部密钥,或者使同一数据库表的列中的一个组件的数据作为包含来自另一个组件的数据的列。直接访问可以提供显著的性能优势并且可以降低实现复杂性。例如,紧密集成可以允许单个sql查询来确认目标页面的记录数据是否已改变,以及在数据库中有效评估查询的位置。此种查询的示例可以涉及将与目标页面的源数据的定义有关的数据库表连接到数据库表,该数据库表具有在电子表格内已经改变的特定单元格的改变日志。例如,在没有数据库级别的紧密集成的情况下,webifier系统可能会从电子表格工具的web服务api中获取大量的单元格数据,其反过来可能使基于web的电子表格工具从其数据库中获取数据;比较先前通过从webifier数据库中获取单元格数据而获取的单元格数据,以及将已改变的单元格列表映射回使用对该页面的单元格引用的所有目标页面。另外,比起webifier和电子表格工具以电子表格定义的通用模式进行通信,紧密集成可以对数据库数据使用完全不同的模式,其中模式对于一个或两个组件进行处理更有效。例如,典型的电子表格定义可能具有由表格组织的xml数据,其中该表格的所有单元格都嵌套在每个表格的定义中,并且其中各种单元格属性嵌套在每个单元格的xml定义中,诸如格式和公式和值。在具有数据库级别的紧密集成的情况下,示例可以是非xml的,并且可以具有规范化而非嵌套的数据库记录,诸如数据库表具有列“sheetid(表id)”、“rowid(行id)”、“columnid(列id)”和“cellcontents(单元格内容)”,其中id指的是其它数据库表。此外,数据库模式甚至不需要将单元格内容组合在一起。可以替代地对单元格内容进行划分,使得一个数据库表具有所有单元格格式,不同的数据库表具有单元格公式,以及第三数据库表具有来自评估公式的单元格的缓存值。此外,单元格可能不需要按行和列进行组织,因为数据库模式可以具有一个或多个数据库表,数据库表具有“units(单位)”列表,其仅由唯一id和公式定义,并且模式也可以具有单独的表或允许在选择的情况下将单元映射回行和列的表,诸如当数据作为熟悉的电子表格呈现给设计者或者设计者临时以电子表格形式与数据交互时。紧密集成还可以允许目标系统和电子表格工具不仅驻留在相同的单个服务器或服务器组上,而且还协调分布式云计算过程的最有效使用。例如,如果需要旋转附加的分布式服务器以支持增加的负载,则可以对附加服务器委派与特定web应用程序相关的所有设计者和访问者请求,并且可以向附加服务器提供两个组件的实例以及用于该特定web应用程序的所有数据。跨web应用程序边界的此种委派将允许附加服务器保持关于web应用程序的有效单元,其中其它服务器需要最少的传输。相比之下,在没有紧密集成的情况下,确保托管web应用程序和关联的webifier程序实例的特定服务器是同一服务器或甚至是地理位置靠近托管同一web应用程序的电子表格工具的服务器将变得更加复杂;因此,组件之间的通信要么更复杂,要么效率更低。总体而言,在具有紧密集成的情况下,电子表格工具和webifier不需要是单独的应用程序,两者之间的通信不需要是电子表格定义的形式,也不需要通过api,数据的存储需要不在电子表格定义表单中,但设计者仍然能够在记录和/或ui模板以电子表格表单呈现在用户界面中时操作它们,并且访问者仍能够不以电子表格表单与目标页面中的数据进行交互。图3b示出了使用如上所述的紧密集成的说明性软件架构。在图3b中,组合的紧密系统450包括电子表格工具逻辑452和webifier逻辑453,两者共享公共存储器451,并且两者都与通信机制410和共享库等集成。如图3b进一步所示,设计者可以使用浏览器454创建或做出对一个或多个工作表的记录表格和模板表格改变,并且数据改变作为具有部分电子表格定义的httppost请求或作为改变事件传送401a到紧密系统的电子表格逻辑452。电子表格逻辑452可以在存储402设计者的改变之前将数据转换为备选的“efficientformat(有效格式)”,或者可以以原生电子表格格式存储数据。设计者可以使用相同或不同的浏览器455创建或做出对目标页面配置的改变,其作为httppost请求被传送401b到webifier逻辑控制器453,并且之后存储402到存储器451中。响应于来自访问者的浏览器456到webifier逻辑453的httpget请求403b以提供目标页面,webifier逻辑453从存储器451中检索404所需的数据。webifier逻辑通过评估和引用模板表格中的值和格式以及评估和引用基于模板表格标识的记录表格中的值,可以将数据转换为html目标页面。可以将目标页面发送到405b访问者的浏览器456。如图3b所示,访问者看到了页面具有:仅在模板表格中找到的文本标签,而不是记录表格中的文本标签;源自recordsheet!a1的文本标签;评估recordsheet!c2的“100”的值;以及由模板表格定义的html输入控件,其具有来自recordsheet、用于复选框的recordsheet!a2和用于文本框的recordsheet!b2的值。图3b还示出了访问者检查复选框并在浏览器456中提交的能力,使得浏览器将httppost请求406b发送到webifier逻辑控制器454。webifier逻辑453处理post请求并用新数据更新存储器451,可选地存储有效格式或系统使用的任何格式。如果设计者的浏览器454仍具有活动会话,则电子表格逻辑控制器452可以从存储器451获取更新数据408,或者可选地通过集成的通信机制410,并且将数据转换成一个或多个电子表格定义或足以更新在设计者浏览器454中呈现的电子表格定义的改变事件,并且将它们发送409给设计者浏览器409,使得设计者的工作表然后在单元格a2中显示“true(真)”。如图3b进一步所示,来自运行移动应用程序(例如,与浏览器相对)的访问者的移动设备457的web服务api调用403m可以是httpget请求403b的替代。在这种情况下,webifier逻辑453可以向移动应用程序发送405m可能是xml格式的对web服务api调用的响应,其由移动应用程序以及设备或操作系统特定的设计信息一起处理以生成用于访问者的界面。如在该示例中,移动设备457呈现目标页面可以在关于具有不同布局、不同控制类型和/或缺少某些记录数据方面与访问者浏览器456呈现目标页面不同。图3b示出了访问者还将文本框值改变为true(真)并且点击移动设备457上的提交的能力,使得移动应用程序将web服务api调用406m发送到webifier逻辑控制器453。webifier逻辑453处理从web服务接收的数据,并用新数据更新存储器451。其余步骤可能类似于访问者浏览器产生的步骤。如图3b所示,可以将目标页面发送405m到运行移动应用程序(例如,与浏览器相对)的访问者的移动设备457,或者可以将其提供给在移动设备上执行的浏览器,但是基于移动设备的一个或多个特性改变了目标页面的外观(例如,屏幕尺寸、硬件功能等)。其它特征系统可以使用与模板表格相同的方法作为“列表项模板(listitemtemplate)”。例如,可以创建“list(列表)”的页面类型,其中输入和输出将与“details(明细)”页面类型相同,除了不要求用户选择行来查看其明细,所有行记录将以列表形式一个接一个地显示,其中列表中的每个记录根据项目模板显示。例如,这允许向访问者显示行记录列表,其中每个记录需要几行信息但不足以保证完整的明细页面,或者因为不希望重复地导航到明细页面。在整个界面中,可以向设计者呈现缩略图,该缩略图描绘了目标页面对于访问者看起来的样子。缩略图可以在用户界面中内联(例如,如图28所示)和/或在悬停在屏幕的某些部分或特定控件上时被描绘为弹出窗口(例如,如图11所示)。如本文包括的许多附图(至少包括图28和图11)所示,缩略图可以从图中描绘的电子表格定义描绘目标页面结果。根据一些方面,页面类型可以具有在一段时间内指定的自动刷新选项,其将自动地使客户端应用程序或浏览器周期性地为访问者刷新该目标页面(图48)。或者,可以将相同的通知和日志记录方法用于推送打开页面或页面的一部分具有新信息的客户端会话的通知,并且通知将向客户端提供更新页面的必要信息或者客户端将发送刷新页面的新请求。使用任一种方法都可以有益于无人墙式仪表板的使用场景,诸如由可以访问web页面并满足刷新请求的浏览器提供的那些,使得新信息在不影响观看者交互性的情况下总是可见的。根据一些方面,目标系统的许可系统还可以具有限制设计者权限的规则,而不仅仅是访问者或页面许可。设计者权限可以包括访问类型,诸如只读、读取和共享,或读取和共享和更新,(图21)其具有每个应用程序、每个页面或每页级别的粒度。例如,应用程序exampleapp上的只读权限将禁止设计者修改exampleapp中使用的任何表格的电子表格定义,禁止改变exampleapp中页面的页面配置,但允许设计者查看电子表格定义及其基础公式和设置。根据一些方面,目标系统可以像许多电子表格工具那样支持使一个或多个单元格成为指定url的可点击超链接的单元格格式。这可以使用指定url的单元格文本上的属性来完成,其中url的存在可以暗示其它格式改变,诸如下划线和蓝色。webifier可以允许设计者提供数据表格和/或区域的列表,并在其上指定安全许可,类似于页面上的安全许可。然后,webifier可以将这些规则用作每页安全性之外的第二层安全性。然后,如果对那些页面的请求导致不允许访问基础数据,则webifier可能会阻止访问整个页面或页面的一部分。webifier可以记录访问冲突和/或向管理员或设计者发送通知。webifier可以检测到嵌套模板嵌套到第二级。webifier可以在弹出窗口中显示任何这样的第二级嵌套模板,使得点击指定最深层嵌套模板要嵌入的区域,将为该最深层嵌套模板带出弹出窗口。例如,如果发票模板具有发票项目的嵌套模板,并且发票项目模板具有该发票项目的过去购买历史的更深层嵌套模板(在分配给历史模板发票项目模板的空间中显示可能不可行),则webifier可能会自动显示带有发票项目的发票页面,在该页面上点击发票项目的一部分将拉出弹出历史。可以应用深度嵌套输入格式的类似示例,其中,最深度嵌套模板可以利用弹出窗口提供二级输入细节。如前所述,webifier可以允许设计者为其他设计者指定各种粒度的许可以修改应用程序。webifier还可以允许设计者指定访问者各种粒度的许可,以便他们能够在输入和编辑期间提供公式,并指定对公式是否仅为数学的限制,他们可以使用公式引用可用于在同一页面上进行编辑的其他单元格,或者它们可以引用不在同一页面上可编辑或可见的单元格。以这种方式,webifier可以允许访问者成为约束子设计者。说明性使用案例情景。根据说明性使用案例,设计可以打开电子表格应用程序的windows桌面版本,例如microsoftexcel,其中已安装了webifier附加组件。附加组件可以包括“sidebar(侧边栏)”作为嵌入到电子表格应用程序中的主要附加组件用户界面。可能要求设计者登录(图13)。成功登录将设计者带到图12中,其具有先前制作的web应用程序列表。该设计可以以电子表格应用程序可用的通常方式创建新的电子表格文件,并然后可以点击上传箭头(上传到服务器),如图12所示。设计者可以为应用程序设置名称(图23),并且将几乎空的电子表格(在此示例中)发送到服务器,使得成为几乎空的web应用程序。设计者接下来在图18中看到空的页面列表,并点击web应用程序动作菜单以查看图69中的菜单或点击web应用程序选项卡的动作菜单以查看图55中的菜单。用户点击该菜单中的添加页面并转到如图51中的表单,该表单可以显示对所有页面类型共有的属性,诸如页面“title(标题)”,并且还可以显示下拉框以选择期望的目标页面类型。接下来,设计者将会看到主要空白的表单,其要求根据设计者的页面类型选择定义页面类型设置和配置,其可能类似于图26(api)、27(日历)、29(容器)、33(csv导入)、35(明细报告)、38(编辑单元格)、41(编辑记录)、43(插入)、45(链接)、46(pdf)、47(报告)、49(选项卡容器)。设计者可以重复该过程以根据需要创建尽可能多的页面,每个页面包含本文描述的一个或多个特征。上述任何特征可以与本发明的任何特定方面或实施例一起使用。对于本领域技术人员来说,对上述方面和实施例的特征的许多组合、修改或改变将是显而易见的,并且旨在形成本发明的一部分。与一个实施例或示例相关的具体描述的任何特征可以用在任何其它实施例或示例中。另外,尽管已经以结构特征和/或方法动作专用的语言描述了本主题,但应理解的是,所附权利要求书中定义的主题不必限于上述具体特征或动作。例如,特定软件应用程序、公式和函数名称的使用不旨在限制可以使用的替代应用程序、公式和/或函数名称,除非权利要求叙述此种特异性。相反,公开了上述具体特征和动作作为实现权利要求的说明性形式。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1