CN102622335B - 用于根据示例的自动化表格变换的方法和系统 - Google Patents

用于根据示例的自动化表格变换的方法和系统 Download PDF

Info

Publication number
CN102622335B
CN102622335B CN201210020482.8A CN201210020482A CN102622335B CN 102622335 B CN102622335 B CN 102622335B CN 201210020482 A CN201210020482 A CN 201210020482A CN 102622335 B CN102622335 B CN 102622335B
Authority
CN
China
Prior art keywords
input
list
output formats
program
row
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.)
Active
Application number
CN201210020482.8A
Other languages
English (en)
Other versions
CN102622335A (zh
Inventor
S·古瓦尼
W·R·哈里斯
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 CN102622335A publication Critical patent/CN102622335A/zh
Application granted granted Critical
Publication of CN102622335B publication Critical patent/CN102622335B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Stored Programmes (AREA)
  • Document Processing Apparatus (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明涉及根据示例的自动化表格变换。此处描述了用于自动生成通过用户提供的示例来将第一格式的第一表格变换成第二格式的第二表格的计算机可执行程序的机制。用户提供具有第一格式的示例性输入表格,其中该输入表格可以是第一表格的一部分。用户还提供具有第二格式的示例性输出表格,其中该输出表格的内容对应于输入表格的内容。基于这些用户提供的示例,自动生成表格变换程序,其中该表格变换程序在对第一表格执行时生成第二表格。

Description

用于根据示例的自动化表格变换的方法和系统
技术领域
本发明涉及表格格式变换。 
背景技术
表格历来被用来以适合审阅或计算机处理的方式排列数据。例如,电子表格应用已经被开发成以表格形式排列和处理数据。另外,许多当前文字处理应用具有相关联的表格功能以使得用户能够通过利用一个或多个表格来以特定格式显示数据。另外,许多数据库可被认为是表格,其中数据库中的条目经由特定索引来排列。 
在某些情况下,这些应用中的一个的用户可能希望从现有表格中生成新表格,其中该新表格包括现有表格中的以不同格式排列的一些相同数据(或者可以从这些数据导出的数据)。存在基本无限数量的用来在表格中显示数据的格式,并且取决于用户的当前任务,用户可能希望更改格式以便将现有表格变换成新表格以使得该新表格对应于用户需要的格式。 
当前,对于个人而言,对表格,尤其是对包括相对较大量的数据的表格执行格式修改是相对困难的。一些常规电子表格应用提供对可以对输入表格执行以创建输出表格的一个或多个算法的用户生成和实现的支持。然而,大多数计算机用户不具有计算机编程技巧,并且大多数用户发现用于生成计算机可执行程序的电子表格应用支持的语言是非直观的。因此,用户有时将花费相对较长的时间来手动重新创建或重新组织现有表格中的数据,以生成用户所需格式的新表格。从现有表格中手动创建新表格会允许用户在表格之间转移数据时犯下各种错误。同样,从现有表格中手动创建新表格的任务对用户而言是相对枯燥的,有时是令人厌烦的。或者,无经验的计算机用户能够雇用专家级程序员来生成能够从现有表格中创建具有该用户所需格式的新表格的程序或脚本,但雇用这样的程序员可能是昂贵的。 
发明内容
以下是在本文详细描述的主题的简要的发明内容。本发明内容不旨在是关于权利要求的范围的限制。 
此处描述了涉及通过利用示例来将第一格式的第一表格变换成第二格式的第二表格的各种技术。例如,用户可能具有包含许多单元格的相对较大的表格,其中这些单元格中的至少一个子集保存数据,并且其中该表格具有第一格式。第一格式可由第一表格中的若干行或列、数据在该表格的各行和各列中的排列等来定义。用户可能期望将该第一表格变换成具有第二格式的第二表格,其中该第二格式不同于第一格式。例如,第二格式可具有不同数量的行和/或列。或者,第二格式可具有相同数量的行和列,但数据在这些行或列中的排列可以是不同的。用户可选择第一表格中的一部分(下文中可被称为输入表格),而不是根据第一表格中的数据手动创建该第二表格。例如,该输入表格可以是第一表格中的特定数量的行和/或特定数量的列。用户然后可提供对应的示例性输出表格。该输出表格可以是对应于用户提供的示例性输入表格,但具有第二格式的表格。换言之,输出表格是具有第二格式的所需第二表格的手动创建的一部分。 
至少部分地基于用户提供的示例性输入表格和示例性输出表格,能够自动生成计算机可执行程序,其中该计算机可执行程序在被应用于示例性输入表格时生成示例性输出表格。一旦生成这样的计算机可执行程序,就可以对上述第一表格执行该计算机可执行程序,其中该第一表格包括相对较大量的数据。随后,具有用户需要的第二格式的第二表格能够通过利用该计算机可执行程序来自动输出。 
根据此处更详细地描述的示例性实施例,计算机可执行程序能够分多个步骤来推断。首先,可分析示例性输入表格和示例性输出表格,并且可生成示例性输入表格的至少一部分和示例性输出表格的一部分之间的候选映射。例如,可定位同时出现在输入表格的单元格和输出表格的单元格中的数据,并且可生成输入表格中的单元格位置和输出表格中的单元格位置之间的候选映射。至少部分地基于这一候选映射,能够推断过滤程序。该过滤程序可包括在输入表格和输出表格之间必须满足的一个或多个预定义规则。这些预定义规则可基于关 于诸如电子表格应用、文字处理应用、数据库应用等特定类型的应用的用户通常采取的表格变换的凭经验收集的数据来生成。过滤程序还可包括指示对应于示例性输出表格中的单元格位置的顺序的定序程序(定序器)。同样,该定序器可以从多个预定义定序器中选择。 
一旦推断出过滤程序,就可利用这一过滤程序来构建关联程序。例如,过滤程序可被配置成基于示例性输入表格的特定部分来生成示例性输出表格的特定部分。然而,这一过滤程序可能无法执行示例性输入表格和示例性输出表格之间的整个变换。因此,这一过滤程序可用于生成被配置成将过滤程序与示例性输出表格的另一部分相关联的关联程序。然后可使用所得关联程序来根据示例性输入表格的另一部分生成示例性输出表格的另一部分。关联程序包括过滤程序和两个相关功能,其中这些相关功能可选自多个预定义相关功能。 
虽然上述示例已经提及电子表格应用作为可执行从第一格式到第二格式的表格变换的应用,但可以理解,这一变换也可由诸如文字处理应用、数据库应用等其他应用来承担。此外,还构想跨应用表格变换。例如,用户可具有文字处理应用中的第一表格并且可能希望将该第一表格变换成电子表格应用中的第二表格。这一通过利用示例的跨应用表格变换被发明人构想到,并且旨在落在所附权利要求书的范围内。 
在阅读并理解了附图和描述后,可以明白其他方面。 
附图说明
图1是方便自动生成可用于将第一格式的第一表格变换成第二格式的第二表格的计算机可执行程序的示例性系统的功能框图。 
图2是至少部分地基于用户提供的示例的第一格式的第一表格到第二格式的第二表格的变换的示例性描绘。 
图3示出了用于生成可将第一格式的表格变换成第二格式的表格的计算机可执行程序的示例性输入表格和示例性输出表格。 
图4是方便生成可用于将第一格式的第一表格变换成第二格式的第二表格的过滤程序的示例性系统的功能框图。 
图5是方便至少部分地基于过滤程序来自动生成关联程序的示例性系统 的功能框图。 
图6是示出执行表格变换以便将第一格式的第一表格变换成第二格式的第二表格的示例性方法的流程图。 
图7是生成可用于将第一格式的第一表格变换成第二格式的第二表格的过滤程序的示例性方法的流程图。 
图8是生成可将第一格式的第一表格变换成第二格式的第二表格的计算机可执行程序的示例性方法的流程图。 
图9是示例性计算系统。 
具体实施例
现在将参考附图来描述涉及通过利用用户提供的示例来将第一格式的第一表格变换成第二格式的第二表格的各种技术,在所有附图中,相同的附图标记指代相同的元素。另外,此处出于解释的目的示出和描述了各示例性系统的若干功能框图。然而,可以理解,被描述为由特定系统组件执行的功能可由多个组件执行。类似地,例如,一组件可被配置成执行被描述为由多个组件执行的功能。另外,如此处所用的,术语“示例性”旨在表示用作某些事物的图示或示例,而不意图指示优选。 
现在参考图1,示出了方便自动将第一格式的第一表格变换成第二格式的第二表格的示例性系统100。系统100包括数据存储102,其中数据存储102例如可以是存储器中被分配给特定应用的特定部分。应用可以是文字处理应用、电子表格应用、数据库应用等。数据存储102包括输入表格104和输出表格106。输入表格104例如可以具有第一格式。如此处所使用的,术语“格式”可指示在表格的单元格中排列数据的方式。由此,第一格式可具有特定数量的行、特定数量的列、和/或在表格中排列数据的特定方式。根据一示例,输入表格104可以是具有第一格式的第一表格的一部分。由此,输入表格104可以是用户从较大的表格(第一表格)中选择的示例性表格。 
输入表格106可以是对应于输入表格、但具有第二格式的手动生成的表格。具体而言,用户可能希望将第一表格变换成第二格式的第二表格,并且系 统100方便通过利用用户提供的示例表格来进行此变换。因此,输出表格106是较大表格(具有第二格式)的示例性子表格(一部分),其中示例性输出表格106对应于示例性输入表格104。 
系统100另外包括接收器组件108,该组件可访问数据存储102并且接收输入表格104和输出表格106。程序生成器组件110与接收器组件108进行通信并且能够自动生成计算机可执行程序,该程序在对输入表格104执行时将输入表格104变换成输出表格106(例如,生成输出表格106)。在对输入表格执行时执行该变换的这一计算机可执行程序此处可被称为可被保存在数据存储102中的表格变换程序112。 
因为表格变换程序112基于第一格式的输入表格104来生成第二格式的输出表格106,所以表格变换程序112可以应用于第一格式的其他表格以生成第二格式的对应表格。如上所述,输入表格104可以是较大表格(第一表格)的子表格。因此,表格变换程序112可以对第一表格执行以生成第二格式(与用户提供的输出表格106相同的格式)的对应的第二表格。因此,系统100方便通过第一格式的较小表格(输入表格104)和第二格式的较小表格(输出表格106)的用户提供的示例来将具有第一格式的相对较大的第一表格变换成具有第二格式的另一相对较大的第二表格。该方法对于没有计算机编程技巧的相对无经验的计算机用户而言是直观的,因为该方法允许用户通知计算机该用户希望执行表格变换而无需该用户通知计算机确切地如何执行这一表格变换。 
在一示例性方面,输入表格104和/或输出表格106可根据电子表格应用来格式化,以使得这些表格出现在电子表格应用中的单元格、行和列中。然而,可以理解,输入表格104或输出表格106中的一个或多个可具有结构化文本的形式,其中诸如空格、分号等特定定界符可指示输入表格104或输出表格106的格式(例如,定界符可指示表格中的单元格位置)。此外,系统100方便跨应用表格变换。因此,用户提供的输入表格104可以来自文字处理应用,而输出表格106可以如所期望的那样被置于电子表格应用中。另外地或另选地,输入表格104或输出表格106中的一个或多个可以来自数据空间应用,以使得用户能够通过利用系统100来转换数据库管理系统中的表格的格式化/视图。 
在一示例性实施例中,诸如台式计算机、膝上型计算机、比如移动电话、 个人数字助理、多媒体播放器等移动计算装置等通用计算设备可包括系统100。用户可利用一个或多个应用的图形用户界面来从第一格式的第一表格中选择子表格作为输入表格104,并且例如使用诸如点击和拖拽、下拉菜单等机制来发起通过利用表格变换程序112的第一表格到第二格式的第二表格的变换。在另一示例性实施例中,服务器可包括系统100,其中利用系统100的应用可由用户经由因特网浏览器来访问。即,远程主存的应用可利用此处描述的系统100的各方面。 
现在参考图2,示出了生成示例性表格变换程序的示例性描绘200。图2示出了示例性输入表格202和示例性输出表格204。示例性输入表格202可以是具有与输入表格202的格式(第一格式)相同的格式的较大表格206(第一表格)的一部分。输出表格204(第二表格)对应于输入表格202,但具有与输入表格202不同的格式。例如,输出表格204中单元格中的数据可包括被包括在输入表格202的单元格中的数据中的至少某一些。在另一示例中,输出表格204中的单元格中的数据可以是输入表格202的单元格中的数据的函数。如上所述,输入表格202和输出表格204是用户提供的示例,其中这些示例如所期望的那样被用来生成表格程序,该程序将第一表格206变换成具有与用户作为示例提供的输出表格204相同的格式的表格。 
程序生成器组件110接收第一格式的输入表格202和第二格式的输出表格204。响应于接收到表格202和204,程序生成器组件110输出表格变换程序112。之后,表格变换程序112接收第一表格206作为输入,其中表格206具有第一格式。表格变换程序112在对第一表格206执行时输出具有第二格式(与用户提供的示例性输出表格204相同的格式)的第二表格208。因此,用户能够通过提供指示第一表格206的格式和第二表格208的想要的格式的示例来相对较容易地使得相对较大的表格被变换成另一格式。 
现在参考图3,提供了示例性输入表格302和示例性输出表格304的图示300。示例性输入表格302具有第一格式。即,示例性输入表格302包括四行和四列。示例性输入表格302的第一列包括接受特定测试的各个人的姓名。示例性输入表格302的第一行指示特定测试的名称(QUAL1、QUAL2、QUAL3)。示例性输入表格302的其余单元格在非空的情况下指示示例性输入表格302的 第一列中的各个人接受示例性输入表格302的第一行中所指示的测试的日期。 
示例性输出表格304包括三列和七行。可以确定,对于示例性输入表格302中的每一个日期,在示例性输出表格304中创建一行,其中输出表格304中的行包括测试接受者的姓名、测试接受者所接受的测试的名称以及接受测试的日期。如果示例性输入表格302中的单元格为空,则不在示例性输出表格304中产生对应的行。此外,可以确定,示例性输出表格304中的日期是按照行优先次序来排序的。 
程序生成器组件110可接收示例性输入表格302和示例性输出表格304,并且可以自动生成可使得输入表格302被变换成输出表格304的计算机可执行程序。另外,这一计算机可执行程序可用于将具有与示例性输入表格302相同的格式的较大表格(第一表格)变换成具有与示例性输出表格304相同的格式的对应表格(第二表格)。图3所示的示例性输入和输出表格302和304在此处将用于解释程序生成器组件110在产生表格变换程序时的操作。 
现在参考图4,示出了方便自动生成表格变换程序112的示例性系统400。在一示例性实施例中,表格变换程序112可以分以下两个步骤推断:1)构建此处被称为“分量程序”的事物的第一步骤,该“分量程序”包括“过滤程序”和“关联程序”,以及2)其中从“分量程序”中构建“关联程序”的第二步骤。过滤程序的构建参考图4描述。另外,出于解释的目的,这一过滤程序的构建结合图3中描绘的示例性输入表格302和示例性输出表格304来提供。然而,可以理解,图3中描绘的示例性表格只是出于解释的目的而呈现的,并非旨在限制所附权利要求书的范围。 
系统400包括数据存储102。同样,在一示例中,数据存储102可以是计算机存储器中被分配给在计算设备上执行的应用的特定部分。系统400还包括可访问数据存储102的程序生成器组件110。程序生成器组件110能够对数据存储102进行读写。 
程序生成器组件110可接收输入表格104和输出表格106,这两个表格是用户结合生成表格变换程序112提供的示例。程序生成器组件110可包括过滤程序推断器组件402。输入表格和输出表格此处可被分别称为Ti和To。过滤程序推断器组件402被配置成至少部分地基于示例性输入表格104和示例性输出 表格106来推断过滤程序。过滤程序此处可被定义为执行以下操作的计算机可执行程序:按某一指定次序(例如,行优先次序)过一遍示例性输入表格104,选择输入表格104的特定单元格中的条目,并且将这些单元格映射到示例性输出表格106中的特定单元格位置。在某些情况下,这可通过要求输入表格104的单元格中的数据与输出表格106的单元格中的数据相同来完成。然而,可以理解,在某些情况下,可能期望将输出表格的单元格中的数据认为是输入表格102的单元格中的数据的函数,诸如对输入表格102中的特定单元格求和、输入单元格102中的数据的乘积,等等。 
为了推断过滤程序,过滤程序推断器组件402可包括候选映射生成器组件404,该组件404被配置成生成输入表格104中的单元格位置和输出表格106中的单元格位置之间的候选映射。数据存储102包括候选映射规则406,候选映射生成器组件404可访问这些规则并且候选映射生成器组件404可利用这些规则来生成输入表格104的至少一部分和输出表格106的至少一个之间的候选映射408。候选映射408然后就是输入表格104中的至少某些单元格位置和输出表格106的至少某些单元格位置之间的映射。候选映射规则406可以是候选映射规则的固定集合,该规则集合基于输入表格和输出表格之间的已知变换模式来创建。候选映射规则406中的每一候选映射规则可产生输入表格104和输出表格106中的单元格位置(坐标)之间的相容映射集。如果在应用于示例性输入表格时映射产生输出表格106的子结构,则该映射可被定义为对于示例性输入表格和示例性输出表格是相容的。由此,候选映射生成器组件404可将数据存储102中的候选映射规则406应用于输入表格,并且将所得映射与输出表格进行比较以确定通过候选映射规则406生成的任何映射是否创建相容映射。相容映射可作为候选映射408被保留在数据存储中。 
候选映射408可满足若干条件。这些条件可包括以下条件:候选映射408将输入坐标(输入表格104中的单元格位置)映射到具有对应数据的输出坐标(输出表格106中的单元格位置)。在一示例中,对应数据可以是输入表格中的单元格位置和输出表格中的单元格位置中的数据之间的等价数据。在另一示例中,对应数据可要求输出表格中的单元格位置中的数据是输入表格中的单元格位置中的数据的函数。该函数可被推断出或者可由用户显式提供。例如,如 果输出表格中的特定数据是对输入表格中的特定数据的求和,则用户可显式指示采取了这一求和。 
对应于候选映射408的另一条件可以是输出表格中的坐标顺序由预定义输出定序器来描述。即,对于某一i、j和k,某一候选规则408可以映射到输出表格106中在行i或在行i之下以及在输出表格106的列j和k之间的每一个坐标。 
候选映射408必须满足的又一条件可以是候选映射408保持某一次序,诸如行优先次序。即,按照输入坐标的行优先次序来排序的候选映射408中的坐标对的顺序可以等于按照输出坐标的行优先次序来排序的条目的顺序。 
过滤程序推断器组件402可至少部分地基于候选映射408来推断过滤程序。过滤程序推断器组件402包括映射条件推断器组件410,该组件410推断过滤程序推断器组件402输出的过滤程序要满足的一个或多个映射条件。更详细地,数据存储102可包括多个判定。这些判定412可以是至少部分地基于诸如文字处理应用、电子表格应用等各种计算应用的用户所需要的观察到的表格变换来生成的基本判定412的固定集合。判定412中的每一个基本判定描述单元格的某一特征。在一示例中,映射条件推断器组件410可推断将被包括在所得过滤程序中的一个或多个映射条件414。 
为了推断计算候选映射408的过滤程序,过滤程序推断器组件402还可推断过滤程序的输出定序器。过滤程序推断器组件402包括顺序推断器组件416,该组件416通过按照所得过滤程序必须映射这些条件的次序对输出表格中的坐标进行排序来推断输出定序器(从输出定序器的预定义列表中)。例如,这些坐标可通过映射到这些单元格的输入表格104中的单元格的行优先排序来如所期望的那样映射。顺序推断器组件416然后可检查输出坐标的经排序的顺序是否匹配来自定序器的某一固定集合的某一输出定序器所描述的输出坐标。如果是,则顺序推断器组件416可选择匹配的定序器。过滤程序推断器组件402然后可推断过滤程序418并且使得这一过滤程序418被保留在数据存储102中,其中过滤程序418是连同顺序推断器组件416推断出的定序器的一个或多个映射条件414。所得过滤程序418可扫描输入表格104的输入坐标,确定输入表格中的单元格是否满足映射条件414,并且按照顺序推断器组件416推断出的 定序器所指示的顺序来为满足映射条件的单元格定序。 
现在描述过滤程序推断器组件402结合图3所示的示例性输入表格302和示例性输出表格304的执行。例如,当且仅当这些坐标处的单元格的值是相等的,示例性候选映射规则406可指示输入表格104中的坐标将被映射到输出表格106的列k中的坐标。该规则可被应用于示例性输出表格304中的每一列k。对于k=3,该规则可生成从输入表格302中的保存日期的每一个坐标到输出表格304中的保存相同日期的坐标的候选映射。作为输入表格302和输出表格304之间的候选映射,该映射mF如下所示: 
m F = ( ( 2,2 ) , ( 1,3 ) ) , ( ( 2,3 ) , ( 2,3 ) ) , ( ( 2,4 ) , ( 3,3 ) ) , ( ( 3,2 ) , ( 4,3 ) ) , ( ( 3,4 ) , ( 5,3 ) ) , ( ( 4,3 ) , ( 6,3 ) ) , ( ( 4,4 ) , ( 7,3 ) )
映射条件推断器组件410可访问候选映射408并且利用贪婪算法来定位一个或多个基本判定412以推断一个或多个映射条件414。映射条件推断器组件410推断出的映射条件必须被候选映射408所映射的每一个输入单元格满足,并且必须不被候选映射408未映射的任何输入单元格满足。可由映射条件推断器组件410利用的示例性判定可包括决定单元格是否在行一中的判定、决定单元格是否为空的判定、以及对于示例性输入表格中的每一个列k的决定单元格是否在列k中的判定。给定这些判定,映射条件推断器组件410可推断结合的映射判定,可以如下:输入表格302中的每一个单元格必须不在行一中,必须不在列1中,并且必须不为空。 
一旦推断出一个或多个映射条件,顺序推断器组件416就可从定序器的固定集合中为过滤程序418推断输出定序器。为了推断定序器,顺序推断器组件416可以按照输入单元格的行优先次序来对通过候选映射408映射到的输出坐标进行排序。以此方式排序的输出坐标形成示例性输出表格304的列3。因此,过滤程序推断器组件402构建过滤程序418,该过滤程序从定序器中计算映射到示例性输出表格304的列3中的坐标,而不是映射到示例性输出表格304的列1或2中坐标的候选映射408。 
现在参考图5,示出了方便生成表格变换程序112的示例性系统500。系统500包括程序生成器组件110,该组件至少部分地基于用户提供的第一格式的输入表格和第二格式的第二表格来推断表格变换程序112。如上所述,程序生成器组件110包括生成过滤程序418并使得过滤程序418被保留在数据存储102中的过滤程序推断器组件402。程序生成器组件110还包括利用过滤程序418来生成关联程序的关联程序构建器组件502。如上所示,过滤程序和关联程序两者在此处都可被称为“分量程序”。如将在此处更详细地描述的,程序生成器组件110可利用关联程序构建器组件502来从其他分量程序中迭代地构建分量程序,直到定位映射到示例性输出表格中的所有单元格的分量程序的集合。现在将提供涉及关联程序构建器组件502的附加细节。 
关联程序构建器组件502可接收过滤程序推断器组件102推断出的过滤程序。至少部分地基于过滤程序418,关联程序构建器组件502可构建关联程序504并使得关联程序504被保留在数据存储102中。如同过滤程序418,关联程序504可将输入表格104中的单元格的坐标映射到输出表格106中的单元格的坐标。关联程序构建器组件502通过利用过滤程序418计算输入表格104和输出表格106中的坐标之间的映射来构建关联程序,并且然后更改所得映射中的每一对坐标以产生新映射。关联程序构建器组件502生成的关联程序504可通过将第一相关函数应用于每一个输入坐标以获取新输入坐标并且然后将另一相关函数应用于每一个输出坐标以获取新输出坐标,来更改过滤程序418计算出的映射。由此,关联程序504可以是应用于过滤程序418的两个相关函数。 
更具体而言,关联程序构建器组件502可访问数据存储102并且可分析多个预定义相关函数506。这些相关函数可以是固定的,并且可基于经常观察到或请求的表格变换来从固定列表中选择来包括。根据一示例,关联程序构建器组件502能够贪婪地将列表中的所有相关函数506应用于过滤程序418以生成多个关联程序(包括关联程序504)。关联程序构建器组件502然后可使得关联程序504生成计算出的映射508。计算出的映射508可以与示例性输出表格106中的输出单元格进行比较,并且如果计算出的映射508对应于输出单元格,则用于生成计算出的映射508的关联程序504可作为分量程序510被保留在数据存储102中。如果关联程序504未能生成适当地映射到示例性输出表格106 的输出单元格的计算出的映射508,则可丢弃关联程序504。 
之后,关联程序构建器502可接收分量程序510作为输入,并且可将相关函数应用于分量程序以创建新分量程序,并且使得新分量程序生成新计算出的映射。新计算出的映射然后可以与示例性输出表格106中的单元格进行比较,并且如果新计算出的映射是相容的(如上所定义的)并且覆盖示例性输出表格106中未被另一分量程序生成的另一映射覆盖的部分,则保留这一新分量程序。程序生成器组件110通过收集覆盖输出表格106的不同部分的分量程序直到分量程序的集合将示例性输入表格104完整地映射到示例性输出表格106,来创建表格变换程序112。所得表格变换程序112可用于将具有与输入表格104相同的格式的其他表格变换成具有与输出表格106相同的格式的其他表格。例如,表格变换程序112可被保留为模板,以使得该模板可以在稍后时刻用来将第一格式的另一表格变换成第二格式的表格。 
回头参考图3所示的示例性输入表格302和示例性输出表格304以及上文示出的示例性候选映射mF,将描述关联程序构建器组件502的执行。示例性第一关联程序A1在应用于候选映射mF时能够通过将计算输入表格302的同一行和列一中坐标的相关函数RELCOL1应用于这些坐标中的每一个,来更改候选映射mF的输入坐标(输入表格302的坐标)。关联程序还可通过对每一个输出坐标应用相关函数RELCOL1来更改候选映射mF的输出坐标。从被应用于mF的的相关函数中生成的所得映射mA1将输入表格的列一中的坐标映射到将在输出表格的列一中产生的单元格的坐标,如下所示: 
m A 1 = ( ( 2,1 ) , ( 1,1 ) ) , ( ( 2,1 ) , ( 2,1 ) ) , ( ( 2,1 ) , ( 3,1 ) ) , ( ( 3,1 ) , ( 4,1 ) ) , ( ( 3,1 ) , ( 5,1 ) ) , ( ( 4,1 ) , ( 6,1 ) ) , ( ( 4,1 ) , ( 7,1 ) )
例如,第二关联程序A2可将输入表格的某一部分映射到将在输出表格304的列二中的所有单元格。如同上述第一关联程序A1,第二关联程序A2首先使用过滤程序来计算候选映射mF。第二关联程序A2然后通过应用计算同一列,但在行一中的坐标的相关函数(RELROW1)来更改候选映射mF中的每一个输入坐标。第二关联程序A2通过应用相关函数RELCOL2来更改候选映射mF中 的每一个输出坐标,其中RELCOL2与RELCOL1类似地定义。所得映射mA2将输入表格302的行一中的坐标映射到将在输出表格304的列2中产生的单元格的坐标。 
m A 2 = ( ( 1,2 ) , ( 1,2 ) ) , ( ( 1,3 ) , ( 2,2 ) ) , ( ( 1,4 ) , ( 3,2 ) ) , ( ( 1,2 ) , ( 4,2 ) ) , ( ( 1,4 ) , ( 5,2 ) ) , ( ( 1,3 ) , ( 6,2 ) ) , ( ( 1,4 ) , ( 7,2 ) )
因此,该示例中的表格变换程序112可以从过滤程序418和两个关联程序中构建,其中过滤程序418被用来构建这些关联程序。具体而言,第一关联程序可通过组合过滤程序418(F)和相关函数RELCOL1以构建关联程序(F,RELCOL1,RELCOL1)来构建。该关联程序与示例输入和输出表格302和304相容,从而使得程序生成器组件110能够保留该关联程序作为分量程序。类似地,程序生成器组件110可通过组合过滤程序418和相关函数RELROW1和RELCOL2以构建关联程序(F,RELROW1,RELCOL2)来找到第二关联函数。该关联函数也与示例输入和输出表格302和304相容,以使得第二关联函数可被保留为分量程序。 
程序生成器组件110可构建其他关联程序,诸如上述关联程序。然而,程序生成器组件110可确定这些关联程序与示例性输入和输出表格302和304不相容,并由此不将其保留为分量程序。 
现在描述可用于生成表格变换程序112的示例性语言。首先将描述这一语言的句法,之后用这一语言的程序的语义可被描述为从输入表格到输出表格的函数。 
以下句法呈现可用于生成表格变换程序112的语言的示例性形式句法: 
TableProg:=TABPROG(CompProg1,...,CompProgn
CompProg:=FilterProg|AssocProg 
FilterProg:=FILTER(MapCond,SEQi,j,k
MapCond:=AND(MapPred1,MapPred2,...,MapPredn
MapPred:=ROWEQ(TERM1,TERM2)|COLEQ(TERM1,TERM2
|DATAEQ(TERM1,TERM2)|NOT(MapPred) 
AssocProg:=ASSOC(CompProg,RelFunc1,RelFunc2
RelFunc:=RELCOLi|RELROWi
表格程序(TableProg)是分量程序(CompProg)的集合。分量程序是过滤程序(FilterProg)或关联程序(AssocProg)。过滤程序过一遍输入表格。在此期间,过滤程序从输入表格中选择特定单元格并且将其映射到输出表格的子结构。这反映在过滤程序的句法中,如下:过滤程序包括对于过滤程序(MapCond)和输出坐标定序器(SEQi,j,k)的状态的映射条件。该映射条件选择将哪些输入坐标映射到输出表格,并且输出坐标定序器定义所选输入单元格映射到的输入坐标。映射条件是单元格判定(MapPred)的结合。每一单元格判定是对单元格term的相等性或不相等性判定。具体而言,单元格判定是对于单元格TERM中的行、列或数据的相等性判定。单元格TERM是绑定到特定单元格(诸如过滤程序正在检查的输入单元格)的变量或恒定的单元格值。 
关联程序AssocProg从分量程序CompProg和两个相关函数RelFunc1和RelFunc2中构建。相关函数可以是RELCOLi或RELROWi,其中i是固定自然数。 
现在将描述示例性语言的语义。示例性语义可以在以下列表中定义: 
[ TABPROG ( { C i } ) ] = λT I . ( c 2 , d ) | ( c 1 , d ) ∈ T I , ( c 1 , c 2 ) ∈ ∪ i { [ C i ] ( T I ) }
[FILTER(G,S)]=λTI.FilterIterG,S(InitState) 
[ ROWEQ ( T 1 , T 2 ) ] = λσ . λ ( ( r 1 , c 2 ) , d 1 ) , ( ( r 2 , c 2 ) , d 2 ) . r 1 = r 2 ( σ ( T 1 ) , σ ( T 2 ) )
[ SEQ i , j , k ] = &lambda; ( r , c ) . if r < i then ( i , j ) else if c < j then ( r , c + 1 ) else ( r + 1 , j )
[ ASSOC ( C , R 1 , R 2 ) ] = &lambda; T I . ( [ R 1 ] ( r 1 , c 1 ) , [ R 2 ] ( r 2 , c 2 ) ) | ( ( r 1 , c 1 ) , ( r 2 , c 2 ) ) &Element; [ C ] ( T I )
[RELCOLi]=λ(r,e)(r,i) 
[RELROWi]=λ(r,c).(i,c) 
IterUpdate S ( &sigma; ) = &sigma; CurIn &LeftArrow; NextInCoord ( &sigma; ) , CourOut &LeftArrow; [ S ] ( &sigma; )
上述示例性语言的语义可由将该语言的句法形式解释为语义值的语义函数[[.]]来定义。语义值的域可如下定义:cell((r,c),d) 可以是从坐标(r,c)和数据串d中构建的经排序的对。表格T可以是单元格的集合,并且表格程序(表格变换程序)P=TABPROG({Ci}i)是从一表格到一表格的函数。每一分量程序Gi可被解释为从输入表格中的单元格的坐标到将在输出表格中产生的单元格的坐标的部分映射。对于输入表格中的每一个单元格((r,c),d)((r,c)是某一映射[[Ci]]的域中的坐标),P产生输出表格中的单元格([[Ci]](r,c),d)。 
每一分量程序是过滤程序或关联程序。过滤程序FILTER(G,S)可被解释为取得输入表格并且将该输入表格中的一些单元格的坐标映射到输出表格中产生的单元格的坐标的函数。该过滤程序通过以诸如行优先次序等固定次序检查输入表格中的每一个单元格来映射到输出坐标。在上述示例性语义中,该次序由以下各项来定义:定义第一输入单元格的坐标(例如,行优先次序中的(0,0)) 的恒定InitState、决定坐标是否是次序中的最后一个的判定IsLastCell、以及从输入坐标到输入坐标的取得输入坐标并计算次序中的下一坐标的函数NextInCoord。在过滤程序检查输入单元格时,它维护状态σ,该状态σ通过将单元格绑定到对应变量来区分特定关键单元格,诸如当前输入单元格(CurIn)和当前输出单元格(CurOut)。在过滤程序检查输入表格的每一个单元格时,它更新σ以使得变量CurIn指向将要检查的单元格。过滤程序然后检查σ是否满足该过滤器的映射条件G=AND([Li}i)。当且仅当满足每一文字Li,状态σ满足G。每一文字的语义是标准的-上述示例性语义给出判定ROWEQ(TERM1,TERM2)的语义作为示例。σ是否满足判定由诸如变量CurIn和CurOut等单元格term的σ中的值来决定。如果σ满足映射条件G,则过滤程序将被绑定到CurIn的当前输入坐标映射到被绑定到CurOut的当前输出坐标。 
如果过滤程序映射当前输入坐标,则它根据过滤程序的输出定序器S来更新当前输出单元格的坐标。只要应用输出定序器S=SEQi,j,k,它就将当前输出坐标更新为输出表格中的按照行优先次序的在行i或在行i之下并且在列j和k之间的下一坐标。因为j和k是固定的,所以这一定序器可由过滤程序应用来产生具有不限数量的行的列,但它无法被应用于产生不限数量的列。 
如同过滤程序,关联程序A=ASSOC(C,R1,R2)将输入表格中的坐标映射到将在输出表格中产生的单元格的坐标。关联程序A通过首先计算其分量程序C的映射mC来映射坐标。从mC中,A通过对mC中的每一个输入坐标应用相关函数R1并且通过对mC中的每一个输出坐标应用相关函数R2来计算其自己的映射。相关函数RELROWi取得坐标并且计算同一行,但在列i中的坐标,其中i是固定常量。相关函数RELROWi取得坐标并计算同一列中但在行i中的坐标。以此方式,关联程序A通过更改分量程序C的坐标映射来计算坐标映射。 
出于解释的目的,可用于将示例性输入表格302变换成示例性输出表格304的表格变换程序在下文中示出。在该示例中,CONSTCELLCOL(n)可以是在列n处的单元格,CONSTCELLROW(n)可以是在行n处的单元格,而CONSCELLDATA(d)可以是具有数据d的单元格。因此, 
F=FILTER(G,SEQ1,3,3
于是,表格程序是: 
TABPROG F , ASSOC ( F , RELCOL 1 , RELCOL 1 ) , ASSOC ( F , RELROW 0 , RELCOL 2 )
现在将描述可用于推断如上所述的表格变换程序112的示例性算法。该算法在此处呈现。可以理解,该算法是示例性的,并且并非旨在限制权利要求的范围。 
以上程序在此处可被称为ProgFromEx。给定示例性输入和输出表格, ProgFromEx推断满足这些示例的TableProg程序。该示例性算法按照“自底向上”推断表格变换程序,这表现在它收集可以组合以形成表格程序的分量程序的集合。如果ProgFromEx找到形成满足示例的表格程序的分量程序的集合,则ProgFromEx返回表格程序。如果ProgFromEx无法找到这一表格程序,则ProgFromEx向用户提供没有分量程序映射到的输出表格的子结构。 
如上所示,ProgFromEx从用户处取得示例性输入表格TI和示例性输出表格TO。ProgFromEx还针对以下三个固定对象集来定义:候选映射规则的集合CandRule、输出顺序的集合Sequencer、以及相关函数的集合RelativeFunc。这些集合是固定的,或许由专家级用户或管理员来配置。 
ProgFromEx可被配置成找到满足上述2个步骤中的示例的表格程序:1)ProgFromEx收集映射到TO的子结构的过滤程序的集合(上述算法的1-6行)。为了找到这些过滤程序的集合,ProgFromEx应用CollectFilters(行1),CollectFilters首先通过应用候选映射规则CandRule来在示例性表格上收集候选映射的集合。 
对于CandRule生成的每一个候选映射CandMap,ProgFromEx尝试推断计算CandMap的过滤程序(行2-4)。为了推断这一过滤程序,ProgFromEx推断映射条件(行2)并输出定序器(行3)。为了推断映射条件,ProgFromEx应用CondFromMap,CondFromMap在它读取并且可能映射示例性输入表格中的每一个单元格时计算假设过滤程序的状态。如果在给定状态中过滤程序读取由候选映射映射到的单元格,则该状态可被称为过滤程序的读取状态。对于读取状态的集合RS,CondFromMap可构造以下条件: 
G = AND ( &cap; &sigma; &Element; RS { l | p &Element; StatePreds , l &Element; { p , NOT ( p ) } , l ( &sigma; ) } )
其中l(σ)表示在σ中满足文字l。G是所有读取状态满足的最强条件。CondFromMap然后检查任何非读取状态是否满足G。如果是,则没有来自StatePred的文字的结合可担当来自CandMap的映射条件。如果否,则G担当CandMap的映射条件。对于CandMap,ProgFromEx能够相对直接地推断输出候选定序器OutCoordSeq(行3)。ProgFromEx然后组合映射条件MapCond 和定序器OutCoordSeq以构建计算的过滤程序(行4)。 
在步骤2)(行7-18)中,ProgFromEx使用在步骤1)中找到的过滤程序来构建关联程序直到ProgFromEx可使用过滤和关联程序的集合来构建满足TI和TO的表格程序,或者ProgFromEx确定不存在这样的表格程序。ProgFromEx如下迭代地构建关联程序:对于行9处的循环的每一次迭代,ProgFromEx维护它将用来构建更多关联程序的分量程序的工作列表(Worklist),以及已经从中构建关联程序的分量程序的集合(Comp)。在第一次迭代开始时,Worklist被初始化为在步骤1中找到的所有过滤程序(行8),并且Comp被初始化为空(行7)。 
ProgFromEx如下执行步骤2)的迭代:首先,ProgFromEx从其工作列表中选择元素CompProg(行10)。ProgFromEx然后从CompProg中构建关联程序。关联程序包括分量程序和一对相关函数。由此,为了从分量程序CompProg中构建关联程序,ProgFromEx在所有相关函数对上进行枚举(行12)。对于相关函数RelFunc1和RelFunc2,ProgFromEx构建对应的关联程序AssocProg(行13)。ProgFromEx然后决定AssocProg是否计算对于TI和TO是相容的映射(行14)。如果是,并且如果AssocProg计算出的映射并非由Comp或Worklist中的任何分量程序计算,则ProgFromEx将AssocProg添加到(行15)。 
ProgFromEx迭代地构建关联程序直到它确定它已经找到映射到TO中的所有单元格的分量程序的集合(例如,覆盖TO的集合),或者它无法找到这样的分量程序的集合(行9)。为了检查分量程序的集合是否覆盖TO,ProgFromEx检查TO中的每一候选c是否由该集合中的某一分量程序映射到。如果ProgFromEx找到这样的集合,则它从该集合中构建表格程序并且返回表格程序(行20)。否则,它返回没有分量程序映射到的输出单元格的集合(行22)。用户可检查输出单元格以理解为何ProgFromEx无法推断满足示例的程序,或许找出所提供的示例性输入表格和输出表格中的错误或噪声。 
如本领域的普通技术人员可以理解的,程序生成器组件110可执行上述算法或其他合适的算法以如此处所描述的那样变换表格。在某些情况下,用户提供的示例性输入和输出表格可能包括不足以推断如此处所描述的表格变换程序的数据。在一示例性实施例中,程序生成器组件110能够就用户在变换期间 的特定需求主动向用户进行请求或查询。基于对这些查询的回答,程序生成器组件110可定位或推断满足用户要求的表格变换程序112。 
在一替换实施例中,程序生成器组件110可应用懒惰方法。在一懒惰方法中,程序生成器组件110可以从用户接收示例性输入和输出表格并且推断满足这些示例的程序。用户然后可对其他输入应用推断出的程序。对于另一输入,如果该程序产生用户不期望的输出,则该用户可以向程序生成器组件110提供输入表格和所期望的输出表格作为示例性输入和输出表格,并且程序生成器组件110可推断满足原始和新示例的新程序。用户可重复该过程直到程序生成器组件110提供对于其应用于的输入如用户所期望的那样操作的程序。不像基于查询动作的方法,懒惰方法不保证程序生成器组件110推断对于所有输入都正确的程序。然而,实际上,已经观察到用户不需要对任意输入表格应用表格变换程序。的确,用户应用表格变换程序以设置全部满足强先决条件的表格。要求用户指定该先决条件之外的表格的程序行为是不必要的,并且经常导致用户拒绝使用这一技术。 
现在将描述程序生成器组件110的两个扩展。如果用户对示例性输入和输出表格应用系统100,获取程序并且发现该程序对不同的输入表格不正确地操作,则该用户可提供另一输入表格以及对应的正确的输出表格作为用于程序生成器组件110的另一示例。程序生成器组件110然后可生成更好地满足用户要求的新表格变换程序。如果第二输入表格扩展第一输入表格,则用户可以将应用程序生成器组件110单独应用于该第二输入表格。然而,即使示例性输入表格是不兼容的,程序生成器组件110也可被扩展成同时从用户取得多个示例。为了取得多个示例,程序生成器组件110,如在上文示出的算法中实现的,被扩展成定位对于多个示例的集合是相容的过滤程序和关联程序。为了找到对于所有示例都是相容的过滤程序,行1-6处的循环可被改为在包括对应于每一个示例的候选映射所有元组的空间上进行枚举。对于候选映射的每一元组,程序生成器组件110可尝试推断恰好对每一候选映射所映射的单元格进行分类的映射条件,以及描述在每一候选映射中映射到的输出单元格的顺序的输出候选定序器。为了找到对于所有示例都是相容的关联程序,上述算法的行14处的检查可被扩展成确定关联程序是否与每一示例相容。最后,行9和19处的检查 可被扩展以使得程序生成器组件110只在它找到映射到用户提供的所有示例性输出表格中的每一个单元格的分量程序的集合时才确定它已经找到令人满意的表格程序。 
程序生成器组件110还可被扩展以使其从一单个示例中推断实际上更有可能在被应用于其他表格时如所期望的那样操作的程序。上述算法的步骤二可以在ProgFromEx找到映射到示例性输出表格中的所有单元格的分量程序的集合时停止。然而,所得集合可包括冗余的多个分量程序,因为较小的程序集合仍将映射到相同的单元格。实际上,形成表格程序的分量程序越多,表格程序越有可能在应用于其他表格时不正确地工作。由此,ProgFromEx可被扩展以使得在行20处这一算法不一定从它找到的所有分量程序中构建表格变换程序。的确,ProgFromEx能够首先应用贪婪算法以剪除在仍旧映射到示例性输出表格中的所有单元格,但在局部最小的集合中找到的所有分量程序的集合。所得程序直观上比原始程序更简单,并且实际上对较大的输入示例更多地如所期望的那样操作。 
现在参考图6-8,示出并描述了各种示例性方法。尽管各方法被描述为顺序地执行的一系列动作,但可以理解,这些方法不受该顺序的次序的限制。例如,一些动作能以与本文描述的不同的次序发生。另外,动作可以与另一动作同时发生。此外,在一些情况下,实现本文描述的方法并不需要所有动作。 
此外,本文描述的动作可以是可由一个或多个处理器实现的和/或存储在一个或多个计算机可读介质中计算机可执行指令。计算机可执行指令可包括例程、子例程、程序、执行的线程等。另外,这些方法的动作的结果可以存储在计算机可读介质中,显示在显示设备上,等等。计算机可读介质可以是非瞬时介质、诸如存储器、硬盘驱动器、CD、DVD、闪存驱动器等。 
现在参考图6,示出了方便生成表格变换程序的方法600。方法600开始于602,并且在604,接收具有第一格式的示例性输入表格。该输入表格可以在计算设备处接收,并且该输入表格可包括至少一行和至少一列。 
在606,在计算设备处接收具有第二格式的示例性输出表格。该第二格式不同于第一格式,并且示例性输出表格包括至少一行和至少一列。 
在608,自动推断表格变换程序,其中表格变换程序将输入表格变换成输 出表格。表格变换程序至少部分地基于输入表格的格式和输出表格的格式来推断。此外,表格变换程序是在对输入表格执行时生成输出表格的计算机可执行程序。 
在610,接收具有第一格式的第一表格。例如,输入表格可以是第一表格的一部分以使得该第一表格比输入表格大得多。在612,对第一表格执行在608处自动推断出的表格变换程序以使得第一表格被变换成具有第二格式的第二表格。因此,如可以从上文中了解的,用户可提供示例输入表格和示例输出表格并且之后可使得具有与示例输入表格相同的格式的另一表格被变换成具有与该用户提供的示例性输出表格相同的格式的另一表格。方法600在614完成。 
现在参考图7,示出了方便输出至少一个映射条件和定序器以生成过滤程序的示例性方法700。方法700开始于702,并且在704,从用户接收具有第一格式的输入表格,如上所述。该输入表格可以是将如所期望的那样从第一格式变换成第二格式的第一表格的一部分。 
在706,接收具有第二格式的输出表格。同样,该输出表格可以是对应于输入表格的示例性表格。 
在708,生成输入表格和输出表格之间的候选映射,其中该候选映射至少部分地基于应用于输入表格的一个或多个候选映射规则以及输出表格的内容来生成。这些候选映射规则可选自候选映射规则的预定义集合,并且候选映射是相容的,其中输入表格的一部分通过候选映射来映射到输出表格的一部分。 
在710,至少部分地基于候选映射来推断至少一个映射条件。如上所述,该至少一个映射条件可选自基本判定的预定义集合,以使得在映射条件被应用于输入表格中的坐标时,这一映射条件使得当且仅当该坐标存在于候选映射中才选择该坐标。 
在712,推断根据输入表格的单元格来正确地对输出表格中的单元格进行排序的定序器。该定序器可以从预定义的定序器集合中推断。 
在714,输出至少一个映射条件和至少一个定序器作为过滤程序。方法700在716完成。 
现在转向图8,示出了方便构建表格变换程序的示例性方法800。方法800开始于802,并且在804接收分量程序。该分量程序可以是过滤程序和/或关联 程序。因此,分量程序可以基于其他先前构建的分量程序来构建。 
在806,接收来自相关函数的固定集合的一对相关函数。这些相关函数可以与接收到的分量程序一起应用以生成输入表格的至少一部分和输出表格的至少一部分之间的新映射。在808,至少部分地基于在804接收到的分量程序和在806接收到的相关函数对来构建另一分量程序。在810,确定表格变换程序是否完成。即,确定迄今构建的所有分量程序的集合在应用于输入表格时是否创建输出表格。如果表格变换程序未完成,则该方法返回到804,在那里接收另一分量程序(例如,在808构建的分量程序)。如果表格程序完成,则该方法继续至812,在那里输出表格变换程序。表格变换程序可以对具有与示例性输入表格相同的格式的表格执行。方法800在814完成。 
现在参考图9,示出了可以根据本文公开的系统和方法使用的示例性计算设备900的高级图示。例如,计算设备900可以在支持推断至少部分地基于用户提供的示例的表格变换程序的系统中使用。在另一示例中,计算设备900可以在支持保留这一表格变换程序作为模板的系统中使用。计算设备900包括执行存储在存储器904中的指令的至少一个处理器902。存储器904可以是或可以包括RAM、ROM、EEPROM、闪存、或其它适合的存储器。这些指令可以是例如用于实现被描述为由上述一个或多个组件执行的功能的指令或用于实现上述一个或多个方法中的指令。处理器902可以通过系统总线906访问存储器904。除了存储可执行指令,存储器904还可存储表格、过滤程序、关联程序等。 
计算设备900还包括可由处理器902通过系统总线906访问的数据存储908。数据存储908可以是或可以包括任何合适的计算机可读存储,包括硬盘、存储器等。数据存储908可以是或包括可执行指令、示例性输入表格、示例性输出表格等。计算设备900还包括允许外部设备与计算设备900进行通信的输入接口910。例如,可以使用输入接口910来从外部计算机设备、用户等接收指令。计算设备900还包括将计算设备900与一个或多个外部设备进行接口的输出接口912。例如,计算设备900可以通过输出接口912显示文本、图像等。 
另外,尽管被示为单个系统,但可以理解,计算设备900可以是分布式系统。因此,例如,若干设备可以通过网络连接进行通信并且可共同执行被描述 为由计算设备900执行的任务。 
如此处所使用的,术语“组件”和“系统”旨在涵盖硬件、软件、或硬件和软件的组合。因此,例如,系统或组件可以是进程、在处理器上执行的进程、或处理器。另外,组件或系统可以位于单个设备上或分布在若干设备之间。此外,组件或系统可指存储器的一部分和/或一系列晶体管。 
注意,出于解释目的提供了若干示例。这些示例不应被解释为限制所附权利要求书。另外,可以认识到,本文提供的示例可被改变而仍然落入权利要求的范围内。 

Claims (8)

1.一种用于变换表格的方法,包括:
在计算设备处接收输入表格,其中所述输入表格包括至少一行和至少一列,并且其中所述输入表格具有第一格式;
在所述计算设备处接收输出表格,其中所述输出表格包括至少一行和至少一列,并且其中所述输出表格具有不同于所述第一格式的第二格式;
至少部分地基于所述输入表格的第一格式和所述输出表格的第二格式来自动推断使得所述输入表格被变换成所述输出表格的计算机可执行程序;
接收具有所述第一格式的第一表格;以及
对所述第一表格执行所述计算机可执行程序,其中对所述第一表格执行所述计算机可执行程序使得所述第一表格被变换成第二表格,其中所述第二表格具有所述第二格式。
2.如权利要求1所述的方法,其特征在于,所述方法被配置成在计算机可执行电子表格应用中执行。
3.如权利要求1所述的方法,其特征在于,所述输入表格是所述第一表格的一部分,而所述输出表格是所述第二表格的一部分。
4.如权利要求1所述的方法,其特征在于,所述输入表格是从计算机实现的文字处理应用处接收到的,并且其中所述输入表格是包括标识表格单元格、行和列的定界符的结构化文本。
5.如权利要求4所述的方法,其特征在于,所述输出表格是从计算机实现的电子表格应用处接收到的,并且其中所述第二表格被输出到所述计算机实现的电子表格应用。
6.如权利要求1所述的方法,其特征在于,自动推断所述计算机可执行算法包括:
定位所述输入表格中在所述输出表格中具有对应单元格的条目;
至少部分地基于位于所述输入表格中的、在所述输出表格中具有对应单元格的单元格来生成所述输入表格的一部分和所述输出表格的一部分之间的候选映射,其中所述候选映射指示所述输入表格中的对应于所述输出表格中的单元格位置的单元格位置,并且其中所述计算机可执行算法是至少部分地基于所述候选映射被自动推断的。
7.一种用于表格变换的系统,包括:
用于在计算设备处接收输入表格的装置,其中所述输入表格包括至少一行和至少一列,并且其中所述输入表格具有第一格式;
用于在所述计算设备处接收输出表格的装置,其中所述输出表格包括至少一行和至少一列,并且其中所述输出表格具有不同于所述第一格式的第二格式;
用于至少部分地基于所述输入表格的第一格式和所述输出表格的第二格式来自动推断使得所述输入表格被变换成所述输出表格的计算机可执行程序的装置;
用于接收具有所述第一格式的第一表格的装置;以及
用于对所述第一表格执行所述计算机可执行程序的装置,其中对所述第一表格执行所述计算机可执行程序使得所述第一表格被变换成第二表格,其中所述第二表格具有所述第二格式。
8.如权利要求7所述的系统,其特征在于,所述输入表格是所述第一表格的一部分,而所述输出表格是所述第二表格的一部分。
CN201210020482.8A 2011-01-27 2012-01-29 用于根据示例的自动化表格变换的方法和系统 Active CN102622335B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/014,734 US8484550B2 (en) 2011-01-27 2011-01-27 Automated table transformations from examples
US13/014,734 2011-01-27

Publications (2)

Publication Number Publication Date
CN102622335A CN102622335A (zh) 2012-08-01
CN102622335B true CN102622335B (zh) 2015-04-08

Family

ID=46562258

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210020482.8A Active CN102622335B (zh) 2011-01-27 2012-01-29 用于根据示例的自动化表格变换的方法和系统

Country Status (2)

Country Link
US (3) US8484550B2 (zh)
CN (1) CN102622335B (zh)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11410129B2 (en) 2010-05-01 2022-08-09 Monday.com Ltd. Digital processing systems and methods for two-way syncing with third party applications in collaborative work systems
WO2021161104A1 (en) 2020-02-12 2021-08-19 Monday.Com Enhanced display features in collaborative network systems, methods, and devices
US8484550B2 (en) 2011-01-27 2013-07-09 Microsoft Corporation Automated table transformations from examples
US9002758B2 (en) * 2012-10-17 2015-04-07 Microsoft Technology Licensing, Llc Ranking for inductive synthesis of string transformations
US9031894B2 (en) * 2013-02-19 2015-05-12 Microsoft Technology Licensing, Llc Parsing and rendering structured images
US9460073B2 (en) 2013-02-27 2016-10-04 Google Inc. Systems and methods for mutations and operational transforms in a collaborative spreadsheet environment
US9864739B1 (en) * 2013-03-13 2018-01-09 EMC IP Holding Company LLC Automatic layout of graphical user interface screens from object data
US9317182B2 (en) 2013-04-11 2016-04-19 Apple Inc. Pop-up menu interface
US20150095312A1 (en) * 2013-10-02 2015-04-02 Microsoft Corporation Extracting relational data from semi-structured spreadsheets
US9613113B2 (en) * 2014-03-31 2017-04-04 International Business Machines Corporation Parallel bootstrap aggregating in a data warehouse appliance
US10824799B2 (en) * 2014-06-30 2020-11-03 Microsoft Technology Licensing, Llc Summary data autofill
US11372830B2 (en) 2016-10-24 2022-06-28 Microsoft Technology Licensing, Llc Interactive splitting of a column into multiple columns
US11496435B2 (en) * 2016-10-28 2022-11-08 The Nielsen Company (Us), Llc Systems, methods, and apparatus to facilitate mapping a device name to a hardware address
US10599627B2 (en) 2017-02-27 2020-03-24 Microsoft Technology Licensing, Llc Automatically converting spreadsheet tables to relational tables
US11436359B2 (en) 2018-07-04 2022-09-06 Monday.com Ltd. System and method for managing permissions of users for a single data type column-oriented data structure
US11698890B2 (en) 2018-07-04 2023-07-11 Monday.com Ltd. System and method for generating a column-oriented data structure repository for columns of single data types
CN109117466B (zh) * 2018-07-26 2020-09-29 腾讯科技(深圳)有限公司 表格格式转换方法、装置、设备及存储介质
CN109726379B (zh) * 2018-12-28 2023-01-10 腾讯科技(深圳)有限公司 内容项编辑方法、装置、电子设备及存储介质
US11321134B2 (en) * 2019-05-31 2022-05-03 Apple Inc. Normalizing target utilization rates of a cross-application table of concurrently executing applications to schedule work on a command queue of a graphics processors
WO2020252695A1 (en) * 2019-06-19 2020-12-24 Motorola Solutions, Inc. Form field highlighting and rearrangement based on incident identification and location
US11036478B2 (en) * 2019-08-07 2021-06-15 Sap Se Automated determination of transformation objects
CN110728123B (zh) * 2019-10-14 2023-12-26 金蝶软件(中国)有限公司 一种报表生成方法、系统及相关设备
EP4062313A1 (en) * 2019-11-18 2022-09-28 Monday.com Ltd. Collaborative networking systems, methods, and devices
US11526661B2 (en) 2019-11-18 2022-12-13 Monday.com Ltd. Digital processing systems and methods for integrated communications module in tables of collaborative work systems
US11074048B1 (en) 2020-04-28 2021-07-27 Microsoft Technology Licensing, Llc Autosynthesized sublanguage snippet presentation
US11501255B2 (en) 2020-05-01 2022-11-15 Monday.com Ltd. Digital processing systems and methods for virtual file-based electronic white board in collaborative work systems
US11829953B1 (en) 2020-05-01 2023-11-28 Monday.com Ltd. Digital processing systems and methods for managing sprints using linked electronic boards
US11277361B2 (en) 2020-05-03 2022-03-15 Monday.com Ltd. Digital processing systems and methods for variable hang-time for social layer messages in collaborative work systems
US11327728B2 (en) * 2020-05-07 2022-05-10 Microsoft Technology Licensing, Llc Source code text replacement by example
US11900080B2 (en) 2020-07-09 2024-02-13 Microsoft Technology Licensing, Llc Software development autocreated suggestion provenance
CN111881661B (zh) * 2020-07-30 2022-09-16 平安国际智慧城市科技股份有限公司 基于电子表格的数据处理方法、装置、设备及存储介质
US11347483B2 (en) * 2020-10-13 2022-05-31 Adp, Inc. Linking stages in process flows with machine learning
CN112668288A (zh) * 2020-12-24 2021-04-16 江苏省送变电有限公司 一种继电保护装置定值校核仪智能提取定值单项的方法
US11782582B2 (en) 2021-01-14 2023-10-10 Monday.com Ltd. Digital processing systems and methods for detectable codes in presentation enabling targeted feedback in collaborative work systems
US11941372B2 (en) 2021-04-01 2024-03-26 Microsoft Technology Licensing, Llc Edit automation using an anchor target list
US11875136B2 (en) 2021-04-01 2024-01-16 Microsoft Technology Licensing, Llc Edit automation using a temporal edit pattern
US20230229850A1 (en) * 2022-01-14 2023-07-20 Microsoft Technology Licensing, Llc Smart tabular paste from a clipboard buffer
US11741071B1 (en) 2022-12-28 2023-08-29 Monday.com Ltd. Digital processing systems and methods for navigating and viewing displayed content
US11886683B1 (en) 2022-12-30 2024-01-30 Monday.com Ltd Digital processing systems and methods for presenting board graphics
US11893381B1 (en) 2023-02-21 2024-02-06 Monday.com Ltd Digital processing systems and methods for reducing file bundle sizes

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101055566A (zh) * 2007-05-25 2007-10-17 金蝶软件(中国)有限公司 一种电子数据表的函数收集方法和装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7143026B2 (en) 2002-12-12 2006-11-28 International Business Machines Corporation Generating rules to convert HTML tables to prose
US7493392B1 (en) * 2002-12-20 2009-02-17 Cypress Semiconductor Corporation Method and apparatus for assembly of virtually concatenated data
US20040237051A1 (en) * 2003-05-23 2004-11-25 Clauson Todd A. Dynamic menu reordering
US7805341B2 (en) * 2004-04-13 2010-09-28 Microsoft Corporation Extraction, transformation and loading designer module of a computerized financial system
US7584422B2 (en) 2004-07-12 2009-09-01 Informatica Corporation System and method for data format transformation
US20080208830A1 (en) 2007-02-27 2008-08-28 Ql2 Software, Inc. Automated transformation of structured and unstructured content
US8103951B2 (en) * 2008-09-30 2012-01-24 Apple Inc. Dynamic schema creation
US8484550B2 (en) 2011-01-27 2013-07-09 Microsoft Corporation Automated table transformations from examples

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101055566A (zh) * 2007-05-25 2007-10-17 金蝶软件(中国)有限公司 一种电子数据表的函数收集方法和装置

Also Published As

Publication number Publication date
US20120198322A1 (en) 2012-08-02
US10108597B2 (en) 2018-10-23
CN102622335A (zh) 2012-08-01
US20160350276A1 (en) 2016-12-01
US20130275847A1 (en) 2013-10-17
US9430459B2 (en) 2016-08-30
US8484550B2 (en) 2013-07-09

Similar Documents

Publication Publication Date Title
CN102622335B (zh) 用于根据示例的自动化表格变换的方法和系统
CN108804641B (zh) 一种文本相似度的计算方法、装置、设备和存储介质
CN108197664B (zh) 模型获取方法、装置、电子设备及计算机可读存储介质
Brehmer et al. A multi-level typology of abstract visualization tasks
Toche et al. Set-based design: a review and new directions
Maguire et al. Taxonomy-based glyph design—with a case study on visualizing workflows of biological experiments
Wilderjans et al. CHull: A generic convex-hull-based model selection method
Koop et al. Viscomplete: Automating suggestions for visualization pipelines
Janowicz et al. Algorithm, implementation and application of the SIM-DL similarity server
US8243988B1 (en) Clustering images using an image region graph
Bernard et al. Visinfo: a digital library system for time series research data based on exploratory search—a user-centered design approach
US8938437B2 (en) Method and system for comparing and locating projects
Garijo et al. OKG-Soft: An open knowledge graph with machine readable scientific software metadata
Cao et al. Practical aspects of phylogenetic network analysis using PhyloNet
Struber et al. Splitting models using information retrieval and model crawling techniques
CN111949306B (zh) 一种支持开源项目碎片化学习的推送方法和系统
US5799295A (en) Constraint-based spreadsheet system capable of displaying a process of execution of programs
Liu et al. Aggregated dendrograms for visual comparison between many phylogenetic trees
Brownlee Machine learning mastery with Weka: Analyze data, develop models, and work through projects
CN105183804B (zh) 一种基于本体的聚类服务方法
CN113867850A (zh) 数据处理方法、装置、设备和存储介质
CN115617978A (zh) 指标名称检索方法、装置、电子设备及存储介质
Ho et al. Visualization support for user-centered model selection in knowledge discovery and data mining
CN104156794B (zh) 连接应用和工具的方法、设备、系统和计算机可读介质
CN116719954B (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
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150727

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

Effective date of registration: 20150727

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.