{"text_format":"3","workbook":"xls","n_sheets":7,"sheets":["ESS SpreadSheet Features","Operations and Functions","Changing Cell Style","Undo & Redo","Totals","Sorting Data","Managing Cells"],"not_rendered":{"external_links":1},"read":"whole","date_system":"1900","formulas":"cached_only"}

{"sheet":"ESS SpreadSheet Features","index":0,"n_rows":22,"n_cols":3,"rows_kept":22,"merged":[[8,2,8,8],[9,1,21,1]],"flags":["formulas_cached_only"]}
[]
[null,"ESS SpreadSheet Features"]
[null,"Operators and Functions ","ExpressSpreadSheet contains many useful built-in functions, thus simplifying formula construction.  "]
[null,"Changing Cell Style ","Individual cell formatting. Customize the cell border styles, background & foreground colors, brush & font attributes, vertical & horizontal alignments and the display text format."]
[null,"Undo/Redo","ExpressSpreadSheet provides multiple undo/redo facilities by maintaining a history of editing changes. Operations such as formatting, inserting, deleting, clearing cells, changing cell contents, merging/splitting cells and sorting cells are all supported."]
[null,"Totals","ExpressSpreadSheet provides support for a useful range of totalling functions such as SUM, AVERAGE, MAX, MIN and more."]
[null,"Sorting Data","Data can be sorted against multiple columns.  A sort order can be specified for every column."]
[null,"Managing Cells ","Support is provided for insertion/deletion of specific rows/columns, plus cell merging and splitting.  "]
[]
[null,"Main Features Summary "," - MS Excel compatibility"]
[null,null,"- Cell Style Management"]
[null,null,"- Unlimited columns and rows"]
[null,null,"- Insert/delete columns/rows"]
[null,null,"- Merge/Split cells (safely)"]
[null,null,"- Multiple Undo/Redo via a history list"]
[null,null,"- Hide/show columns/rows"]
[null,null,"- Sorting by column (or multiple columns)"]
[null,null,"- Named cells and cell groups"]
[null,null,"- Two Painting styles plus custom painting"]
[null,null,"- Runtime customization"]
[null,null,"- Save/Load streams or xls files"]
[null,null,"- ReportLink for ExpressPrinting System"]

