Tables are used in spreadsheets to present data to a user in an easily comprehendible and aesthetically pleasing format. One way that is frequently used to make tables more easily readable is to format alternating rows and/or columns with different background shading, background patterns, font colors, font styles, etc.
Present techniques to create alternating formatting on a spreadsheet table present some difficulties. For one, if a user manually formats the table with alternating formatting, the formatting does not update after actions such as adding, deleting, showing, hiding and/or moving table cells. Also, although alternate formatting may be applied through conditional formatting so that a table format is updated when cells are added or deleted, it is difficult to apply conditional formatting and all table format modifications cannot be taken into account.
The present disclosure describes a banding property that, when applied to a spreadsheet table, allows alternating formats to be easily applied to formattable table elements of the spreadsheet table. Formattable table elements (rows, columns, header row, totals row, etc.) can include multiple table cells so that the multiple table cells can be formatted together as a single element so that gradient formatting, shading, and the like can be applied across the range of the multiple table cells instead of each individual cell. When a structure of a table with alternating format is altered (e.g. a table row is hidden), the alternating format is automatically updated before the table is rendered.
The foregoing and other aspects of the subject matter disclosed herein will become more readily appreciated and will become better understood by reference to the following detailed description, when taken in conjunction with the accompanying drawings, wherein:
Overview
The presently described subject matter describes a spreadsheet table banding property that can be activated to implement alternate formatting of formattable table elements. “Banding” refers to the ability to format alternating table elements in different styles so as to make data in the table more easily readable. For example, alternating rows and/or columns in the body of a table may have a shaded background.
As used herein, the term “formattable table element” includes any cell or range of cells in a spreadsheet table that can be formatted as a single element. Examples of formattable table elements include, but are not limited to, table rows, table columns, header rows, total columns, etc.
Some formatting is easier to apply to a formattable table element than to the individual cells that make up the formattable table element, e.g. shading. Applying shading to a row to affect shading in all cells of the row is easier than applying shading to each individual cell. Also, some types of formatting won't work for a range of cells when applied to individual cells in that range. For example, consider gradient shading. Gradient shading applied to a range of cells provides a shade gradient from a first cell in the range to a last cell in the range. If the gradient were applied to individual cells, each cell would exhibit the complete range of the shading gradient and the desired appearance would not be achieved.
By virtue of the fact that the banding may be applied as a property of a spreadsheet table, applying banding to a table is easier than in previous spreadsheet applications. Once the property is applied with the appropriate formatting, the formatting remains with the table even after a table structure is altered. For example, if a table has alternate row shading and a row is deleted, the table is automatically updated so that the rows remain alternately shaded. In previous implementations, deletion of a non-shaded row would cause two shaded rows to appear adjacent to one another. Similar anomalies would occur when table elements were added, hidden, shown or moved.
The banding property may also be applied in a table style. Table styles are described in U.S. patent application Ser. No. ______, filed contemporaneously herewith by the present applicants, entitled “Customizable Styles for Spreadsheet Tables.” Said application is assigned to Microsoft Corp., the assignee of the present invention. When a table style incorporates a banding property, the banding property is applied to all instances of the table style unless it is removed from an instance of a table after the table is created.
These and other features of formattable spreadsheet table elements with automatic updating are described in greater detail below, with respect to the previously described figures.
Exemplary Spreadsheet Table With Row Striping—Hidden Rows
The exemplary spreadsheet table 100 includes a header row 102 that includes column labels, specifically, “Territory”, “Month” and “Unit Sales”. The exemplary table 100 includes rows 103-108, wherein odd-numbered rows 103, 105, 107 are formatted with a background fill (i.e. “shading”) that is not present in the even-numbered rows 104, 106, 108. This alternate shading of rows is an example of row striping, or banding.
In typical spreadsheet applications, the row striping would not be maintained after the hiding of row 106 and a user would have to manually reformat the table 100 to re-effect the row striping. Here, however, the banding property associated with the exemplary spreadsheet table 100 automatically updates the row striping after the single row 106 has been hidden.
Although this particular example deals with a hidden row, other operations that result in a change in the structure of the exemplary spreadsheet table 100 causes the table 100 to be reformatted. Such other operations include showing (un-hiding), adding, deleting or moving a table element such as a row, column, etc.
Exemplary Spreadsheet Table With Row Striping—Added Rows
It is noted that the present example deals with table rows 203-208 as a formattable element that can be formatted as a single unit. Other formattable table elements included in table 200 include the header row 202 and the totals row 210 as well as columns 212, 214, 216. Formattable table elements are described in greater detail below, with respect to subsequent figures.
Exemplary Spreadsheet Table With Multi-Row Striping
The exemplary spreadsheet table 300 includes a header row 302 and rows 310-320. Rows 310 and 312 are included in row stripe 304; rows 314 and 316 are included in row stripe 306; and rows 318 and 320 are included in row stripe 308.
This particular example shows how a gradient format can be applied across a range of table cells by applying the gradient format to a formattable table element. Here, each row stripe of two rows comprises a formattable table element. Since all table cells across each row stripe can be formatted as a single element, the gradient spans all the cells in a row instead of each individual cell.
Exemplary Spreadsheet Table with Row Striping and Borders
In the present example, a first outside border 422 surrounds stripe 404 and a second outside border 424 surrounds stripe 408. To effect this, a property associated with the exemplary table 400 is configured to format alternating stripes wherein each stripe is two (2) rows high and wherein the alternating format is denoted by a border.
Once again, the advantage of being able to format multiple table cells as a single element is clear. If only individual table cells could be formatted with a border, a border could not be placed around a row stripe without significant effort on the part of a user to format each individual cell to create a border outside each row stripe.
Here too, if the table structure were to change by way of adding a row, deleting a row, etc., the table format would be automatically updated to keep row stripes two rows high and to keep an outside border around alternating row stripes. Therefore, a user would not have to manually recreate the alternating stripes each time the table structure changed.
Exemplary Spreadsheet Table with Row Striping and Column Striping
The exemplary spreadsheet table 500 includes a header row 502 and rows 503-508. The exemplary table 500 also includes columns 511-513. The banding property associated with the exemplary table 500 is configured for alternate row striping and alternate column striping.
In the present example, the odd-numbered rows (503, 505, 507) are formatted with a grid fill pattern that is not present in the even-numbered rows (504, 506, 508). The even-numbered column (512) is formatted with a cross-hatch fill pattern that is not present in the odd-numbered columns (511, 513).
An undesirable appearance would result if table cells included in odd-numbered rows and even-numbered columns were formatted with both the grid fill pattern and the cross-hatch fill pattern. Therefore, the banding property associated with table 500 is configured so that column formatting takes precedence over row formatting. As a result, all table cells included in column 512 include the cross-hatch fill pattern regardless of whether they are contained in a row where cells to not have a fill pattern.
It is noted that some formats may be combined, i.e. they are compatible. For example, a bold font format and an underline font format are compatible. When one formattable table element includes bold text and another formattable table element includes underlined text, table cells that are included in both formattable table elements can include bold and underlined text.
Any precedence order that is established takes format compatibility into account. Only incompatible formats need some sort of precedence order established for them.
Exemplary Spreadsheet Table with Row Striping, Column Striping & Borders
The exemplary spreadsheet table 600 includes a header row 602 and rows 603-608. The exemplary table 600 also includes columns 611-613. The table property associated with the table 600 is configured with row stripes that are two (2) rows high. Row stripe 614 consists of row 603 and row 604; row stripe 616 consists of row 605 and row 606; and row stripe 618 consists of row 607 and row 608.
The banding property of the exemplary table 600 is also configured to render an outside border around each row stripe. In the present example, border 620 appears around row stripe 614 and border 622 appears around row stripe 618.
As in the previous example, the banding property of the exemplary spreadsheet table 600 is configured to apply a column striping format over a row striping format. However, since a table cell can display the column striping format (i.e. the cross-hatch fill) and a border simultaneously without presenting an unacceptable or confusing appearance, the row striping format (i.e. an outside border) is not overridden by the column striping format (i.e. cross-hatch fill).
Exemplary Computer System and Spreadsheet Application
Furthermore, it is noted that particular functionality is attributed to certain elements in the following discussion. Such attribution is for discussion purposes only and functions necessary to carry out the described techniques may be allocated differently among shown elements or other elements in other implementations.
The exemplary computer system 700 includes a processor 702 and memory 704. The exemplary computer system 700 also includes an input-output (IO) module 706 configured to transmit data between the computer system 700 and external devices (not shown), such as a keyboard, mouse, etc. A display 708 is shown included in the computer system 700, however the display 708 may be situated separate and apart from the computer system 700, in which case it (display 708) would communicate with the computer system 700 via the IO module 706. A user interface 710 is rendered on the display 708.
Other miscellaneous hardware components 712 are included in the exemplary computer system 700. Said hardware components 712 are hardware components typically found in computer systems and/or are necessary to facilitate the operations described herein and attributed to the computer system 700.
The memory 704 includes an operating system 714 that is configured to provide miscellaneous software applications and to control processing functionality for the computer system 700. A spreadsheet application 716 is stored in the memory 704 of the computer system 700.
The spreadsheet application 716 is configured to perform the functions described herein with respect to previous and subsequent figures. The spreadsheet application 716 includes a control module 718, a table formatting module 720 and a rendering module 722. The formatting module 720 is configured to allow a user to apply formats to formattable table elements contained in a spreadsheet table. The rendering module 722 is configured to render spreadsheets generated by the spreadsheet application 716 on the user interface 710.
A spreadsheet table 724 is stored in the memory 704 and is shown rendered on the display 708 as a part of the user interface 710. The spreadsheet table 724 includes several formattable table elements: a header row 726, table rows 728, table columns 730 and individual table cells 732 (only one individual table cell is labeled with reference numeral 732).
It is noted that some table cells 732 are included in more than one formattable table element. For example, the table cell labeled with reference numeral 732 is included in a first row 728 table element and a first column 730 table element. The control module 718 establishes a precedence order for incompatible table element formats that is applied in the event that a table cell is included in two or more formattable table elements.
Other formattable table elements that are not shown could be included in the spreadsheet table 724. These include, but are not limited to multi-row stripes, multi-column stripes, a totals row, etc. As previously discussed, each formattable table element can be formatted as a single element no matter how many table cells are included in the formattable table element.
The control module 718 is configured to allow a user to modify the structure of the spreadsheet table 724, such as by adding, deleting, hiding, showing or moving a table element 724-732. When such a modification occurs, the formatting module 720 is configured to detect the modification and to apply the subscribed formatting to the table 724. The reformatted table 724 is then rendered (via rendering module 722) on the user interface 710.
For example, if the table 724 includes row striping on alternate rows 728 and a row is deleted, the formatting module 720 reformats the table 724 so that the row striping persists on alternate rows as previously described.
The functionality of the computer system 700 and its elements will be described in greater detail below, with respect to the methodological implementation depicted in
Exemplary Methodological Implementation
At block 802, the rendering module 722 (
At block 812, the control module 718 determines if an update to the structure of the spreadsheet table 724 has been made, such as an addition, deletion, hiding, showing or moving of a formattable table element. If not (“No” branch, block 812), then the process reverts to block 804.
When a table structure update is detected (“Yes” branch, block 812), the formatting module 720 reformats the spreadsheet table 724 (block 814) and the rendering module 722 renders the updated spreadsheet table 724 at block 816.
Accordingly, the format of the spreadsheet table 724 is automatically maintained when changes are made to the table 724, thus relieving a user of the burden of manually reformatting the table 724 each time the table is modified.
Exemplary Operating Environment
The described techniques and objects are operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well known computing systems, environments, and/or configurations that may be suitable for use include, but are not limited to, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
The following description may be couched in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. The described implementations may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.
With reference to
Computer 910 typically includes a variety of computer readable media. Computer readable media can be any available media that can be accessed by computer 910 and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by computer 910. Communication media typically embodies computer readable instructions, data structures and/or program. Combinations of the any of the foregoing should also be included within the scope of computer readable media.
The system memory 930 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 931 and random access memory (RAM) 932. A basic input/output system 933 (BIOS), containing the basic routines that help to transfer information between elements within computer 910, such as during start-up, is typically stored in ROM 931. RAM 932 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 920. By way of example, and not limitation,
The computer 910 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,
The drives and their associated computer storage media discussed above and illustrated in
The computer 910 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 980. The remote computer 980 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 910, although only a memory storage device 981 has been illustrated in
When used in a LAN networking environment, the computer 910 is connected to the LAN 971 through a network interface or adapter 970. When used in a WAN networking environment, the computer 910 typically includes a modem 972 or other means for establishing communications over the WAN 973, such as the Internet. The modem 972, which may be internal or external, may be connected to the system bus 921 via the user input interface 960, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 910, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,
While one or more exemplary implementations have been illustrated and described, it will be appreciated that various changes can be made therein without departing from the spirit and scope of the claims appended hereto.