# US 11,113,041 B2 · Spreadsheet-based software application development

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,113,041 B2
- Document ID: US11113041B2
- Status: Granted
- Kind: B2
- Application number: 16/745,976
- Filed: 2020-01-17
- Published: 2020-05-14
- Granted: 2021-09-07
- Earliest claimed: 2016-12-03
- Applicants: Thomas Stachura
- Inventors: Thomas Stachura
- Web page: https://patentgrep.com/patent/US11113041B2

## CPC

- G06F 8/38: for implementing user interfaces
- G06F 8/34: Graphical or visual programming
- G06F 40/18: of spreadsheets (form-filling G06F40/174)
- G06F 40/186: Templates
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Aspects described herein may be used with local spreadsheet applications, web, and/or cloud-based spreadsheet solutions, to create complex custom software applications. Spreadsheets themselves lack the conceptual framework to be used as a platform tool to build custom or complex software applications. Using the methods and systems described herein using low-code/no-code techniques, a designer can create custom and/or complex software applications using one or more spreadsheets as the underlying blueprints for the software application. The resultant software application may be static/read-only, or may be interactive to allow users to dynamically add, delete, edit, or otherwise amend application data, e.g., via one or more online web pages or via a mobile application. Data transfer may be one-way or bi-directional between the blueprint spreadsheets and the resultant software application, thereby allowing amended data to be transferred from the software application back into spreadsheet form.

## Claims

### Claim 1

A computer implemented method for generating an interactive web application comprising at least one web page, the method comprising:
determining at least one primary data source within a spreadsheet, wherein the at least one primary data source corresponds to a first worksheet of the spreadsheet;
determining at least one secondary data source within the spreadsheet, wherein the at least one secondary data source corresponds to a different second worksheet of the spreadsheet; determining a relationship between records of the primary data source and records of the secondary data source, wherein determining the relationship between the records of the primary data source and the records of the secondary data source comprises automatically detecting the relationship based on:
one or more characteristics of the first worksheet and the second worksheet, or
one or more characteristics of at least one user interface template corresponding to a particular web page of the interactive web application;
generating, automatically and based on the determined relationship, a third worksheet comprising at least a portion of the records of the primary data source and at least a portion of the records of the secondary data source, wherein content of the third worksheet is synchronized with content of the first worksheet and content of the second worksheet, and wherein a first row of the third worksheet comprises at least one first cell selected from the primary data source and at least one different second cell selected from the second data source based on the determined relationship;
generating the particular web page of the interactive web application based on the at least one user interface template corresponding to the particular web page and stored within the spreadsheet, wherein the particular web page references records of the third worksheet identified based on the at least one user interface template corresponding to the particular web page, wherein generating the particular web page of the interactive web application comprises extracting content corresponding to the records of the third worksheet from the spreadsheet, and wherein the content corresponding to the records of the third worksheet is identified by the at least one user interface template corresponding to the particular web page;
receiving user input corresponding to a record of the third worksheet via an input control associated with the particular web page of the interactive web application; and
updating at least one record of the secondary data source corresponding to the record of the third worksheet based on the received user input and based on the determined relationship.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
determining a first user interface template within the spreadsheet, wherein the first user interface template identifies the primary data source and the secondary data source,
wherein generating the third worksheet comprising at least a portion of the records of the primary data source and at least a portion of the records of the secondary data source is performed in response to determining the first user interface template.

### Claim 3 (depends on 1)

The method of claim 1, wherein the third worksheet comprises an indirect view of the records of the primary data source and of the records of the secondary data source.

### Claim 4 (depends on 1)

The method of claim 1, further comprising:
responsive to determining that content of the primary data source or the secondary data source has changed, updating the corresponding content of the third worksheet.

### Claim 5 (depends on 1)

The method of claim 1, wherein determining the relationship between the records of the primary data source and the records of the secondary data source comprises:
receiving second user input comprising an indication of the relationship between the records of the primary data source and the records of the secondary data source.

### Claim 6 (depends on 1)