{"sheet":"Operations and Functions","index":1,"n_rows":82,"n_cols":8,"rows_kept":82,"merged":[[0,0,0,0],[0,9,98,11],[3,2,4,7],[8,2,8,6],[11,6,11,7],[18,2,18,7],[22,6,22,7],[30,2,30,7],[34,6,34,7],[41,2,41,7],[45,6,45,7],[54,2,54,7],[57,6,57,7],[64,2,64,7],[67,6,67,7],[78,6,78,7],[82,2,82,7]],"flags":["formulas_cached_only"]}
[null,null,"Built-in Operators and Functions"]
[]
[]
[null,null,"ExpressSpreadSheet provides a number of predefined operators and functions.  Some of these are illustrated below and support is also provided for creating and registering custom functions."]
[]
[]
[null,null," Arithmetic Operators "]
[null,null,"The five basic arithmetic operators are supported."]
[null,null,"+, -, *, /, ^"]
[null,null,"Examples:"]
[null,null,"Double click in the specified cell to see the formula displayed"]
[null,null,"Cell D12 contains G13+H13",11,null,null,"Arithmetic Data"]
[null,null,"Cell D13 contains G13-H13",7,null,null,9,2]
[null,null,"Cell D14 contains G13*H13",18]
[null,null,"Cell D15 contains G13/H13",4.5]
[null,null,"Cell D16 contains G13^H13",81]
[]
[null,null," Logical Operators"]
[null,null,"Logical operators perform a comparison of two items which can be cells, functions or literal values. "]
[null,null,"=, <>, <, >, <=, >="]
[null,null,"Examples:"]
[null,null,"Double click in the specified cell to see the formula displayed"]
[null,null,"Cell D23 contains G24=H24 ",false,null,null,"Logical Data"]
[null,null,"Cell D24 contains G24<>H24 ",true,null,null,-1,3]
[null,null,"Cell D25 contains G24 < 4",true]
[null,null,"Cell D26 contains G24>H24 ",false]
[null,null,"Cell D27 contains G24<=H24 ",true]
[null,null,"Cell D28 contains G24>=H14 ",false]
[]
[null,null," Arithmetic Functions "]
[null,null,"The following are examples of some of the mathematic,trigonometric, and rounding functions"]
[null,null,"ABS, COS, CEILING, LOG, SQRT, etc."]
[null,null,"Examples:"]
[null,null,"Double click in the specified cell to see the formula displayed"]
[null,null,"Cell D35 contains ABS(G36) ",0.12,null,null,"Arithmetic Data"]
[null,null,"Cell D36 contains COS(H36)",0.9928086358538663,null,null,-0.12,23.73]
[null,null,"Cell D37 contains CEILING(H36,1)",24]
[null,null,"Cell D38 contains LOG(H36)",1.375297738217339]
[null,null,"Cell D39 contains SQRT(H36)",4.87134478352744]
[]
[null,null," Logical Functions "]
[null,null,"Logical functions differ from logical operators in that a process is executed."]
[null,null,"AND, OR, NOT, IF, ISBLANK, ISERR, ISNUMBER, ISTEXT etc"]
[null,null,"Examples:"]
[null,null,"Double click in the specified cell to see the formula displayed"]
[null,null,"Cell E46 contains =AND(G47<H47,G48>H48)",null,false,null,"Logical Data"]
[null,null,"Cell E47 contains =OR(G47<H47,G48>H48) ",null,true,null,12,71]
[null,null,"Cell E48 contains =NOT(G47<H47)",null,false,null,0,1]
[null,null,"Cell E49 contains =IF(G47>H47,\">\",\"<\")",null,"<",null,null,"String"]
[null,null,"Cell E50 Contains =ISBLANK(G49)",null,true]
[null,null,"Cell E51 Contains =ISERR(H48)",null,false]
[null,null,"Cell E52 Contains =ISNUMBER(H49)",null,false]
[]
[null,null," Statistical Functions "]
[null,null,"These functions allow you to perform statistical calculations against a group of cells."]
[null,null,"AVERAGE, COUNT, MAX, SUM etc"]
[null,null,"Examples:"]
[null,null,"Double click in the specified cell to see the formula displayed",{"$nulls":3},"Statistical Data"]
[null,null,"Cell E59 contains =AVERAGE(G59:G61)",null,{"v":-4,"d":"-4.00"},null,-12,1]
[null,null,"Cell E60 contains =COUNT(H59:H61)",null,3,null,-2,2]
[null,null,"Cell E61 contains =MAX(G59:G61)",null,2,null,2,3]
[null,null,"Cell E62 contains =SUM(G59:G61)",null,-12]
[]
[null,null," Date and Time Functions "]
[null,null,"ExpressSpreadSheet provides a rich set of Date and Time functions"]
[null,null,"DATE, DAY, TIME, HOUR, MONTH, MINUTE, NOW, SECOND, TIME etc"]
[null,null,"Examples:"]
[null,null,"Double click in the specified cell to see the formula displayed",{"$nulls":3},"Date & Time Data"]
[null,null,"Cell E69 Contains =DATE(G69,H69,H70)",null,"1900-12-01",null,0.7,12]
[null,null,"Cell E70 Contains DAY(G70)",null,6,null,"1998-12-06",1]
[null,null,"Cell E71 Contains =TIME(H69,H70,H71)",null,"12:01:00",null,null,0]
[null,null,"Cell E72 Contains =HOUR(G69)",null,16]
[]
[null,null," Text Functions "]
[null,null,"Allow you to join strings, extract substrings, return the string length, etc."]
[null,null,"CONCATENATE, LEN, MID, UPPER etc"]
[null,null,"Examples:"]
[null,null,"Double click in the specified cell to see the formula displayed"]
[null,null,"Cell E79 Contains =CONCATENATE(G80,H80)",null,"Developer Express",null,"Text Functions Data"]
[null,null,"Cell E80 Contains =LEN(G80)",null,10,null,"Developer ","Express"]
[null,null,"Cell E81 Contains =MID(G80,4,5)",null,"elope"]
[null,null,"Cell E82 Contains =UPPER(G80&H80)",null,"DEVELOPER EXPRESS"]

