IP Library › Granted Patent US 8,499,290
Granted Patent B2
US 8,499,290 · App. 12/815,801 · Granted Jul 30, 2013

Creating text functions from a spreadsheet

Inventors: John Benjamin Messerly (Seattle, WA); James J. Hugunin (Mercer Island, WA); Jonathon Michael Stall (Bothell, WA); Curt Oliver Hagenlocher (Mercer Island, WA)
Assignee: Microsoft Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,499,290
App. No.
12/815,801
Granted
Jul 30, 2013
Kind
B2
Abstract

The present invention extends to methods, systems, and computer program products for creating text functions form a spreadsheet. Embodiments of the invention extract functions from spreadsheets and represent the functions in textual form. Representation in textual form promotes code reuse, clarify, expressive power, and better performance. Text can be rendered in virtually any programming language, such as, for example, C#, C++, Visual Basic (“VB”), etc. In some embodiments, programming language extensibility to support spreadsheet compatible data types and functions is utilized.

Claims (40)

1. At a computer system including one or more processors and system memory, a computer-implemented method for converting a portion of a spreadsheet into a compilable function, the method comprising acts of:

executing at a computer system a spreadsheet application that instantiates one or more spreadsheets for processing by the computer system;

selecting from at least a first cell in a page of a spreadsheet a result value representing the results of executing a plurality of formulas identified within one or more cells of the spreadsheet;

deriving from the selected result value one or more corresponding parameters for the result value;

using the derived parameters for the result value to parse the plurality of formulas from which the result value is obtained in order to identify other cells of the spreadsheet that contain intermediate values related to the result value, the identified intermediate values corresponding to execution of one or a subset of the plurality of formulas;

processing the identified intermediate values in order to identify data in further cells related to the intermediate values, where the identified data represents comments describing the identified intermediate values and/or indications of said one or subset of the plurality of formulas used in generating the identified intermediate values, and then using the identified data to generate local variables for use in a programming language, the local variables corresponding to the intermediate values contained in said identified other cells of the spreadsheet; and

using the local variables and said one or subset of the plurality of formulas to generate a semantic tree representing a new callable function that corresponds to a subset of the spreadsheet represented by those cells containing the selected result data, the identified intermediate values and identified data, the new callable function of the semantic tree being compilable into executable code configured to calculate the selected result value when the new function is called and executed.

2. The method as recited in claim 1 , further comprising selecting from a second cell a second result value with a value that is independent of the value of the first result value.

3. The method as recited in claim 1 , wherein a continuous range of cells containing separate result values is selected.

4. The method as recited in claim 1 , wherein using the identified data to generate local variables for use in a programming language comprises using said comments to select variable names for the local variables.

5. The method as recited in claim 1 , further comprising an act of translating the semantic tree into source code in one or more different programming languages.

6. The method as recited in claim 5 , further comprising an act of compiling the source code from one of the different programming languages into an executable program.

7. A computer program product for implementing at a computing system a method for converting a portion of a spreadsheet into a compilable function, the computer program product comprising one or more physical storage media having stored thereon computer-executable instructions that, when executed at a processor, cause the computer system to perform the method, which comprises acts of:

executing at a computer system a spreadsheet application that instantiates one or more spreadsheets for processing by the computer system;

selecting from at least a first cell in a page of a spreadsheet a result value representing the results of executing a plurality of formulas identified within one or more cells of the spreadsheet;

deriving from the selected result value one or more corresponding parameters for the result value;

using the derived parameters for the result value to parse the plurality of formulas from which the result value is obtained in order to identify other cells of the spreadsheet that contain intermediate values related to the result value, the identified intermediate values corresponding to execution of one or a subset of the plurality of formulas;

processing the identified intermediate values in order to identify data in further cells related to the intermediate values, where the identified data represents comments describing the identified intermediate values and/or indications of said one or subset of the plurality of formulas used in generating the identified intermediate values, and then using the identified data to generate local variables for use in a programming language, the local variables corresponding to the intermediate values contained in said identified other cells of the spreadsheet; and

using the local variables and said one or subset of the plurality of formulas to generate a semantic tree representing a new callable function that corresponds to a subset of the spreadsheet represented by those cells containing the selected result data, the identified intermediate values and identified data, the new callable function of the semantic tree being compilable into executable code configured to calculate the selected result value when the new function is called and executed.

8. The computer program product as recited in claim 7 , wherein the implemented method further comprises selecting from a second cell a second result value with a value that is independent of the value of the first result value.

9. The computer program product as recited in claim 7 , wherein the method is implemented with computer-executable instructions that cause a continuous range of cells containing separate result values is selected.

10. The computer program product as recited in claim 7 , wherein using the identified data to generate local variables for use in a programming language comprises using said comments to select variable names for the local variables.

11. The computer program product as recited in claim 7 , further comprising computer-executable instructions that, when executed, cause the computer system to translate the semantic tree into source code in one or more different programming languages.

12. The computer program product as recited in claim 11 , further computer-executable instructions that, when executed, cause the computer system to compile the source code from one of the different programming languages into an executable program.

13. A computer system, the computer system comprising:

one or more processors a spreadsheet application that instantiates one or more spreadsheets for processing;

system memory; and

one or more computer storage media having stored thereon computer-executable instructions representing a parameter selection module, an analysis module, a translator, and a compiler, wherein the parameter selection module is configured to:

selecting from at least a first cell in a page of a spreadsheet a result value representing the results of executing a plurality of formulas identified within one or more cells of the spreadsheet;

derive from the selected result value one or more corresponding parameters for the result value; and

use the derived parameters for the result value to parse the plurality of formulas from which the result value is obtained in order to identify other cells of the spreadsheet that contain intermediate values related to the result value, the identified intermediate values corresponding to execution of one or a subset of the plurality of formulas;

wherein the analysis module is configured to:

process the identified intermediate values in order to identify data in further cells related to the intermediate values, where the identified data represents comments describing the identified intermediate values and/or indications of said one or subset of the plurality of formulas used in generating the identified intermediate values, and then using the identified data to generate local variables for use in a programming language, the local variables corresponding to the intermediate values contained in said identified other cells of the spreadsheet;and

use the local variables and said one or subset of the plurality of formulas to generate a semantic tree representing a new callable function that corresponds to a subset of the spreadsheet represented by those cells containing the selected result data, the identified intermediate values and identified data, the new callable function of the semantic tree being compilable into executable code configured to calculate the selected result value when the new function is called and executed;

wherein the translator is configured to translate the semantic tree into source code in one or more different programming languages; and

wherein the compiler is configured to compile the source code from one of the different programming languages into an executable program.

14. The computer system as recited in claim 13 , wherein the translator is configured to translate the semantic tree into source code in one or more of C#, C++, and Visual Basic.

15. The method as recited in claim 13 , wherein the parameter selection module is further configured to select from a second cell a second result value with a value that is independent of the value of the first result value.

16. The method as recited in claim 13 , wherein the parameter selection module is further configured to select a continuous range of cells containing separate result values.

17. The method as recited in claim 13 , wherein the analysis module is further configured to use said comments to select variable names for the local variables.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034544/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 15, 2010
From: MESSERLY, JOHN BENJAMIN; HUGUNIN, JAMES J.; STALL, JONATHON MICHAEL; HAGENLOCHER, CURT OLIVER
To: MICROSOFT CORPORATION
Reel/Frame 024538/0543 →
Continuity (1)
Related Publication 20110307874A1 · Dec 15, 2011