The method of claim 1, further comprising:
responsive to determining that content of the third worksheet has changed, updating corresponding content of the first worksheet or of the second worksheet.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
responsive to determining that formatting of at least one first record of the third worksheet has changed, updating formatting of a corresponding second record of the first worksheet or of the second worksheet.

### Claim 8 (depends on 1)

The method of claim 1, further comprising:
responsive to determining that formatting of at least one first record of the first worksheet or of the second worksheet has changed, updating formatting of a corresponding second record of the third worksheet.

### Claim 9 (depends on 1)

The method of claim 1, wherein generating the third worksheet is performed responsive to receiving second user input requesting creation of an automatically generated sheet.

### Claim 10 (depends on 1)

The method of claim 1, wherein the determined relationship indicates a one-to-one relationship or a one-to-many relationship between the records of the primary data source and the records of the second data source.

### Claim 11 (depends on 1)

The method of claim 1, wherein the determined relationship indicates that a first column of the first worksheet serves as a primary key or a foreign key.

### Claim 12 (depends on 1)

The method of claim 1, wherein determining the relationship is based on a record structure of the records of the primary data source and the records of the secondary data source.

### Claim 13 (depends on 1)

The method of claim 1, wherein determining the relationship is based on common content of a first column of the records of the primary data source and a second column of the records of the second data source.

### Claim 14 (depends on 1)

The method of claim 1, wherein determining the relationship is based on at least one parameter of at least one formula in a cell of the spreadsheet.

### Claim 15 (depends on 1)

The method of claim 1, wherein determining the relationship between the records of the primary data source and the records of the secondary data source comprises:
determining, automatically, a potential relationship between the records of the primary data source and the records of the secondary data source based on one or more clues;
determining a reliability level of the determined potential relationship; and
accepting or rejecting the determined potential relationship based on the determined reliability level.

### Claim 16 (depends on 1)

The method of claim 1, further comprising:
determining at least one tertiary data source within the spreadsheet, wherein the at least one tertiary data source corresponds to a different fourth worksheet of the spreadsheet;
determining a second relationship between the records of the primary data source and records of the tertiary data source; and
generating, automatically and based on the determined second relationship, a fifth worksheet comprising at least a portion of the records of the primary data source and at least a portion of the records of the tertiary data source, wherein content of the fifth worksheet is synchronized with content of the first worksheet and content of the fourth worksheet.

### Claim 17 (depends on 1)

The method of claim 1, further comprising:
determining at least one tertiary data source within the spreadsheet, wherein the at least one tertiary data source corresponds to a different fourth worksheet of the spreadsheet;
determining a second relationship between the records of the third worksheet and records of the tertiary data source; and
generating, automatically and based on the determined second relationship, a fifth worksheet comprising at least a portion of the records of the third worksheet and at least a portion of the records of the tertiary data source, wherein content of the fifth worksheet is synchronized with content of the first worksheet, content of the second worksheet, and content of the fourth worksheet.

### Claim 18 (depends on 1)

The method of claim 1, wherein at least one cell of a fourth worksheet comprises a formula that references at least one cell of the automatically generated third worksheet.

### Claim 19

A computer implemented method for generating an interactive web application comprising at least one web page, the method comprising:
determining at least one primary data source within a spreadsheet, wherein the at least one primary data source corresponds to a first worksheet;
determining at least one secondary data source, wherein the at least one secondary data source corresponds to a different second worksheet;
determining a relationship between records of the primary data source and records of the secondary data source, wherein determining the relationship between the records of the primary data source and the records of the secondary data source comprises automatically detecting the relationship based on content of the records of the primary data source and content of the records of the second data source;
generating, automatically and based on the determined relationship, a third worksheet comprising at least a portion of the records of the primary data source and at least a portion of the records of the secondary data source, wherein content of the third worksheet is synchronized with content of the first worksheet and content of the second worksheet, and wherein a first row of the third worksheet comprises at least one first cell selected from the primary data source and at least one different second cell selected from the second data source based on the determined relationship;
generating a particular web page of the interactive web application based on at least one user interface template corresponding to the particular web page and stored within the spreadsheet, wherein the particular web page references records of the third worksheet identified based on the at least one user interface template corresponding to the particular web page, wherein generating the particular web page of the interactive web application comprises extracting content corresponding to the records of the third worksheet from the spreadsheet, and wherein the content corresponding to the records of the third worksheet is identified by the at least one user interface template corresponding to the particular web page;
receiving user input corresponding to a record of the third worksheet via an input control associated with the particular web page of the interactive web application; and
updating at least one record of the secondary data source corresponding to the record of the third worksheet based on the received user input and based on the determined relationship.

