System and method for integrating spreadsheets and word processing tables
Abstract
This record has no abstract on file.
Term
Term ended
Expired 22 May 2021, 5.3 years ago.
- Priority
- Filed
- Granted
- Expired
- Today
1 claim: 1 independent, 0 dependent
- 1入力手段、表示手段、メモリ、該メモリに結合された処理装置、及び統合されたスプレッドシート機能を備える表を含むドキュメントを作成して表示するための前記メモリ内に格納され前記処理装置上で実行可能なプログラムを含むコンピュータの動作方法であって、前記処理装置が前記メモリから前記プログラムを読み出して実行するときに、前記方法は、 前記処理装置が前記メモリ上に作成した 前記マークアップ言語で記述された ドキュメント内の表を前記表示手段に表示 し、前記ドキュメントは前記表と該表の外側のテキストとを含む ステップと、 前記処理装置が前記入力手段を介して前記表の中に入力された、データと該データを参照する少なくとも1つの式とを受け取るステップと、 前記処理装置が前記表からの前記データおよび式を前記メモリ上で管理するステップと、 前記処理装置が前記入力手段を介した前記データの変更に応答して前記メモリ上の前記式を再計算するステップと、 前記処理装置が前記メモリ上の前記ドキュメント内の修正された表を前記表示手段に表示し、当該修正された表は前記再計算からの結果を反映するステップと を含 み、 前記再計算するステップは、式の連鎖をトラバースし、前記連鎖内の順序に従って前記式を計算し、前記連鎖内の評価されていない式に依存する任意の式は、前記連鎖の末尾に移動されるステップを含 むことを特徴とする方法。
1 paragraph, as filed
[0001] (Technical field) The present invention relates to computer programs, in particular word processing programs and spreadsheet programs. More specifically, the present invention relates to an architecture that integrates a spreadsheet of a spreadsheet program and a table of a word processing program. [0002] (Background of invention) Word processing programs and spreadsheet programs are two well-known and widely used software applications. Users can use word processing programs to draft letters, write books, and create other language-based documents on their computers. Word processing programs are usually designed with the author in mind, making writing tasks easy, including editing features (eg, cut, copy, paste, find, replace, etc.), spelling and grammar checking, and document formatting. It has tools and a user interface to do so. As an example of a word processing program, Microsoft There are "Word (trademark)" of Corporation and "WordPerfect (trademark)" of Corel Corporation. [0003] Spreadsheet programs allow you to create financial records, accounting spreadsheets, budgets, and other number-centric documents on your computer. Spreadsheet programs were developed with accountants in mind and focus on tools and user interfaces that simplify data entry and manipulation. Spreadsheet programs typically include features such as entering formulas in cells, auto-recalculating when data changes, multiple sheet references, and formatting cells based on data type (eg dates, currencies, percentages, etc.). .. An example of a spreadsheet program is Microsoft Corporation's "Excel " application. [0004] In the past, computer users who primarily wanted to create word-based documents chose a word processing program, and users who wanted to create numeric-centric documents chose a spreadsheet program. However, there may be situations where a user of a word processing program has to insert numbers into a normal word-based document to make it "look" in a spreadsheet. [0005] To accommodate these crossover situations, word processing programs have been improved to include tables, which are visual structures that can be used to store and organize numbers and other data types. A table is an array of data in columns and rows that emulates the "look" of a spreadsheet. A user of a word processing program can insert a table, modify the layout, and change the cell format to achieve a specific visual display for the user's data. There are even tables that support rudimentary features such as adding multiple adjacent cells together. However, these features do not perform automatic recalculation. Therefore, although it looks similar to a spreadsheet, Word Processing program tables do not support all the features of a spreadsheet. [0006] Recently, there has been a wealth of integrated features using object-oriented programming and OLE technology. Users of word processing programs who want rich functionality can use OLE to embed spreadsheet objects in their word processing program documentation instead of tables. This is essentially the operation of embedding the spreadsheet program "Excel " (or other spreadsheet program) in a document running in the "Word " program (or other word processing program). Similar to. The embedded object is powerful enough for the user to enter formulas, format cells, recalculate functions, and do everything a spreadsheet program can normally do. [0007] An embedded spreadsheet is visually similar to a table and has the desired spreadsheet functionality, but is actually a separate program that the user must call. OLE requires both types of application programs-word processors and spreadsheet programs to be installed on your computer. When a user updates an embedded spreadsheet, move the mouse pointer somewhere on the embedded object and call the spreadsheet object by double-clicking the left mouse button (or by some other mechanism of action). .. In response, an instance of the spreadsheet program is run, and the spreadsheet display changes from "table look" to a reduced size spreadsheet program with numbered rows and alphabetic columns and program-specific menus. Be changed. In this state, the user can modify the function, modify the data, change the spreadsheet format, perform other spreadsheet tasks, and so on. When the user is finished, move the mouse pointer out of the spreadsheet object and click the left mouse button once to return the focus to the document in the word processing program. [0008] Although the OLE method allows you to take advantage of all the features of a spreadsheet program within the documentation of your word processing program, this process is somewhat advanced and is usually for experienced people who are familiar with both spreadsheet and word processing programs. Is. Beginners or inexperienced users may be confused by looking at a table because they cannot recognize the difference between a Word Processing program table and an embedded spreadsheet object that has full functionality. From the user's point of view, use different operations depending on whether the visual structure is a table or a spreadsheet. In addition, common services such as text formatting, spell checking, etc. do not work with embedded OLE objects, forcing users to perform such services on both documents and embedded spreadsheets. Absent. [0009] Therefore, even though the final display is visually similar, Word Processing program tables and spreadsheets have two completely independent mechanisms for displaying information. Therefore, there needs to be an appropriate way to incorporate spreadsheet functionality into the tables of a word processing program. [0010] As a result of the rapid spread of the Internet, many documents delivered to and rendered on a computer are written in markup languages such as HTML (Hyper Text Markup Language). The language of markup allows authors to easily build the desired visual layout of a document. Some HTML documents have tables that appear and work as if they were integrated with the surrounding text. For example, financial websites usually provide in-depth explanations about retirement plans, student deposits, or home purchases, with tables that encourage users to enter personal financial information and goals. Included with one or more descriptions of them. When the user finishes filling in the data value field, the document is displayed, performing the calculation on the fly and displaying the result with a description. [0011] Regardless of the display of in-document calculations, an HTML document is no different than an electronic format that receives data entered by the user. When the user completes the input, the HTML document is sent to the web server, where the user data is extracted and appropriate financial calculations are performed. The server puts the result in another HTML document and returns the document to the user's computer. Sending and replying is so fast that the user is unaware that the HTML document holding the results is different from the HTML document in which the user first entered the data. In any case, the traditional distinction between spreadsheets and tables continues into the Internet-based era. [0012] (Outline of the invention) The system architecture integrates spreadsheet functionality into commonly used tables in word processing programs and HTML documents. This architecture displays a table user interface (UI) that looks like part of a document and can be surrounded by text and other document elements. For example, in an HTML document, a table is an HTML element that is built with other elements and organized into an integrated document. The table UI, when rendered, visually resembles a non-editing mode table and an edit mode spreadsheet. However, the feel of a table is similar to that of a Word Processing program table in that the user enters multiple paragraphs, creates a list, splits cells, and so on. However, unlike the tables in typical word processing programs, this table supports all the features of a spreadsheet. [0013] Based on the UI in this table, one implementation of the architecture separates the data processing function and the display function. This architecture includes a table display manager that manages how tables are displayed in a document, including characteristics such as resizing, selecting, cutting, copying, pasting, splitting, joining, and table formatting. It also has a spreadsheet feature manager that manages spreadsheet features for tables such as recalculations, formula processing, sorting, and references. [0014] This bifurcated architecture supports a cross-table reference feature that allows cells in one table to reference cells in the other table, even if the tables are separate from each other in the same document. To do. In this architecture, the user can use the browse edit operation with a cross table as part of the browse function to browse cells in other tables (for example, move the pointer to a cell and click on it). Capture the contents in the cell). In addition, the architecture also supports general purpose automatic recalculation across all tables in the document. Therefore, when the user modifies the contents of one of the tables, the formulas in the table affected by the modification are automatically recalculated. [0015] It also supports a nested table structure in which one table is nested within the cells of the other table. It also describes many other architectural features and UI features. [0016] (Detailed description of preferred embodiments) This disclosure describes an architecture that integrates spreadsheet functionality into commonly used tables in word processing programs and HTML documents. This architecture provides a single mechanism for users to combine the best features of the table in a word processing program with the best features of a spreadsheet engine. [0017] In the implementation described, this architecture places integrated tables and spreadsheets within a document written in a markup language (eg HTML). In this way, users can change the layout of a table (for example, merge and split cells) and text and tables, including data-specific calculation and formatting features that were traditionally associated only with other spreadsheet applications. Both of the rich HTML formatting options are available. However, note that this architecture can also be used with other types of documents that are not based on markup languages. [0018]<u style="single">architecture</u>Figure 1 shows Architecture 100, which integrates spreadsheet functionality into a table in a word processing program. Architecture 100 can be implemented on stand-alone computers, network server computers, network client computers, or distributed across both servers and clients. Architecture 100 optionally has a document renderer 102, a table object 104, a spreadsheet object 106, a spreadsheet editor 108, a workbook 110, a spreadsheet engine 112, and one or more non-core worksheet functions. (non-core worksheet functions) Includes 114 (1) -114 (W). [0019] Architecture 100 separates the integrated table / spreadsheet data processing capabilities from the display capabilities. In this way, the architecture can be characterized as a coordinated operation of two system managers, the Table Display Manager 116 and the Spreadsheet Function Manager 118. Table Display Manager 116 manages the display of tables in a document, making it easy to perform tasks such as resizing, selecting, cutting, copying, pasting, splitting, joining, and formatting tables. The table display manager 116 includes a table object 104, a spreadsheet object 106, and a spreadsheet editor 108. Spreadsheet Function Manager 118 manages spreadsheet functions for tables such as recalculations, expression processing, sorting, and references. Spreadsheet Function Manager 118 includes Spreadsheet Engine 112 and Worksheet Function 114. In this branching architecture, Spreadsheet Function Manager 118 is not involved in table layout or other visual functions, and Table Display Manager 116 is not involved in data management, formulas, and recalculation processes. [0020] Branch architecture 100 is advantageous in that it supports cross-table lookup functionality across multiple tables. In addition, since the reference editing function can be used when inputting a formula, it is convenient when selecting another cell and extracting the contents used in the formula as a variant type. In addition, this architecture makes it easy to perform general purpose automatic recalculations across all tables in a document in response to user modifications to a single table. [0021] [0021] Document 120 is created and rendered on Document Renderer 102. Document 120 is a combination of one or more text-based body elements 122 and one or more Tables 124. For illustration purposes, create document 120 in a markup language such as XML (Extensible Markup Language). XML documents are excellent in that they can be converted using XSL (Extensible Style Sheet Language) and rendered directly as HTML (Hyper Text Markup Language). In this case, renderer 102 can be implemented as a browser or other application that processes and renders HTML documents. Table 124 is rendered as an HTML table. [0022] FIG. 2 shows example document 120 with body elements 122 (1), 122 (2), 122 (3) and table 124 located between body elements 122 (2) and 122 (3). .. In this example, Document 120 is a letter addressed to Jones, explaining various home improvement projects and the costs associated with those projects. In Figure 2, Table 124 is in non-editing mode, similar to a standard word processing program table, with three columns 202 (1) -202 (3) and five rows 204 (1) -204 (5). It is composed of. [0023] Figure 3 shows document 120, which is the same as the document when the user is editing Table 124. Note that the "look" in Table 124 is more like a spreadsheet than a traditional table. Table 124 summarizes the column headers 302 (1), 302 (2), and 302 (3), as well as the row headers 304 (1) -304 (6). Table 124 includes column expansion controls 306 and row expansion controls 308 to facilitate table expansion. [0024] In this example, the user is entering the grand total formula in cell C6. The user uses the mouse pointer 310 to refer to the array of cells C2 to C5 to enter in the formula. After confirmation (for example, after releasing the left mouse button), a reference to cells C2-C5 is inserted into the grand total formula in cell C6, the formula is calculated, and the total amount is added in column C. Result $ 12,060 is inserted in cell C6. The user interfaces in the table have a number of features, which are described in detail in the section entitled "User Interface Features" below. [0025] Looking back at Figure 1, Table Object 104 and Spreadsheet Object 106 have editing capabilities for Table 124, for example, Resize, Select, Cut, Copy, Paste, Split, Join, and Format Table. There are settings, and many other rich spreadsheet events. The spreadsheet engine 112 includes spreadsheet features for Table 124, including features such as formula creation, reference editing, and recalculation. In terms of architecture, table and spreadsheet components are distinct from each other, but spreadsheets are table-dependent, and tables have special notifications and events to assist them. This allows any component to add functionality without directly affecting the other component. [0026] The spreadsheet engine 112 includes a grid object 130 that receives events indicating user activity in Table 124 and coordinates actions between various objects. There is one grid object 130 for each table created in document 120. Workbook 110 tracks all grid objects 130 and resolves cross-table references. After creation, the grid object 130 is registered in workbook 110 and can be added when the table is updated. The grid object provides an interface with a spreadsheet object 106 (which is technically a browser behavior, but can be any object) that fetches values from the HTML tree held by renderer 102. [0027] The grid object 130 holds two tables, a format table 132 and a cell table 134. The format Table 132 holds information about the data format of each cell in Table 124. For example, cells can store dates, numbers, amounts, percentages, and so on. Table 134 of cells stores the actual data of each cell in Table 124. In the example shown in Figure 3, the format Table 132 contains information that cells A1-A6, B1-B6, and C1 are text and cells C2-C5 are displayed in US currency format. [0028] Table 134 of cells holds the actual data in cells of table 124, such as text, values, and formulas. Table 134 of cells stores one pointer to a plurality of cells 136 (1) -136 (C) for each cell in the table. Each cell 136 is a Variant object that contains a reference to the parsed value of the cell and complete information about that cell. If a cell contains text or numeric data (for example, cells A1-A6, B1-B5, and C1-C5 in Figure 3), it is stored directly in the Variant type. Expressions such as grand total expressions in cell C6 of Figure 3 are stored as Variant types and contain pointers to the appropriate expression objects held by Expression Manager 140 (discussed below). [0029] Spreadsheet Engine 112 includes an expression manager 140 that handles all expressions and parsing tasks for expressions, data values, and references (eg, D4: E23). The workbook 110 is used to link the expression manager 140 with the registered grid 130. The expression manager 140 maintains a recalculation engine 142 that performs recalculations of all expressions in response to changes in events in the table. In one embodiment, the recalculation engine 142 keeps a document expression in a bidirectional linked list, which is also called an "expression chain". Following a recalculation event (for example, a user entering a new data value or a new expression), the recalculation engine 142 traverses the list and evaluates the expression that is likely to be affected by that event. [0030] If the current expression depends on another expression that has not yet been evaluated, the current expression is moved to the end of the list. Once the recalculation is done, the expression list is organized in its natural order, and no further recalculations need to change the order unless new expressions are added. If the recalculation reaches an expression that is already at the end of the list and it finds that the expression still depends on the uncomputed dependency, then the expression contains a circular reference. In this case, the recalculation engine returns a circular reference error. [0031] The expression manager 140 also includes a parsing system 144 that parses the expression. In one embodiment, the parsing system 144 is a recursive downward analysis system that extracts tokens (phrases) from a stream and adds the tokens to a parallel array of character size arithmetic type arrays and variant operands (number of arithmetic operations). .. Upon completion, the parser 144 creates a new expression object 146 and assigns it two arrays of parsed information. Therefore, the expression manager 140 contains one or more expression objects that contain expression information, such as the parsed expression returned by the parser 144, the current result, the type of the expression, and the state of the current expression 146 (1)-. Holds 146 (B). [0032] The parsing system 144 is preferably a delayed parsing system that parses cells only when necessary, such as when a formula is loaded for the first time or when a value is edited or referenced for the first time. However, most cells in the table do not contain the values referenced by the formula, so unexpressed cells are parsed only as needed. If a cell containing a formula is found when loading the table, the cell is immediately parsed and added to the recalculation chain. If the cell does not contain a formula, do not parse until the formula needs a value. [0033] In one embodiment, there are usually three types of formulas: semicalculation and non-calculation. Regular expressions are re-evaluated only when their dependencies change. The quasi-calculation formula is re-evaluated by the recalculation engine 142 performing the recalculation operation. Non-calculated formulas are never evaluated. Non-calculation formulas include nested tables (that is, tables inside the table) and free-floating fields that are nested inside the table (that is, single table cells) or other free-floating fields. A special type of expression to process. [0034] Consider the case of an inner table that is nested inside a cell in the outer table. If the inner table contains formulas that change to different values after recalculation, the values in the cells of the outer table also change. Such dependencies are not encoded anywhere because there are no expressions in the outer table attached to the inner table. In such a case, the non-calculation formula is set in the cell of the outer table and the value of the result obtained from the inner calculation is refetched. Therefore, this involves the usual dependency management of recalculations, and all references to the outer table are updated accordingly. The nesting table is detailed below. [0035] In one embodiment, the formula object 146 is owned by a COM wrapper (not shown), which is further held by the cell object 136 in the grid 130 where the formula is located. The expression object 146 is itself part of the bidirectional linked list of expressions held by the recalculation engine 142. Expression object 146 contains references to home rows and columns and cell object 136 in grid 130. With these references, the recalculation engine 142 can easily determine which table the specified expression belongs to by going down the recalculation chain containing expressions from multiple tables. Everything from saving expressions to dropping tables depends on being able to traverse this chain. [0036] Expression Manager 140 also parses the referenced cell group. For example, Formula Manager 140 uses "A5" as a cell reference, "D4: E23" as a compound rectangular area reference, "$ F $ 30" as an absolute reference, and "Table 5! D5" as a cross table reference, "Field 3". Is analyzed as a union with "A5: D5 B3: B6" as a common part and "D3, E4" as a union. [0037] The non-core worksheet functions 114 (1) -114 (W) are optional elements. Examples of such functions are analytical functions, statistical functions, and trigonometric functions. Since it is a modular architecture 100, you can freely delete unnecessary worksheet functions and add new worksheet functions. [0038] Spreadsheet object 106 is paired with grid object 130 located outside the spreadsheet engine. For each table 124, there is one pair of spreadsheet object 106 and grid object 130. Spreadsheet object 106 defines a behavior that receives an event from document renderer 102, processes it a bit, and passes the event to grid object 130. In response to those events, the grid object 130 updates the per-table cell data and / or formatting information in table 132 of the cell in table 134. [0039] Spreadsheet Behavior 106 is a three-object, GridBehavior It has 150, CellEditing 152, and Spreadsheet 154. The GridBehavior object 150 places a layer of abstraction between the grid object 130 and the individual HTML table cells so that the grid object 130 can access HTML values and styles. The GridBehavior object 150 is a wrapper for HTML elements with a common interface, and the grid 130 does not need to be able to recognize a particular structure of the HTML table. In addition, the GridBehavior object 150 manages the table-specific parts of the "Edit Reference" operation. [0040] CellEditing object 152 and Spreadsheet object 154 interact directly with the HTML tree and spreadsheet behavior 104 to send events to grid 130. Spreadsheet object 154 needs to record the undo record of actions that affect the spreadsheet. [0041] CellEditing object 152 manages user-level editing of cells. It has the ability to handle events related to user editing of in-cell data values and has some editing user interface (UI) elements such as a formula editing box that allows the user to edit the formula. When editing a formula, a movable formula edit box is placed above the cell position and resized as needed to fit the formula inside. By using a localized edit box, the table (or paragraph) displays the formula that the user needs to pack the entire formula into the table cell and the user needs to replace with the result, and when the display disappears, the table (or paragraph) It eliminates the potential UI issues of being resized to strange sizes. [0042] The CellEditing object 152 also supports reference editing operations when the expression edit box is displayed. As mentioned above, the reference edit operation allows the user to visually reference a cell using the mouse pointer (or other focus mechanism), and in response a reference to that cell data is current. Insert an expression edit box. The formula edit box will be described in detail below. The CellEditing object 152 exists only when cell editing is active. [0043] Spreadsheet object 106 handles top-level tasks such as inserting a table or free floating field and sending commands to the appropriate table based on the current selection in document 120. Spreadsheet object 106 also creates and manages workbook 110. [0044] By adopting an integrated table and spreadsheet model, users do not have to pre-select the structure of the data in a document before creating it. Historically, users have tended to opt for word processing applications when they need to fine-tune the display of table data. On the other hand, when it was necessary to calculate the data, a spreadsheet application was generally selected. This integrated architecture allows users to combine multiple different types of data into a single document. [0045] In addition, by incorporating spreadsheet functionality into a table, users can create documents around that table. In a spreadsheet application, the user is constrained to a grid layout for the entire content of the document. The integrated architecture allows you to include multiple tables, format the data as values in each table, and create rich documents that can be used in the overall calculations of the various tables. [0046]<u style="single">Free floating field architecture</u>Figure 4 shows an architecture 400 similar to that shown in Figure 1, but shows an architecture that scales to fit multiple tables in a single document with free floating fields. Architecture 400 can be implemented on stand-alone computers, network server computers, network client computers, or distributed across both servers and clients. [0047] In Figure 4, the document 402 rendered by renderer 102 has multiple text-based body parts 404 (1) -404 (3), two tables 406 (1) and 406 (2), and one free floating field ( It is equipped with FFF) 408. The free floating field 408 is similar to a spreadsheet value that you can insert anywhere in your document, such as being placed in the middle of a text-based body or appearing as a natural part of the text. [0048] Figures 5 and 6 show two examples of a document with multiple tables and / or tables with free floating fields. In FIG. 5, document 500 includes a second or inner table 504 nested within cell B3 of the first or outer table 502 and the outer table 502. The ability to nest tables is one of the features of this architecture not found in traditional spreadsheet programs. In Figure 6, document 600 has three tables 602, 604, and 606 and a free floating field 608 currently being edited. [0049] Seeing Figure 4 again, the spreadsheet engine has one for each table and free floating field in document 420, as represented by grid objects 130 (1), 130 (2), and 130 (3). It has a grid object. In addition, there is one and a spreadsheet behavior for each table 406 in document 402, as represented by spreadsheet objects 106 (1) and 106 (2). Architecture 400 also includes one free floating field behavior 410 for every free floating field 408 in the document. As a result, there is one pair of grid objects and spreadsheet / FFF behaviors for each table or free floating field in document 402. [0050] The grid objects 130 (2) used to support the free floating field object 410 are essentially the grid objects 130 (1) and 130 (3) used to support the table, detailed above. Is the same as. One minor difference is that the free floating field 408 resembles a table with only one cell, so the grid object 130 (2) contains only one cell object 136. [0051] The free floating field behavior 410 includes three objects: the FFF Behavior object 412, the CellEditing object 414, and the Spreadsheet object 416. CellEditing object 414 and Spreadsheet object 416 are exactly the same as in Spreadsheet Behavior 106, as described above with reference to FIG. The FFFBehavior object 412 replaces the GridBehavior object in the context of free floating fields. Like GridBehavior, FFFBehavior object 412 has an interface for grid object 130 (2) and manages "edit reference" operations on free floating fields. [0052]<u style="single">Computing environment example</u>Figure 7 shows an example of an independent computing device 700 that can be used to implement the integrated spreadsheet / table architecture of Figures 1 and 4. The computing device 700 includes general-purpose computers (for example, workstations, servers, desktop computers, laptop computers, etc.), handheld computing devices (for example, PDAs, PIMs, etc.), and mobile communication devices (for example, mobile phones with computing power). It can be implemented in a variety of ways, including telephones) or other types of dedicated electronic devices (eg, set-top boxes, game consoles, etc.). [0053] In the example shown, the computing device 700 includes a bus 706 that connects various system components such as one or more processors or processors 702, system memory 704, and system memory 704 to processor 702. Bus 706 represents one or more types of bus structures, including memory buses or memory controllers, peripheral buses, high-speed graphics-only ports, and processors or local buses that use different bus architectures. The system memory 704 includes read-only memory (ROM) 708 and random access memory (RAM) 710. The basic input / output system (BIOS) 712, which contains basic routines that help transmit information between elements within the computing device 700, is stored in ROM 708. [0054] The computing device 700 also includes a hard disk drive 714 that reads and writes to and from one or more hard disks (not shown). Magnetic disk drive 716, CD that reads and writes to and from the removable magnetic disk 718 Some computing devices can include an optical disk drive 720 that reads and writes to and from a removable optical disk 722, such as a ROM or other optical medium. The hard disk drive 714, the magnetic disk drive 716, and the optical disk drive 720 are connected to the bus 706 by the hard disk drive interface 724, the magnetic disk drive interface 726, and the optical drive interface 728, respectively. Separately, hard disk drive 714, magnetic disk drive 716, and optical disk drive 720 can be connected to bus 706 via a SCSI interface (not shown). Other types of computer-readable media such as magnetic cassettes, flash memory cards, digital videodiscs, random access memory (RAM), and read-only memory (ROM) can also be used in the operating environment example, or should be used instead. Can be done. [0055] ROM 708, RAM The 710, hard disk 714, magnetic disk 718, or optical disk 722 can contain any number of program modules, such as the operating system 730, one or more application programs 732, other program modules 734, and program data 736. As an example, architecture 100 can be implemented as one or more programs 732 or program modules 734 that are stored in memory and executed by processor 702. Drives and associated computer-readable media include non-volatile storage for storing computer-readable instructions, data structures, program modules, and other data for the computing device 700. [0056] On some computing devices 700, users can enter commands and information through input devices such as the keyboard 738 and pointing device 740. Other input devices (not shown) include microphones, joysticks, gamepads, satellite dishes, scanners, and more. However, some computing devices may not have this type of input device. These input devices and other input devices are connected to the processing device 702 through interface 742, which is coupled to bus 706. In some computing devices 700, the display 744 (eg, monitor, LCD) is connected to bus 706 via an interface such as a video adapter 746. However, some devices may not have this type of display device. The computing device 700 can also include other peripheral output devices (not shown) such as speakers and printers. [0057] In general, the data processor of a computing device 700 is programmed with instructions stored at different times on various computer-readable storage media of the computer. Programs and operating systems are typically distributed, for example, on floppy (registered trademark) disks or CD-ROMs, or over the Internet. Installed or loaded from those media into the auxiliary storage of the computing device 700. At least some of these instructions are loaded into the main storage of the computing device at run time. The computing devices described herein include these types and various other types of computer-readable storage media, which work in conjunction with a microprocessor or other data processor to perform the steps described below. Contains instructions or programs. The service system also includes the computing device itself when programmed by the methods and techniques described below. [0058] [0058] For illustration purposes, programs and other executable program components such as operating systems are shown here in different blocks, but such programs and components are different storage components of the compute device 700 at different times. It will be understood that it is placed inside and executed by the computer's data processor. [0059] Note that the computer 700 can be connected to the network via a wired or wireless connection to exchange information with one or more remote computers. Against the backdrop of such a network, the computer 700 is configured to store and run part of the architecture 100, while storing and running other parts of the architecture on one or more remote computers. it can. For example, the document renderer 102 can be placed on one computer and the remaining components on another computer. As a result, the architecture is distributed and the various components are stored on different computer-readable media. [0060]<u style="single">General calculation</u>Figure 8 shows the Table / Spreadsheet Process 800 implemented by Table / Spreadsheet Architecture 100 in Figure 1. Process 800 can be achieved by software stored and executed on a computer such as the computing device 700 in Figure 7. Therefore, process 800 can be implemented as a computer executable instruction that performs the operations and tasks shown in the block of FIG. 8 when executed on a processing system such as processor device 702. [0061] At block 802, architecture 100 creates the corresponding set of tables 104, spreadsheet 106, and grid object 130 for the new table UI that will be displayed as part of the document. In one embodiment, the GridBehavior object 150, the CellEditing object 152, and the Spreadsheet object 154 are first created for the new table, and then the Spreadsheet object 154 creates the associated grid object 130 within the spreadsheet engine 112. The grid object 130 includes a format table 132 and a cell table 134. If this is the first spreadsheet, workbook 110 will also be created. The grid 130 and workbook 110 then create other objects, such as formula manager 140 and cell 136 for each cell in the table you are creating. [0062] At block 804, in response to the user entering data and / or expressions in the table, this architecture takes the user input and passes it to the spreadsheet engine 112 for processing. More specifically, in a subsequent embodiment, Spreadsheet object 154 receives a table parsed notification from document renderer 102 and passes it to grid 130 of the new table. For example, suppose a user creates the following table. [0063] [table 1]<img file="JP4522650B2_D0001.tif" />[0064] The HTML code for this table looks like this: <table> <tr> <td> 7 </ td> <td FMLA = "= A1 + A2"> 15 </ td> </ tr> <tr> <td> 8 </ td> <td> </ td> </ tr> </ table> Using the enumeration method provided by the GridBehavior object 150, four cells 136 (1) -136 (4) are retrieved, one for each existing cell in the table. Spreadsheet object 154 receives a data value of 7 for cell A1, a data value of 8 for cell A2, and a formula for cell B1 and passes this information to the spreadsheet engine 112. [0065] This architecture determines in block 806 whether to parse the user input information or delay the parse to be done later, based on the user's input. In this architecture, it is preferable to adopt a delayed parsing system that parses cells only when necessary, such as when a formula is loaded for the first time or when a value is edited or referenced for the first time. However, most cells in the table do not contain the values referenced by the formula, so unexpressed cells are parsed only as needed. If a cell containing a formula is found when loading the table, the cell is immediately parsed and added to the recalculation chain. If the cell does not contain a formula, do not parse until the formula needs a value. [0066] Assuming that block 808 requires parsing (that is, a "no" branch from block 806), the information entered by the user is parsed and based on this information Table 132 in the format and Table 134 in the cell. Is updated. For example, cell A1 is parsed first, but the order is not important. The parsing system 144 evaluates whether an expression exists. In this case, the formula is not found and the cell is not parsed and is marked as parsed later. The corresponding 0,0 entry in cell Table 134 is set to point to unparsed cell 136 (1). [0067] Cell B1 is then parsed. Here, the parsing system 144 finds the expression "FMLA" attribute (that is, "= A1 + A2"), parses the expression string, and returns the appropriate variant type. This variant is placed in a new cell 136 (2), which is stored in the appropriate position 0,1 in table 134 of the cell. In addition, this formula is added to the chain of formulas held by the recalculation engine 142. [0068] Cells A2 and B2 are parsed in the same way as A1 because neither cell contains a formula, and references to unparsed cells 136 (3) and 136 (4) are added to cell Table 134. To. When all cells have been parsed, the recalculation engine initiates a first recalculation that determines the actual value to display in the cell that contains the formula. [0069] At block 810, this architecture determines if recalculation is appropriate. Some user inputs do not require recalculation, such as inserting new data values that are not referenced by the expression. If no recalculation is needed, the flow continues to block 814, where it determines if the table needs to be updated taking into account user input. [0070] Assuming that the recalculation is appropriate in block 812 (that is, the "yes" branch from block 810), various expressions that may be affected by user input are recalculated. In the current example, the operation of entering a value in cell 136 of table 134 of the cell triggers a data change notification to the registered listeners, including the grid object 130. The grid object 130 identifies the changed cell and forwards the notification to the formula manager 140, thereby marking the formula as dirty according to the changed cell if recalculation is needed. [0071] The grid object then calls the recalculation engine 142, loops through the recalculation chain, and recalculates the various affected expressions (block 812 (1)). You can parse unparsed cells that were left parsed while evaluating the expression in the expression chain (block 812 (2)). In this case, when the formula = A1 + A2 is evaluated, the recalculation engine finds that those cells are not parsed. Immediately request parsing 144 for complete parsing of the cell. Parsing 144 performs parsing and enters values 7 and 8 in table 134 of cells. The recalculation engine can then evaluate the expression = A1 + A2 using the new values found by the parser 144. [0072] When the recalculation engine 142 exits, control is returned to workbook 110. Workbook 110 calls back to the recalculation engine 142 and recognizes which formula has changed as a result of the recalculation cycle. Workbook 110 then finds the grid object 130 holding the formula, calls it, and saves the cell containing the formula whose result has changed. [0073] At block 814, this architecture determines if the result has changed after the recalculation. If the result has not changed (ie, a "no" branch from block 814), the process flow continues to block 804 for the next user input. Conversely, if the results have changed (that is, a "yes" branch from block 814), architecture 100 loads the updated table with the modified values and renders the updated table as part of the document. Be done (block 816). [0074] Note that the above example assumes that the user has entered data or an expression. The user can also change the format of one or more cells in the table. Process 800 handles format changes in essentially the same way, but handles changes in format Table 132 instead of cell Table 134. [0075]<u style="single">User interface features</u>Architecture 100/400 supports a number of user interface (UI) features within a rendered document, communicating to the user that the table is not just a table, but a full-featured spreadsheet. These UI features will be described separately below with reference to Figures 2, 3, 5, and 6. These features are in line with the basic operations and internal mechanisms of the various components within Architecture 100/400. These aspects will be described in detail later in this disclosure under the heading "Features of Function". [0076] One of the main benefits of incorporating spreadsheet functionality into a table is that the document is primarily a spreadsheet document created by a spreadsheet application (for example, a ".xls" file output from an "Excel " program). The point is that the user does not have to think about whether it is a word processing document created by a word processing application (for example, a ".doc" file output from a "Word " program). Instead, the user creates an HTML document (or other markup language-based document, such as an XML document) that can contain both text and spreadsheet / table components. By incorporating spreadsheet functionality into a table, users can create documents around the table without being restricted to a grid layout for all document content, as is the case with spreadsheet programs. [0077]<u style="single">Integrated header</u>In Table 124, you can switch between "table look" (Figure 2) and "spreadsheet look" (Figure 3) depending on whether the user is editing the table. The look of a spreadsheet can be viewed in a variety of ways, including active editing of cells, moving the pointer over a table, or doing something else. As shown in Figure 3, the spreadsheet looks like column headers 302 (1) -302 (3) and row headers 304 (1) -304 (6), which are the columns and rows of the table, respectively. Is integrated with. Visually, the column header 302 is displayed directly above the column, labeled with the letters A, B, C, etc., the row header 304 is located to the left of the row, and the numbers 1, 2, 3, etc. are labeled. Attached as. [0078]<u style="single">Intelligent selection function</u>This architecture has a high degree of intelligent ability to identify the type of content in a cell when the user selects the cell. For example, determine if a cell contains a data value, text, or an expression. If the selected cell contains text or a value, the UI displays this selection as a character-based cursor with the cell editable. If the selected cell contains a formula, this UI shows the selection by highlighting the entire result of the formula. The second selection gesture allows the user to edit the expression in the expression edit box. [0079]<u style="single">Key processing</u>Some keys are assigned different interpretations depending on the contents of the cell. This dynamic interpretation addresses race conditions when looking at tables in a word processing program and when looking at spreadsheets. For example, the "Enter" key usually means a newline in a word processing program, but moves to the next cell in a spreadsheet program. [0080] [0080] If a cell contains text (for example, cells A1-A6, B1-B5, and C1 in Figure 3), the architecture interprets this cell as primarily a word processing-based cell, and the user processes it. Treat the keys as if you were working within the application. Therefore, the "Enter" key means a return line feed, the "Tab" key means a tab move to a certain distance, and the "=" key entered at a place other than the beginning of the cell is the same as the symbol and the formula. Does not represent, etc. [0081] If a cell contains a formula or data value (for example, cell C2-C6 in Figure 3), this cell is primarily interpreted as a spreadsheet-based cell, and the user is working within a spreadsheet application. Treat the key as if it were. So the "Enter" and "Tab" keys mean navigation commands to move to the next cell, the "=" key at the beginning of a cell means the start of an expression, and so on. [0082]<u style="single">Expanding the table</u>Spreadsheet users are accustomed to the look and feel of an infinite grid. Although the spreadsheet in Figure 3 does not look the same as the infinite grid, Table 124 has column expansion controls 306 and row expansion controls 308, which make it easy to add columns and rows, respectively. Controls 306 and 308 include an operable add icon with the column / row indicated by the dash, indicating that you can add columns and rows by simply activating the icon. [0083]<u style="single">Behavior resizing</u>Table 124 saves column widths and wraps text as the user enters sentences and phrases. Note that in Figure 3, item 2 in cell B5 wraps within the cell rather than resizing to fit the column width to fit the entire item. [0084]<u style="single">Expression edit box</u>This architecture provides a formula edit box for inserting and editing formulas in table cells or free floating fields. The formula edit box overlays the original cell where the formula is placed and defaults to the cell size and shape first. When an expression exceeds its initial size, the expression edit box resizes to fit the expression. During the resizing, the formula edit box first extends horizontally and then vertically. The size of the original table does not change. The ability to resize the local formula edit box instead of cells and tables is observed to cause the table to resize strangely as the user clicks into and out of the cell containing the formula. You can solve the potential UI problem. [0085] Examples of formula edit boxes are shown in Figures 3, 5, and 6. In Figure 3, the formula edit box 312 is above cell C6 and accepts total formulas. In Figure 5, the formula edit box 506 is floating above cell C3 and is resized to fit the expanded formula. Note that cell C3 in the original table has not been resized and remains the same size and shape within the table. In FIG. 6, the formula edit box 610 is placed above the free floating field 608 and is resized to fit a long formula. [0086]<u style="single">Reference edit</u>In Table 124, the user can perform a reference edit operation, the user references one or more cells, and extracts the data values to include in the formulas in the other cells. In Figure 3, the user begins entering the sum formula (ie, "= SUM ()") in the formula edit box 312 above cell C6. The user then references cells C2 through C5 using pointer 310 or some other mechanism. The referenced cells C2: C5 are shown as highlighted or otherwise selected, for example by a thick rectangular box surrounding the cell. [0087] When the user finishes selecting the desired cell (for example, after highlighting cells C2: C5 and then releasing the left mouse button), the referenced cell is added to the sum formula in formula edit block 312 (ie). , "= SUM (C2: C5)"). After further confirmation by the user (for example, pressing Enter), an update event occurs, Architecture 100 recalculates the formula, updates cell C6, and sums cells C2: C5, or $ 12,060. Display in cell C6. [0088]<u style="single">Cross table reference and generic recalculation</u>Architecture 100 supports cross-table references where cells in one table contain formulas that refer to cells in the other table. Architecture 100 also supports a cross-table reference editing operation that allows a user to reference a cell in one table or a free floating field when entering a formula in the other table. [0089] Figure 6 shows a cross-table reference where Table 606 contains references to Tables 602 and 604. All three tables are separate and independent of each other, and from an architectural point of view, they have their own set of grid objects 130, spreadsheet objects 106, and table objects 104. In Figure 6, cell B2 in Table 606 contains a sum formula for adding values to cells B2 and B3 in Table 602 (ie = SUM (Tablel! B2: Tablel! B3)). Cell B3 in Table 606 contains a sum formula for adding values to cells B2 through B4 in Table 604 (ie = SUM (Table2! B2: Table2! B4)). [0090] Cross-reference to other tables or free-floating fields is convenient because all tables and free-floating fields can be universally updated if only one of the tables changes. For example, suppose a user changes the value in cell B2 of Table 602 from $ 300 to $ 400. As a result of this change, Table 602 has been updated to reflect the new value of $ 400 and the total amount in cell B6 has been updated from $ 3,060 to $ 3,160. In addition, the value in cell B2 of table 606 is updated to $ 2,400 and the total amount in cell B4 of table 606 is changed from $ 7,800 to $ 7,900. [0091] The cross-table reference feature is a significant improvement over traditional OLE technology that embeds spreadsheet objects within a word processing document. In OLE, each spreadsheet object is independent of the other objects and cannot automatically reference cells to each other. Since the OLE method does not have a cross-reference function, it cannot support the function of performing a general-purpose update of the entire spreadsheet of the document as a result of changing the value in one spreadsheet. [0092]<u style="single">Free floating field reference edit</u>The reference edit operation can also be used when entering an expression in a free floating field. Consider Document 600 in Figure 6. The author is trying to summarize the total cost of all work items in the opening paragraph. Instead of entering a hard value, the user decides to insert a free floating field 608 that holds the total for the job. By using the free floating field 608, you can automatically update the amount when other estimates in the original table are modified. [0093] The user uses a reference edit operation to select cell B6 in Table 602 to urge element "Table1! B6" and cell B8 in Table 604 to urge element "Table2! B8". Enter the formula in the edit box 610 of the free floating field 608 by selecting, and retrieve the element "Table2! B8". When the user confirms this expression, the expression edit box 610 disappears and the total value "$ 12,060" is inserted into the free floating field 608. [0094] If the user subsequently changes the estimate for an item in Table 602 or 604, the total value in Free Floating Field 608 is also automatically updated. Extending the previous example, suppose the user changes the value in cell B2 of Table 602 from $ 300 to $ 400. As a result of this change, Table 602 has been updated to reflect the new value of $ 400 and the total amount in cell B6 has been updated from $ 3,060 to $ 3,160. The value in cell B2 of table 606 is updated to $ 2,400 and the total amount in cell B4 of table 606 is changed from $ 7,800 to $ 7,900. In addition, the total amount in Free Floating Field 608 will be updated from $ 12,060 to $ 12,160. All updates throughout the table and free floating fields are performed automatically in response to user changes to a single cell in a single table. [0095] Also note that free floating fields can refer to other free floating fields. For example, another free floating field can be added to document 600 to reference the first free floating field 608, or a combination of free floating field 608 and a table cell in tables 602, 604, and 606. [0096]<u style="single">Nested table</u>Architecture 100 supports tables that are nested within each other. FIG. 5 shows a situation in which the inner table 504 is nested within the cell B3 of the outer table 502. The two tables are managed independently and each have their own basic set of grid objects 130, spreadsheet objects 106, and table objects 104. In this example, cell C3 in the outer table 502 refers to the array of cells B1: B3 in the inner table 504, as represented by the sum formula in the formula edit box 506. Note that the reference syntax "Table2! B1" in the formula edit box refers to another table, not cell B3. This is essentially the same as the cross table reference editing operation described above, even if it is a table reference nested within a cell of the other table. [0097] Nested tables are another feature that is an improvement over traditional tables and spreadsheets. The OLE mechanism for embedding spreadsheet objects within a word processing document does not support nested tables. [0098]<u style="single">Common document behavior</u>This architecture allows common document behaviors for text bodies to be used across multiple tables. Functions such as spell checking, grammar checking, searching, and replacing are continuous across table boundaries and treat the contents of cells as if they were part of a document. In addition, text formatting is applied across boundaries. Essentially, any functionality added for text correction applies to the text inside the table across the boundaries of the table as well. Traditional OLE mechanisms that embed spreadsheet objects within word processing documents have not been able to support these common document behaviors across table boundaries. [0099]<u style="single">Features of the function</u>This section describes how this architecture supports the features of the user interface described above, such as recalculation, reference editing mechanisms, cross-table reference functionality, expression editing boxes, and structural changes to tables. The features of these functions will be described separately below. [0100]<u style="single">Data and display</u>Integrated Table / Spreadsheet Architecture 100/400 separates data and display capabilities of integrated tables / spreadsheets by adopting dual objects for each table or floating field. There is one spreadsheet and grid object pair for each table or floating field, as shown in Figure 4. The grid object 130 holds data and format information, facilitating the recalculation process. The corresponding spreadsheet object 106 displays tables and free floating fields as part of the document, and user input tables and free floating fields. more strongly associated with and capturing . [0101] Separation is convenient because the architecture can support cross-table lookup, other table reference editing, and generic recalculations throughout the document. The basic grid objects don't care about how the table is laid out or where they appear in the document, or whether there is one or more grid objects. Similarly, spreadsheet object 106 does not consider data and expressions, or the recalculation process. [0102]<u style="single">Recalculation</u>Recalculation is a function that Architecture 100 performs in response to modification of a table or free floating field. When modified, Architecture 100 recalculates all the tables in the document that appear to be affected by user input and the various expressions in the free floating fields. [0103] Continuing with the example in Figure 6, if the user changes the value in cell B2 of table 602 from $ 300 to $ 400, the recalculation engine 142 in spreadsheet engine 112 will have the formula in cell B6 of table 1. To recalculate and update the amount from $ 3,060 to $ 3,160. The recalculation engine 142 further recalculates the formula in cell B2 of table 606 for the amount $ 2,400 and recalculates the formula in cell B4 of table 606 for the amount $ 7,900. Finally, the recalculation engine 142 recalculates the expression in the free floating field 608 and updates the value from $ 12,060 to $ 12,160. This recalculation is automatically performed throughout the document in response to user input. [0104] Figure 9 details the recalculation process 900 for a single table. Table 902 (1) of the input version of the user interface is displayed when the user enters a new value "7" in cell A1, but that input has not yet been confirmed (for example, press Enter). Or click outside the cell). Table 902 (2) of the output version UI is displayed immediately after user confirmation. [0105] For Table 902, there are corresponding pairs of spreadsheet objects 106 and grid objects 130. The grid object 130 holds table 134 for cells and table 132 for formatting. Before the user enters "7" in cell A1, table 134 in cell stores the value "1" in cell A3 and stores the formula that references cell A1 (that is, "= A1") in cell C1. , Store the formula that adds cells A1 and C1 (that is, "= A1 + C1") in cell C3. Table 132 of the format shows that cell A3 is in numeric format and that cells C1 and C3 are in US dollar currency format. Table 902 (1) in the input version of the UI displays the result of the formatted expression as $ 0.00 in cell C1 and $ 1.00 in cell C3. [0106] The user then enters the value "7" in cell A1 of Table 902 (1) of the UI, as indicated by pointer 904. This value reaches spreadsheet object 106, as indicated by the flow arrow 910. After the user confirms this input by moving the selection from cell A1, the newly entered value "7" is passed to the spreadsheet engine 112, especially to the parser 144 of the formula manager 140 (in the flow). Arrow 912). [0107] The parsing system 144 executes parsing of the input and determines that the input is a data value. The parser 144 inserts the data value into cell A1 of cell Table 134 (flow arrow 914). This insertion causes a table change event, which is sent to the recalculation engine 142 to start the recalculation (flow arrow 916). The recalculation engine 142 follows the formula chain and recalculates the formula affected by the new data value in cell A1 anywhere. In this case, the formulas in cells C1 and C3 are affected, so these formulas are recalculated (flow arrow 918). By recalculation, the result "7" is stored in cell C1 and the result "8" is stored in cell C3. [0108] Then table 132 of the format is referenced to determine the desired format for the new value and the recalculated expression (flow arrow 920). Here, the result of the formula is set to the currency format indicated by the "$" symbol in cells C1 and C3, and the new value "7" is set to the numeric format indicated by the "#" symbol in cell A1. Will be done. [0109] The spreadsheet engine returns the formatted results $ 7.00 and $ 8.00 to spreadsheet object 106 (flow arrow 922). Spreadsheet object 106 updates the table with this formatted result and creates table 902 (2) in the output version of the UI (flow arrow 924). [0110] Recalculation events occur essentially instantly. The user simply sees the UI table change instantly from input version 902 (1) to output version 902 (2). [0111]<u style="single">Reference editing mechanism</u>You can use the reference editing mechanism to reference other cells to retrieve data, rather than having the user enter a value or reference syntax. In FIG. 9, consider the situation when the user creates the formula "= A1" in cell C1. The user selects cell C1 and enters the "=" symbol to indicate that it is an expression, and then refers to cell A1 by moving the mouse pointer 904 to cell A1 and clicking. Spreadsheet object 106 (that is, CellEditing object 152) captures this reference and passes it to the parser 144. The parser 144 recognizes this as a formula, creates a formula object, and inserts the formula into a cell in table 134 of the cell as indicated by cell C1. [0112]<u style="single">Cross table reference and generic recalculation</u>Architecture 100 allows reference editing capabilities to be extended across multiple tables and free floating fields that are distributed throughout the document. A cell in one table or free floating field can reference a cell in the other table, a different free floating field, or a combination of table cells and free floating fields. Architecture 100 automatically recalculates all tables and free floating fields affected by changes in cells or free floating fields in one table. [0113] Figure 10 shows a document 1002 containing multiple tables 1004 (1), ... 1004 (N), and multiple free floating fields 1006 (1), ... 1006 (M) distributed throughout the text body. Recalculation process 1000 is shown. A corresponding pair of spreadsheet objects 106 and grid objects 130 is created for each table 1004 (1) -1004 (N) and free floating fields 1006 (1) -1006 (M) in document 1002. [0114] In this figure, spreadsheet object 106 (1) and associated grid object 130 (1) support table 1004 (1) in the UI, and spreadsheet object 106 (N) and associated grid object 130 (N) are in the UI. Table 1004 (N) is supported, spreadsheet object 106 (N + 1) and associated grid object 130 (N + 1) support free floating field 1006 (1), spreadsheet object 106 (M) and The associated grid object 130 (N + M) supports free floating field 1006 (M). Table grid objects 130 (1) -130 (N) contain table 134 (1) -134 (N) in cells and table 132 (1) -132 (N) in format, respectively. FFF grid objects 130 (N + 1) -130 (N + M) each contain a single cell 136 (1) -136 (M) and a correspondingly formatted cell 138 (1) -132 (M). .. [0115] Assume that the user enters the total formula in cell B1 of table 1004 (N) in the UI to which he adds the three cells C1-C3 in table 1004 (1). Instead of entering the reference syntax (that is, "= SUM (Tablel! Cl: Table1! C3)"), the user simply moves the pointer 1010 to Table 1004 (1) and is indicated by selection block 1012. Just select the array of cells you want. The spreadsheet object 106 (N) (that is, the CellEditing object) associated with the source table 1004 (N) recognizes the reference editing operation and is selected in the remote referenced table 1 (flow arrow 1020). Capture cells C1-C3. When the user confirms this input by moving the selection from the referenced Table 1004 (1), the newly entered expression "= SUM (Table1! C1: Table1! C3)" is passed to the spreadsheet engine 112. In particular, it is passed to the parser 144 of the expression manager 140 (flow arrow 1022). [0116] The parser 144 determines that the input is an expression, creates an expression object (not shown), and adds the expression to the expression chain. The parser 144 inserts the formula into cell B1 of cell table 134 (N) in cell table N (flow arrow 1024). This insertion causes a table change event, which is sent to the recalculation engine 142 to start the recalculation (flow arrow 1026). [0117] The recalculation engine 142 traverses the entire formula chain and recalculates the formula in the table or free floating field affected by the addition of the new formula in cell B1. In this case, the equations in the free floating cells 136 (1) and 136 (M) are affected. However, since these expressions depend on the results of the newly entered expressions in Table N, they are moved to the end of the expression chain. Therefore, the new formula is calculated first (flow arrows 1028), and then the formulas in cells 136 (1) and 136 (M) of the free floating field are recalculated (flow arrows 1030 and 1032). By recalculation, the result "425" is obtained in the table cell B1 in the cell table N, the result "425" is obtained in the FFF cell 136 (1), and the result "425" is obtained in the FFF cell 136 (M). .. [0118] Then refer to Table 132 (N) in various formats and cells 138 (1) and 138 (M) in the format to determine the desired format for the result of the recalculated formula. Here, the results of the expressions are all in the currency format indicated by "$". Spreadsheet Engine 112 returns the formatted result "$ 425.00" to the associated spreadsheet objects 106 (N), 106 (N + 1), and 106 (N + M) (flow arrows 1034,1036, 1038). ). The spreadsheet object then updates its associated tables and free floating fields with their formatted results and outputs as shown in Figure 10 (flow arrows 1040, 1042, 1044). .. [0119] Once again, the recalculation event is momentary in nature, and the user simply recognizes the immediate changes in the affected UI tables and free floating fields throughout Document 1002. [0120]<u style="single">Expression edit box</u>The CellEditing object 152 manages an expression editing box in which the user edits the expression. Display a formula edit box in the user interface in response to the user typing the "=" symbol at the beginning of the cell. The formula edit box is overlaid on top of the cell as a separate input field where the user inserts the formula. The CellEditing object 152 captures user input for various Variant types in an expression, making it easy to edit references to other cells as a means of entering Variant types. Upon entering and confirming the expression through the expression editing box, the CellEditing object 152 passes the expression to the expression manager 140 in the spreadsheet engine 112 for parsing. The expression edit box is removed from the user interface. [0121]<u style="single">Structural changes</u>Table object 104 manages and monitors user input for structural changes such as row inserts / deletes and cell merges. When the user makes a structural change, the table object 104 raises an event for the GridBehavior object 150, notifies the spreadsheet engine 112, and updates table 134 in the UI table and associated cells. [0122] As mentioned above, changes to the cell table raise an event, which is returned to the recalculation engine 142 to start the recalculation cycle. The recalculation engine walks through the chain of formulas step by step, updating all cells affected by the structural change and returning errors that may result from the structural change (for example, the result reference value after removing the row / column). Is lost). The spreadsheet engine then outputs the recalculation results and updates the UI table to reflect the structural changes and recalculation results. [0123]<u style="single">Cut, copy, paste</u>You can use a separate document object to manage operations that affect the entire document rather than a specific table. The document object is responsible for first inserting the table / spreadsheet into the document. Document objects can be constructed in a manner similar to GridBehavior object 150 and configured to monitor cuts, copies, and pastes. When you perform a cut or copy operation, the object stores the HTML code on the gripboard. Subsequent paste operations will extract the HTML code from the gripboard and insert it in the appropriate location. Note that unlike some spreadsheet programs, the user does not have to cut / copy and paste immediately afterwards. [0124] A unique problem not found in traditional spreadsheet programs is the ability to create new tables through paste operations. When a new table is created, the architecture automatically renames the new table and adjusts all references in the pasted table. [0125]<u style="single">Conclusion</u>Although the above description uses a language specific to structural functions and / or methodological activities, the invention set forth in the accompanying claims is not limited to the particular function or activity described. Will be understood. Rather, certain functions and activities are disclosed as examples in which the claimed invention is practiced. [Simple explanation of drawings] FIG. 1 is a block diagram of an architectural example for integrating spreadsheet functionality into a table in a word processing program. FIG. 2 is a screen view of a rendered document containing a single table that can perform spreadsheet functions. In Figure 2, this table shows the "table appearance" in non-editing mode. FIG. 3 is a screen display of a rendered document in which the table represents the "spreadsheet appearance" in edit mode. FIG. 4 is a block diagram of another example of an architecture for integrating spreadsheet functionality into a table in a word processing program. The architecture in Figure 4 is an extension of the architecture in Figure 1 by supporting multiple tables and free floating fields. [Fig. 5] A screen view of a rendered document containing multiple tables. In particular, FIG. 5 shows a nested table in which one table is inserted into the other cell and can be referenced from one table to the other. FIG. 6 is a screen view of a rendered document containing multiple tables and free floating fields in edit mode. FIG. 6 is a diagram of a cross-table reference and an edit reference from a free floating field. FIG. 7 is a block diagram of an example computer implementing the architectures of FIGS. 1 and 4. FIG. 8 is a flow diagram of a process implemented by the architectures of FIGS. 1 and 4. FIG. 9 is a schematic diagram showing a table of user interfaces in a rendered document and the coordination of the basic functional components of this architecture during recalculation operations. [Fig. 10] Fig. 10 is a schematic diagram showing the cooperation between multiple UI tables and cross-table reference editing operations of the basic functional components of this architecture.
Every citation, both waysCites: the store holds 7 of 8
| Document | Relation | Office |
|---|---|---|
| JP10207805A | Cites | Japan |
| JP6180697A | Cites | Japan |
| JP6180698A | Cites | Japan |
| JP6139241A | Cites | Japan |
| JP5314152A | Cites | Japan |
| JP4225466A | Cites | Japan |
| JP6385960A | Cites | Japan |
| 岩谷香里、西羽生、クラリスワークス4.0パーフェクトマニュアル for Macintosh、日本、1997.07.22発行、第1版、153-167頁 | Non-patent | – |
| 松下典子、クラリスワークスステップアップ講座(表作成偏)表計算と作表機能を上手に使い分けよう、Mac People、日本、1998.10.01発行、第4巻、第19号、138-139頁 | Non-patent | – |
| 福原康児、クラリスワークスビジネス文書作成入門第4回 見積書、日経MAC、日本、1994.05.17発行、第14号、197-204頁 | Non-patent | – |
| 仙田明広、ワード2000見た目は地味でも「かゆい所に手が届く」新機能、日経PC21、日本、1999.08.01発行、第4巻、第8号、115-116頁 | Non-patent | – |
17 members in 6 offices
Priority claims9
| Document | Office | Kind | Date |
|---|---|---|---|
| 09599809 | United States of America | – | |
| 59980900 | United States of America | A | |
| 59980900 | United States of America | A | |
| 0116778 | United States of America | W | |
| 0116778 | United States of America | W | |
| 2000599809 | – | – | – |
| 2001016778 | – | – | – |
| US20000599809 | – | – | – |
| WO2001US16778 | – | – | – |
Members17
| Document | Office | Kind | |
|---|---|---|---|
| CA2408313A1 | Canada | A1 | |
| CA2800037A1 | Canada | A1 | |
| WO0198928A2 | World Intellectual Property Organization (WIPO) | A2 | |
| AU6489501A | Australia | A | |
| WO0198928A8 | World Intellectual Property Organization (WIPO) | A8 | |
| EP1325427A2 | European Patent Office (EPO) | A2 | |
| JP2003536164A | Japan | A | |
| US2005050088A1 | United States of America | A1 | |
| US2005055626A1 | United States of America | A1 | |
| US2005125377A1 | United States of America | A1 | |
| US7506242B2 | United States of America | B2 | |
| US7506243B2 | United States of America | B2 | |
| US7549115B2 | United States of America | B2 | |
| JP4522650B2This record | Japan | B2 | |
| EP2458511A2 | European Patent Office (EPO) | A2 | |
| EP2458511A3 | European Patent Office (EPO) | A3 | |
| CA2800037C | Canada | C |
31 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Cancellation because of completion of termEXPY | EXPY | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Written notification of registration of transferJAPANESE INTERMEDIATE CODE: R350R350 | R350 | |
| Request for change of ownership or part of ownershipJAPANESE INTERMEDIATE CODE: R313113S111 | S111 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Renewal fee payment (event date is renewal date of database)FPAY | FPAY | |
| Certificate of patent or registration of utility modelJAPANESE INTERMEDIATE CODE: R150R150 | R150 | |
| Certificate of patent or registration of utility modelJAPANESE INTERMEDIATE CODE: R150R150 | R150 | |
| First payment of annual fees (during grant procedure)JAPANESE INTERMEDIATE CODE: A61A61 | A61 | |
| Written decision to grant a patent or to grant a registration (utility model)JAPANESE INTERMEDIATE CODE: A01A01 | A01 | |
| Written amendmentJAPANESE INTERMEDIATE CODE: A523A521 | A521 | |
| Written permission of extension of timeJAPANESE INTERMEDIATE CODE: A602A602 | A602 | |
| Written request for extension of timeJAPANESE INTERMEDIATE CODE: A601A601 | A601 | |
| Re-examination (zenchi) completed and case transferred to appeal boardAppealJAPANESE INTERMEDIATE CODE: A912A912 | A912 | |
| Transfer to examiner for re-examination before appeal (zenchi)AppealJAPANESE INTERMEDIATE CODE: A911A911 | A911 | |
| Written amendmentJAPANESE INTERMEDIATE CODE: A821A521 | A521 | |
| Written amendmentJAPANESE INTERMEDIATE CODE: A523A521 | A521 | |
| Notification of appointment of power of sub attorneyJAPANESE INTERMEDIATE CODE: A7433RD13 | RD13 | |
| Decision of refusalJAPANESE INTERMEDIATE CODE: A02A02 | A02 | |
| Written amendmentJAPANESE INTERMEDIATE CODE: A523A521 | A521 | |
| Written permission of extension of timeJAPANESE INTERMEDIATE CODE: A602A602 | A602 | |
| Written request for extension of timeJAPANESE INTERMEDIATE CODE: A601A601 | A601 | |
| Notification of reasons for refusalJAPANESE INTERMEDIATE CODE: A131A131 | A131 | |
| Report on retrievalJAPANESE INTERMEDIATE CODE: A971007A977 | A977 | |
| Written request for application examinationJAPANESE INTERMEDIATE CODE: A621A621 | A621 |
Numbers
- Publication
- 4522650
- Publication, DOCDB
- 4522650
- Publication, EPODOC
- JP4522650B
- Application
- 2002503702
- Application, DOCDB
- 2002503702
- Application, EPODOC
- JP20020503702
Titles2
- Japanese
- スプレッドシートとワードプロセッシングの表を統合するシステムと方法
- English
- Systems and methods to integrate spreadsheets and word processing tables
Classification
- CPC, 3
- G06F40/177
- G06F40/18
- Y10S707/99931
- IPC, 2
- G06F17 21
- G06F17 24