{"sheet":"Changing Cell Style","index":2,"n_rows":38,"n_cols":9,"rows_kept":38,"merged":[[0,11,46,12],[1,1,1,8],[3,1,3,9],[4,1,4,9],[15,1,15,9],[16,1,16,9],[20,1,20,9],[21,1,21,9],[25,1,25,9],[26,1,26,9],[30,1,30,9],[31,1,31,9],[35,1,35,9],[36,1,36,9]],"flags":["formulas_cached_only"]}
[null,"Changing Cell Style"]
[null,"ExpressSpreadSheet provides individual style formatting for cells. This formatting can be saved to an external XLS file.  Custom painting is also available via code"]
[]
[null,"Border Style"]
[]
[]
[{"$nulls":3},1,null,1,null,1]
[{"$nulls":3},2,null,2,null,2]
[{"$nulls":3},3,null,3,null,3]
[{"$nulls":3},4,null,4,null,4]
[{"$nulls":3},5,null,5,null,5]
[{"$nulls":3},6,null,6,null,6]
[]
[]
[]
[null,"Background Colors"]
[]
[]
[]
[]
[null,"Fill Patterns"]
[]
[]
[]
[]
[null,"Font Properties"]
[]
[null,null,"text","Bold","Underlined","Red","Italic","Big","Large"]
[]
[]
[null,"Cell Alignment"]
[]
[null,null,"left center","left top","center top","right top","right center","right bottom","center bottom"]
[]
[]
[null,"Cell Formatting"]
[]
[null,null,"(21)","Text",763.9,"2/12/2002","288:57:25","13%","24:00"]

{"sheet":"Undo & Redo","index":3,"n_rows":13,"n_cols":7,"rows_kept":13,"merged":[[0,1,0,2],[1,1,1,6],[1,7,16,10],[2,0,3,0],[2,11,3,17],[4,1,5,1],[4,4,4,6],[6,1,7,1],[8,1,12,1]],"flags":["formulas_cached_only"]}
[null,"Undo & Redo"]
[null,"ExpressSpreadSheet maintains a history of actions.  Each data change and formatting action is stored, thus providing multiple undo/redo functionality."]
[]
[]
[null,"Experiment on the Data Matrix by changing data values and formatting.",null,null,"Data Matrix"]
[null,"Ctrl-Z and Ctrl-Y shortcuts allow you to undo/redo one operation at once.",null,null,"Sunday",35501,1]
[null,"See the effect of using the Ctrl-Z and Ctrl-Y keys to undo/redo single actions.",null,null,"Monday",35654,2]
[{"$nulls":4},"Tuesday",0.895833333333333,3]
[null,"If you are displaying this sheet via our FeaturesDemo, try using the right-click context menu options and the various buttons on the toolbar. In particular, test the undo/redo buttons which allow you to operate on multiple changes at once.",null,null,"Wednesday",36962,4]
[{"$nulls":4},"Thursday",35532,5]
[{"$nulls":4},"Friday",12,6]
[{"$nulls":4},"Saturday",0.00833333333333333,7]
[{"$nulls":4},"totals",143661.90416666665,28]

{"sheet":"Totals","index":4,"n_rows":17,"n_cols":13,"rows_kept":17,"merged":[[1,1,2,12],[4,2,4,3],[4,4,4,5],[4,7,4,8],[4,9,4,10],[4,11,4,12],[5,2,5,3],[6,2,6,3],[7,2,7,3],[8,2,8,3],[9,2,9,3],[10,2,10,3],[11,2,11,3],[12,1,13,3],[15,1,15,12],[16,1,16,12]],"flags":["formulas_cached_only"]}
[null,"Totals"]
[null,"The Features Demo provided with ExpressSpreadSheet shows how to supply runtime customization of summary information. See the comments after the following data matrix"]
[]
[]
[null,"First Name","Last Name",null,"Purchase Date ",null,"Product","Price",null,"Copies",null,"Totals"]
[null,"Jane","Johnson",null,null,"1998-03-12","Car",null,9999.99,null,5,null,49999.95]
[null,"Sam","Hill",null,null,"1997-03-12","Spaceship",null,25000,null,4,null,100000]
[null,"Karen","Holmes",null,null,"2002-03-12","Boat",null,8250,null,6,null,49500]
[null,"Bobbie","Valentine",null,null,"1997-03-11","Car",null,125000,null,5,null,625000]
[null,"Jennie","Valentine",null,null,"2002-03-12","Drill",null,71,null,3,null,213]
[null,"Ricardo","Menendez",null,null,"1997-03-12","Spaceship",null,40000,null,3,null,120000]
[null,"Frank","Christie",null,null,"1997-08-12","Hammer",null,25,null,1,null,25]
[{"$nulls":4},"Latest date:","2002-03-12"]
[{"$nulls":4},"Earliest date:","1997-03-11",null,"Average:",29763.712857142855,"Max:",6,"Min:",25]
[]
[null,"Select all the cells in a column above one of the white cells and then click on the summary button (left of the two sort buttons). "]
[null,"This will provide the choice of Sum, Average, Count, Max and Min and the result will be placed in the cell under the selection."]