### Claim 20 (depends on 19)

The method of claim 19, further comprising:
determining a first user interface template, wherein the first user interface template identifies the primary data source and the secondary data source,
wherein generating the third worksheet comprising at least a portion of the records of the primary data source and at least a portion of the records of the secondary data source is performed in response to determining the first user interface template.

### Claim 21 (depends on 19)

The method of claim 19, wherein the third worksheet comprises an indirect view of the records of the primary data source and of the records of the secondary data source.

### Claim 22 (depends on 19)

The method of claim 19, further comprising:
responsive to determining that content of the primary data source or the secondary data source has changed, updating the corresponding content of the third worksheet.

### Claim 23 (depends on 19)

The method of claim 19, wherein determining the relationship between the records of the primary data source and the records of the secondary data source comprises:
receiving second user input comprising an indication of the relationship between the records of the primary data source and the records of the secondary data source.

### Claim 24 (depends on 19)

The method of claim 19, wherein determining the relationship between the records of the primary data source and the records of the secondary data source comprises:
automatically detecting the relationship between the records of the primary data source and the records of the secondary data source based on one or more characteristics of the first worksheet and the second worksheet.

### Claim 25 (depends on 19)

The method of claim 19, wherein determining the relationship between the records of the primary data source and the records of the secondary data source comprises:
automatically detecting the relationship between the records of the primary data source and the records of the secondary data source based on one or more characteristics of the at least one user interface template.

### Claim 26 (depends on 19)

The method of claim 19, further comprising:
responsive to determining that content of the third worksheet has changed, updating corresponding content of the first worksheet or of the second worksheet.

### Claim 27 (depends on 19)

The method of claim 19, further comprising:
responsive to determining that formatting of at least one first record of the third worksheet has changed, updating formatting of a corresponding second record of the first worksheet or of the second worksheet.

### Claim 28 (depends on 19)

The method of claim 19, further comprising:
responsive to determining that formatting of at least one first record of the first worksheet or of the second worksheet has changed, updating formatting of a corresponding second record of the third worksheet.

### Claim 29 (depends on 19)

The method of claim 19, wherein generating the third worksheet is performed responsive to receiving second user input requesting creation of an automatically generated sheet.

### Claim 30 (depends on 19)

The method of claim 19, wherein the determined relationship indicates a one-to-one relationship or a one-to-many relationship between the records of the primary data source and the records of the second data source.

### Claim 31 (depends on 19)

The method of claim 19, wherein the determined relationship indicates that a first column of the first worksheet serves as a primary key or a foreign key.

### Claim 32 (depends on 19)

The method of claim 19, wherein determining the relationship is based on a record structure of the records of the primary data source and the records of the secondary data source.

### Claim 33 (depends on 19)

The method of claim 19, wherein determining the relationship is based on common content of a first column of the records of the primary data source and a second column of the records of the second data source.

### Claim 34 (depends on 19)

The method of claim 19, wherein determining the relationship is based on at least one parameter of at least one formula in a cell of the spreadsheet.

### Claim 35 (depends on 19)

The method of claim 19, wherein determining the relationship between the records of the primary data source and the records of the secondary data source comprises:
determining, automatically, a potential relationship between the records of the primary data source and the records of the secondary data source based on one or more clues;
determining a reliability level of the determined potential relationship; and
accepting or rejecting the determined potential relationship based on the determined reliability level.

### Claim 36 (depends on 19)

The method of claim 19, further comprising:
determining at least one tertiary data source, wherein the at least one tertiary data source corresponds to a different fourth worksheet;
determining a second relationship between the records of the primary data source and records of the tertiary data source; and
generating, automatically and based on the determined second relationship, a fifth worksheet comprising at least a portion of the records of the primary data source and at least a portion of the records of the tertiary data source, wherein content of the fifth worksheet is synchronized with content of the first worksheet and content of the fourth worksheet.

### Claim 37 (depends on 19)

The method of claim 19, further comprising:
determining at least one tertiary data source, wherein the at least one tertiary data source corresponds to a different fourth worksheet;
determining a second relationship between the records of the third worksheet and records of the tertiary data source; and
generating, automatically and based on the determined second relationship, a fifth worksheet comprising at least a portion of the records of the third worksheet and at least a portion of the records of the tertiary data source, wherein content of the fifth worksheet is synchronized with content of the first worksheet, content of the second worksheet, and content of the fourth worksheet.

### Claim 38 (depends on 19)

The method of claim 19, wherein at least one cell of a fourth worksheet comprises a formula that references at least one cell of the automatically generated third worksheet.

### Claim 39

A computing device, comprising:
one or more processors; and
memory storing instructions that, when executed by the one or more processors, cause the computing device to:
determine at least one primary data source within a spreadsheet, wherein the at least one primary data source corresponds to a first worksheet of the spreadsheet;
determine at least one secondary data source within the spreadsheet, wherein the at least one secondary data source corresponds to a different second worksheet of the spreadsheet;
determine a relationship between records of the primary data source and records of the secondary data source, wherein determining the relationship between the records of the primary data source and the records of the secondary data source comprises automatically detecting the relationship based on:
one or more characteristics of the first worksheet and the second worksheet, or
one or more characteristics of at least one user interface template corresponding to a particular web page of the interactive web application;
generate, automatically and based on the determined relationship, a third worksheet comprising at least a portion of the records of the primary data source and at least a portion of the records of the secondary data source, wherein content of the third worksheet is synchronized with content of the first worksheet and content of the second worksheet, and wherein a first row of the third worksheet comprises at least one first cell selected from the primary data source and at least one different second cell selected from the second data source based on the determined relationship;
generate the particular web page of the interactive web application based on the at least one user interface template corresponding to the particular web page and stored within the spreadsheet, wherein the particular web page references records of the third worksheet identified based on the at least one user interface template corresponding to the particular web page, wherein generating the particular web page of the interactive web application comprises extracting content corresponding to the records of the third worksheet from the spreadsheet, and wherein the content corresponding to the records of the third worksheet is identified by the at least one user interface template corresponding to the particular web page;
receive user input corresponding to a record of the third worksheet via an input control associated with the particular web page of the interactive web application; and
update at least one record of the secondary data source corresponding to the record of the third worksheet based on the received user input and based on the determined relationship.

### Claim 40 (depends on 39)

The computing device of claim 39, wherein the third worksheet comprises an indirect view of the records of the primary data source and of the records of the secondary data source.

### Claim 41 (depends on 39)

The computing device of claim 39, wherein the instructions further cause the computing device to:
responsive to determining that content of the primary data source or the secondary data source has changed, update the corresponding content of the third worksheet; or
responsive to determining that content of the third worksheet has changed, update corresponding content of the first worksheet or of the second worksheet.

### Claim 42 (depends on 39)

The computing device of claim 39, wherein the instructions cause the computing device to determine the relationship between the records of the primary data source and the records of the secondary data source by causing the computing device to:
receive second user input comprising an indication of the relationship between the records of the primary data source and the records of the secondary data source.

### Claim 43 (depends on 39)

The computing device of claim 39, wherein the determined relationship indicates:
a one-to-one relationship or a one-to-many relationship between the records of the primary data source and the records of the second data source, or
that a first column of the first worksheet serves as a primary key or a foreign key.

### Claim 44 (depends on 39)

The computing device of claim 39, wherein determining the relationship is based on a record structure of the records of the primary data source and the records of the secondary data source.

### Claim 45 (depends on 39)