{"sheet":"Sorting Data","index":5,"n_rows":16,"n_cols":6,"rows_kept":16,"merged":[[0,6,1,6],[3,1,3,5],[4,1,9,1],[4,7,4,8],[10,1,14,1],[12,6,16,6],[15,1,16,4]],"flags":["formulas_cached_only"]}
["l","Sorting Data"]
[null,"ExpressSpreadSheet enables you to sort data against multiple columns."]
[]
[]
[null,"In order to sort data, a block of cells needs to be selected and a means of calling the Sort function has to be provided. The remarks that follow assume that you are running our FeaturesDemo or another application providing Sort button(s)",null,"Strings","Dates","Times"]
[{"$nulls":3},"ExpressInspector","2000-03-14","14:56:00"]
[{"$nulls":3},"ExpressPrintingSystem","2000-03-14","10:52:00"]
[{"$nulls":3},"ExpressQuantumGrid","2000-03-22","23:12:00"]
[{"$nulls":3},"ExpressQuantumTreeList","2001-03-12","05:34:00"]
[{"$nulls":3},"ExpressQuantumTreeList","2001-03-12","12:45:00"]
[null,"When sorting, it is important to select all the dependent columns, otherwise a row can finish with a bad mix of data (use Ctrl-Z to reverse such an operation).",null,"ExpressSpreadSheet","2001-03-12","03:17:00"]
[{"$nulls":3},"ExpressSpreadSheet","2001-03-12","06:34:00"]
[{"$nulls":3},"ExpressSpreadSheet","2001-03-12","09:00:00"]
[{"$nulls":3},"ExpressSpreadSheet","2001-03-12","13:30:00"]
[]
[null,"Experiment using the sort buttons provided when you have one, two or all three columns of the data grid selected."]

{"sheet":"Managing Cells","index":6,"n_rows":11,"n_cols":5,"rows_kept":11,"merged":[[1,1,1,5],[3,1,3,5],[4,1,4,5],[5,1,5,5],[6,1,6,5],[8,2,8,3],[9,3,9,4],[10,1,10,5],[31,1,31,4],[33,4,33,5]],"flags":["formulas_cached_only"]}
[null,"Managing Cells"]
[null,"ExpressSpreadSheet supports full cell management: insertion, deletion of specific rows/columns, merging of cells and the splitting of merged cells."]
[]
[null,"Merging cells is very useful when lengthy text information spans several cells. Also, grouping cells this way can help when decorating the document by applying style formatting."]
[null,"The merge operation in ExpressSpreadSheet is totally safe: splitting the merged cells (or Ctrl-Z for undo) then displays the original contents."]
[null,"When merging, the top left cell becomes the primary cell and its contents & formatting will be displayed in the merged cell.  "]
[null,"In the following example, rows 8, 9 and 10 contain similar data and formatting. Note the effect of merging cells C9 & D9 and D10 & E10:"]
[null,null,"Making","RAD","a Reality"]
[null,null,"Making",null,"a Reality"]
[null,null,"Making","RAD"]
[null,"If you are displaying this file via the Features Demo, then you can try splitting the two merged cells and merging again by using the two buttons on the extreme right of the toolbar (or use right-click to invoke via the context menu).  "]