The computing device of claim 39, wherein determining the relationship is based on common content of a first column of the records of the primary data source and a second column of the records of the second data source.

### Claim 46 (depends on 39)

The computing device of claim 39, wherein the instructions cause the computing device to determine the relationship between the records of the primary data source and the records of the secondary data source by causing the computing device to:
determine, automatically, a potential relationship between the records of the primary data source and the records of the secondary data source based on one or more clues;
determine a reliability level of the determined potential relationship; and
accept or reject the determined potential relationship based on the determined reliability level.

### Claim 47

One or more non-transitory computer-readable media storing instructions that, when executed by one or more processors, cause a computing device to perform steps comprising:
determining at least one primary data source within a spreadsheet, wherein the at least one primary data source corresponds to a first worksheet of the spreadsheet;
determining at least one secondary data source within the spreadsheet, wherein the at least one secondary data source corresponds to a different second worksheet of the spreadsheet; determining a relationship between records of the primary data source and records of the secondary data source, wherein determining the relationship between the records of the primary data source and the records of the secondary data source comprises automatically detecting the relationship based on:
one or more characteristics of the first worksheet and the second worksheet, or
one or more characteristics of at least one user interface template corresponding to a particular web page of the interactive web application;
generating, automatically and based on the determined relationship, a third worksheet comprising at least a portion of the records of the primary data source and at least a portion of the records of the secondary data source, wherein content of the third worksheet is synchronized with content of the first worksheet and content of the second worksheet, and wherein a first row of the third worksheet comprises at least one first cell selected from the primary data source and at least one different second cell selected from the second data source based on the determined relationship;
generating the particular web page of the interactive web application based on the at least one user interface template corresponding to the particular web page and stored within the spreadsheet, wherein the particular web page references records of the third worksheet identified based on the at least one user interface template corresponding to the particular web page, wherein generating the particular web page of the interactive web application comprises extracting content corresponding to the records of the third worksheet from the spreadsheet, and wherein the content corresponding to the records of the third worksheet is identified by the at least one user interface template corresponding to the particular web page;
receiving user input corresponding to a record of the third worksheet via an input control associated with the particular web page of the interactive web application; and
updating at least one record of the secondary data source corresponding to the record of the third worksheet based on the received user input and based on the determined relationship.

### Claim 48 (depends on 47)

The non-transitory computer-readable media of claim 47, wherein the third worksheet comprises an indirect view of the records of the primary data source and of the records of the secondary data source.

### Claim 49 (depends on 47)

The non-transitory computer-readable media of claim 47, wherein the instructions cause the computing device to perform further steps comprising:
responsive to determining that content of the primary data source or the secondary data source has changed, updating the corresponding content of the third worksheet; or
responsive to determining that content of the third worksheet has changed, updating corresponding content of the first worksheet or of the second worksheet.

### Claim 50 (depends on 47)

The non-transitory computer-readable media of claim 47, wherein determining the relationship between the records of the primary data source and the records of the secondary data source comprises:
receiving second user input comprising an indication of the relationship between the records of the primary data source and the records of the secondary data source.

### Claim 51 (depends on 47)

The non-transitory computer-readable media of claim 47, wherein the determined relationship indicates:
a one-to-one relationship or a one-to-many relationship between the records of the primary data source and the records of the second data source, or
that a first column of the first worksheet serves as a primary key or a foreign key.

### Claim 52 (depends on 47)

The non-transitory computer-readable media of claim 47, wherein determining the relationship is based on a record structure of the records of the primary data source and the records of the secondary data source.

### Claim 53 (depends on 47)

The non-transitory computer-readable media of claim 47, wherein determining the relationship is based on common content of a first column of the records of the primary data source and a second column of the records of the second data source.

### Claim 54 (depends on 47)

The non-transitory computer-readable media of claim 47, wherein determining the relationship between the records of the primary data source and the records of the secondary data source comprises:
determining, automatically, a potential relationship between the records of the primary data source and the records of the secondary data source based on one or more clues;
determining a reliability level of the determined potential relationship; and
accepting or rejecting the determined potential relationship based on the determined reliability level.
