surpass 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. data/History.txt +0 -0
  2. data/README.txt +133 -0
  3. data/Rakefile +35 -0
  4. data/examples/big-16mb.rb +25 -0
  5. data/examples/big-random-strings.rb +28 -0
  6. data/examples/blanks.rb +34 -0
  7. data/examples/col_width.rb +16 -0
  8. data/examples/dates.rb +31 -0
  9. data/examples/format.rb +23 -0
  10. data/examples/hello-world.rb +9 -0
  11. data/examples/image.rb +10 -0
  12. data/examples/merged.rb +36 -0
  13. data/examples/merged0.rb +27 -0
  14. data/examples/merged1.rb +99 -0
  15. data/examples/num_formats.rb +55 -0
  16. data/examples/numbers.rb +24 -0
  17. data/examples/outline.rb +110 -0
  18. data/examples/panes.rb +48 -0
  19. data/examples/protection.rb +132 -0
  20. data/examples/python.bmp +0 -0
  21. data/examples/row_styles.rb +16 -0
  22. data/examples/row_styles_empty.rb +15 -0
  23. data/examples/set_cell_and_range_style.rb +12 -0
  24. data/examples/wrapped-text.rb +13 -0
  25. data/examples/write_arrays.rb +16 -0
  26. data/examples/ws_props.rb +80 -0
  27. data/lib/biff_record.rb +2168 -0
  28. data/lib/bitmap.rb +218 -0
  29. data/lib/cell.rb +214 -0
  30. data/lib/chart.rb +16 -0
  31. data/lib/column.rb +40 -0
  32. data/lib/document.rb +406 -0
  33. data/lib/excel_formula.rb +6 -0
  34. data/lib/excel_magic.rb +1013 -0
  35. data/lib/formatting.rb +554 -0
  36. data/lib/row.rb +137 -0
  37. data/lib/style.rb +179 -0
  38. data/lib/surpass.rb +51 -0
  39. data/lib/utilities.rb +86 -0
  40. data/lib/workbook.rb +206 -0
  41. data/lib/worksheet.rb +561 -0
  42. data/spec/biff_record_spec.rb +268 -0
  43. data/spec/cell_spec.rb +56 -0
  44. data/spec/data/random-strings.txt +10000 -0
  45. data/spec/document_spec.rb +168 -0
  46. data/spec/excel_formula_spec.rb +0 -0
  47. data/spec/formatting_spec.rb +53 -0
  48. data/spec/reference/P-0508-0000507647-3280-5298.xls +0 -0
  49. data/spec/reference/all-cell-styles.bin +0 -0
  50. data/spec/reference/all-number-formats.bin +0 -0
  51. data/spec/reference/all-styles.bin +0 -0
  52. data/spec/reference/mini.xls +0 -0
  53. data/spec/row_spec.rb +19 -0
  54. data/spec/spec_helper.rb +10 -0
  55. data/spec/style_spec.rb +89 -0
  56. data/spec/utilities_spec.rb +57 -0
  57. data/spec/workbook_spec.rb +48 -0
  58. data/spec/worksheet_spec.rb +0 -0
  59. data/stats/cloc.txt +8 -0
  60. data/stats/rcov.txt +0 -0
  61. data/stats/specdoc.txt +158 -0
  62. data/surpass-manual-0-0-3.pdf +0 -0
  63. data/surpass.gemspec +34 -0
  64. data/tasks/ann.rake +80 -0
  65. data/tasks/bones.rake +20 -0
  66. data/tasks/excel.rake +6 -0
  67. data/tasks/gem.rake +201 -0
  68. data/tasks/git.rake +40 -0
  69. data/tasks/metrics.rake +42 -0
  70. data/tasks/notes.rake +27 -0
  71. data/tasks/post_load.rake +34 -0
  72. data/tasks/rdoc.rake +51 -0
  73. data/tasks/rubyforge.rake +55 -0
  74. data/tasks/setup.rb +292 -0
  75. data/tasks/spec.rake +54 -0
  76. data/tasks/svn.rake +47 -0
  77. data/tasks/test.rake +40 -0
  78. metadata +144 -0
@@ -0,0 +1,1013 @@
1
+ # lots of Excel Magic Numbers
2
+ # Boundaries BIFF8+
3
+
4
+ MAX_ROW = 65536
5
+ MAX_COL = 256
6
+
7
+
8
+ BIFF_RECORDS = {
9
+ 0x0000 => "DIMENSIONS",
10
+ 0x0001 => "BLANK",
11
+ 0x0002 => "INTEGER",
12
+ 0x0003 => "NUMBER",
13
+ 0x0004 => "LABEL",
14
+ 0x0005 => "BOOLERR",
15
+ 0x0006 => "FORMULA",
16
+ 0x0007 => "STRING",
17
+ 0x0008 => "ROW",
18
+ 0x0009 => "BOF",
19
+ 0x000A => "EOF",
20
+ 0x000B => "INDEX",
21
+ 0x000C => "CALCCOUNT",
22
+ 0x000D => "CALCMODE",
23
+ 0x000E => "PRECISION",
24
+ 0x000F => "REFMODE",
25
+ 0x0010 => "DELTA",
26
+ 0x0011 => "ITERATION",
27
+ 0x0012 => "PROTECT",
28
+ 0x0013 => "PASSWORD",
29
+ 0x0014 => "HEADER",
30
+ 0x0015 => "FOOTER",
31
+ 0x0016 => "EXTERNCOUNT",
32
+ 0x0017 => "EXTERNSHEET",
33
+ 0x0018 => "NAME",
34
+ 0x0019 => "WINDOWPROTECT",
35
+ 0x001A => "VERTICALPAGEBREAKS",
36
+ 0x001B => "HORIZONTALPAGEBREAKS",
37
+ 0x001C => "NOTE",
38
+ 0x001D => "SELECTION",
39
+ 0x001E => "FORMAT",
40
+ 0x001F => "FORMATCOUNT",
41
+ 0x0020 => "COLUMNDEFAULT",
42
+ 0x0021 => "ARRAY",
43
+ 0x0022 => "1904",
44
+ 0x0023 => "EXTERNNAME",
45
+ 0x0024 => "COLWIDTH",
46
+ 0x0025 => "DEFAULTROWHEIGHT",
47
+ 0x0026 => "LEFTMARGIN",
48
+ 0x0027 => "RIGHTMARGIN",
49
+ 0x0028 => "TOPMARGIN",
50
+ 0x0029 => "BOTTOMMARGIN",
51
+ 0x002A => "PRINTHEADERS",
52
+ 0x002B => "PRINTGRIDLINES",
53
+ 0x002F => "FILEPASS",
54
+ 0x0031 => "FONT",
55
+ 0x0036 => "TABLE",
56
+ 0x003C => "CONTINUE",
57
+ 0x003D => "WINDOW1",
58
+ 0x003E => "WINDOW2",
59
+ 0x0040 => "BACKUP",
60
+ 0x0041 => "PANE",
61
+ 0x0042 => "CODEPAGE",
62
+ 0x0043 => "XF",
63
+ 0x0044 => "IXFE",
64
+ 0x0045 => "EFONT",
65
+ 0x004D => "PLS",
66
+ 0x0050 => "DCON",
67
+ 0x0051 => "DCONREF",
68
+ 0x0053 => "DCONNAME",
69
+ 0x0055 => "DEFCOLWIDTH",
70
+ 0x0056 => "BUILTINFMTCNT",
71
+ 0x0059 => "XCT",
72
+ 0x005A => "CRN",
73
+ 0x005B => "FILESHARING",
74
+ 0x005C => "WRITEACCESS",
75
+ 0x005D => "OBJ",
76
+ 0x005E => "UNCALCED",
77
+ 0x005F => "SAFERECALC",
78
+ 0x0060 => "TEMPLATE",
79
+ 0x0063 => "OBJPROTECT",
80
+ 0x007D => "COLINFO",
81
+ 0x007E => "RK",
82
+ 0x007F => "IMDATA",
83
+ 0x0080 => "GUTS",
84
+ 0x0081 => "WSBOOL",
85
+ 0x0082 => "GRIDSET",
86
+ 0x0083 => "HCENTER",
87
+ 0x0084 => "VCENTER",
88
+ 0x0085 => "BOUNDSHEET",
89
+ 0x0086 => "WRITEPROT",
90
+ 0x0087 => "ADDIN",
91
+ 0x0088 => "EDG",
92
+ 0x0089 => "PUB",
93
+ 0x008C => "COUNTRY",
94
+ 0x008D => "HIDEOBJ",
95
+ 0x008E => "BUNDLESOFFSET",
96
+ 0x008F => "BUNDLEHEADER",
97
+ 0x0090 => "SORT",
98
+ 0x0091 => "SUB",
99
+ 0x0092 => "PALETTE",
100
+ 0x0093 => "STYLE",
101
+ 0x0094 => "LHRECORD",
102
+ 0x0095 => "LHNGRAPH",
103
+ 0x0096 => "SOUND",
104
+ 0x0098 => "LPR",
105
+ 0x0099 => "STANDARDWIDTH",
106
+ 0x009A => "FNGROUPNAME",
107
+ 0x009B => "FILTERMODE",
108
+ 0x009C => "FNGROUPCOUNT",
109
+ 0x009D => "AUTOFILTERINFO",
110
+ 0x009E => "AUTOFILTER",
111
+ 0x00A0 => "SCL",
112
+ 0x00A1 => "SETUP",
113
+ 0x00A9 => "COORDLIST",
114
+ 0x00AB => "GCW",
115
+ 0x00AE => "SCENMAN",
116
+ 0x00AF => "SCENARIO",
117
+ 0x00B0 => "SXVIEW",
118
+ 0x00B1 => "SXVD",
119
+ 0x00B2 => "SXVI",
120
+ 0x00B4 => "SXIVD",
121
+ 0x00B5 => "SXLI",
122
+ 0x00B6 => "SXPI",
123
+ 0x00B8 => "DOCROUTE",
124
+ 0x00B9 => "RECIPNAME",
125
+ 0x00BC => "SHRFMLA",
126
+ 0x00BD => "MULRK",
127
+ 0x00BE => "MULBLANK",
128
+ 0x00C1 => "MMS",
129
+ 0x00C2 => "ADDMENU",
130
+ 0x00C3 => "DELMENU",
131
+ 0x00C5 => "SXDI",
132
+ 0x00C6 => "SXDB",
133
+ 0x00C7 => "SXFIELD",
134
+ 0x00C8 => "SXINDEXLIST",
135
+ 0x00C9 => "SXDOUBLE",
136
+ 0x00CD => "SXSTRING",
137
+ 0x00CE => "SXDATETIME",
138
+ 0x00D0 => "SXTBL",
139
+ 0x00D1 => "SXTBRGITEM",
140
+ 0x00D2 => "SXTBPG",
141
+ 0x00D3 => "OBPROJ",
142
+ 0x00D5 => "SXIDSTM",
143
+ 0x00D6 => "RSTRING",
144
+ 0x00D7 => "DBCELL",
145
+ 0x00DA => "BOOKBOOL",
146
+ 0x00DC => "SXEXT|PARAMQRY",
147
+ 0x00DD => "SCENPROTECT",
148
+ 0x00DE => "OLESIZE",
149
+ 0x00DF => "UDDESC",
150
+ 0x00E0 => "XF",
151
+ 0x00E1 => "INTERFACEHDR",
152
+ 0x00E2 => "INTERFACEEND",
153
+ 0x00E3 => "SXVS",
154
+ 0x00E5 => "MERGEDCELLS",
155
+ 0x00E9 => "BITMAP",
156
+ 0x00EB => "MSODRAWINGGROUP",
157
+ 0x00EC => "MSODRAWING",
158
+ 0x00ED => "MSODRAWINGSELECTION",
159
+ 0x00F0 => "SXRULE",
160
+ 0x00F1 => "SXEX",
161
+ 0x00F2 => "SXFILT",
162
+ 0x00F6 => "SXNAME",
163
+ 0x00F7 => "SXSELECT",
164
+ 0x00F8 => "SXPAIR",
165
+ 0x00F9 => "SXFMLA",
166
+ 0x00FB => "SXFORMAT",
167
+ 0x00FC => "SST",
168
+ 0x00FD => "LABELSST",
169
+ 0x00FF => "EXTSST",
170
+ 0x0100 => "SXVDEX",
171
+ 0x0103 => "SXFORMULA",
172
+ 0x0122 => "SXDBEX",
173
+ 0x0137 => "CHTRINSERT",
174
+ 0x0138 => "CHTRINFO",
175
+ 0x013B => "CHTRCELLCONTENT",
176
+ 0x013D => "TABID",
177
+ 0x0140 => "CHTRMOVERANGE",
178
+ 0x014D => "CHTRINSERTTAB",
179
+ 0x015F => "LABELRANGES",
180
+ 0x0160 => "USESELFS",
181
+ 0x0161 => "DSF",
182
+ 0x0162 => "XL5MODIFY",
183
+ 0x0196 => "CHTRHEADER",
184
+ 0x01A9 => "USERBVIEW",
185
+ 0x01AA => "USERSVIEWBEGIN",
186
+ 0x01AB => "USERSVIEWEND",
187
+ 0x01AD => "QSI",
188
+ 0x01AE => "SUPBOOK",
189
+ 0x01AF => "PROT4REV",
190
+ 0x01B0 => "CONDFMT",
191
+ 0x01B1 => "CF",
192
+ 0x01B2 => "DVAL",
193
+ 0x01B5 => "DCONBIN",
194
+ 0x01B6 => "TXO",
195
+ 0x01B7 => "REFRESHALL",
196
+ 0x01B8 => "HLINK",
197
+ 0x01BA => "CODENAME",
198
+ 0x01BB => "SXFDBTYPE",
199
+ 0x01BC => "PROT4REVPASS",
200
+ 0x01BE => "DV",
201
+ 0x01C0 => "XL9FILE",
202
+ 0x01C1 => "RECALCID",
203
+ 0x0200 => "DIMENSIONS",
204
+ 0x0201 => "BLANK",
205
+ 0x0203 => "NUMBER",
206
+ 0x0204 => "LABEL",
207
+ 0x0205 => "BOOLERR",
208
+ 0x0206 => "FORMULA",
209
+ 0x0207 => "STRING",
210
+ 0x0208 => "ROW",
211
+ 0x0209 => "BOF",
212
+ 0x020B => "INDEX",
213
+ 0x0218 => "NAME",
214
+ 0x0221 => "ARRAY",
215
+ 0x0223 => "EXTERNNAME",
216
+ 0x0225 => "DEFAULTROWHEIGHT",
217
+ 0x0231 => "FONT",
218
+ 0x0236 => "TABLE",
219
+ 0x023E => "WINDOW2",
220
+ 0x0243 => "XF",
221
+ 0x027E => "RK",
222
+ 0x0293 => "STYLE",
223
+ 0x0406 => "FORMULA",
224
+ 0x0409 => "BOF",
225
+ 0x041E => "FORMAT",
226
+ 0x0443 => "XF",
227
+ 0x04BC => "SHRFMLA",
228
+ 0x0800 => "SCREENTIP",
229
+ 0x0803 => "WEBQRYSETTINGS",
230
+ 0x0804 => "WEBQRYTABLES",
231
+ 0x0809 => "BOF",
232
+ 0x0862 => "SHEETLAYOUT",
233
+ 0x0867 => "SHEETPROTECTION",
234
+ 0x1001 => "UNITS",
235
+ 0x1002 => "ChartChart",
236
+ 0x1003 => "ChartSeries",
237
+ 0x1006 => "ChartDataformat",
238
+ 0x1007 => "ChartLineformat",
239
+ 0x1009 => "ChartMarkerformat",
240
+ 0x100A => "ChartAreaformat",
241
+ 0x100B => "ChartPieformat",
242
+ 0x100C => "ChartAttachedlabel",
243
+ 0x100D => "ChartSeriestext",
244
+ 0x1014 => "ChartChartformat",
245
+ 0x1015 => "ChartLegend",
246
+ 0x1016 => "ChartSerieslist",
247
+ 0x1017 => "ChartBar",
248
+ 0x1018 => "ChartLine",
249
+ 0x1019 => "ChartPie",
250
+ 0x101A => "ChartArea",
251
+ 0x101B => "ChartScatter",
252
+ 0x101C => "ChartChartline",
253
+ 0x101D => "ChartAxis",
254
+ 0x101E => "ChartTick",
255
+ 0x101F => "ChartValuerange",
256
+ 0x1020 => "ChartCatserrange",
257
+ 0x1021 => "ChartAxislineformat",
258
+ 0x1022 => "ChartFormatlink",
259
+ 0x1024 => "ChartDefaulttext",
260
+ 0x1025 => "ChartText",
261
+ 0x1026 => "ChartFontx",
262
+ 0x1027 => "ChartObjectLink",
263
+ 0x1032 => "ChartFrame",
264
+ 0x1033 => "BEGIN",
265
+ 0x1034 => "END",
266
+ 0x1035 => "ChartPlotarea",
267
+ 0x103A => "Chart3D",
268
+ 0x103C => "ChartPicf",
269
+ 0x103D => "ChartDropbar",
270
+ 0x103E => "ChartRadar",
271
+ 0x103F => "ChartSurface",
272
+ 0x1040 => "ChartRadararea",
273
+ 0x1041 => "ChartAxisparent",
274
+ 0x1043 => "ChartLegendxn",
275
+ 0x1044 => "ChartShtprops",
276
+ 0x1045 => "ChartSertocrt",
277
+ 0x1046 => "ChartAxesused",
278
+ 0x1048 => "ChartSbaseref",
279
+ 0x104A => "ChartSerparent",
280
+ 0x104B => "ChartSerauxtrend",
281
+ 0x104E => "ChartIfmt",
282
+ 0x104F => "ChartPos",
283
+ 0x1050 => "ChartAlruns",
284
+ 0x1051 => "ChartAI",
285
+ 0x105B => "ChartSerauxerrbar",
286
+ 0x105D => "ChartSerfmt",
287
+ 0x105F => "Chart3DDataFormat",
288
+ 0x1060 => "ChartFbi",
289
+ 0x1061 => "ChartBoppop",
290
+ 0x1062 => "ChartAxcext",
291
+ 0x1063 => "ChartDat",
292
+ 0x1064 => "ChartPlotgrowth",
293
+ 0x1065 => "ChartSiindex",
294
+ 0x1066 => "ChartGelframe",
295
+ 0x1067 => "ChartBoppcustom",
296
+ 0xFFFF => ""
297
+ }
298
+
299
+
300
+ STD_FUNC_BY_NAME = {
301
+ "ABS" => [0x018, 1, 1, "V", "V", false], # 1
302
+ "ACOS" => [0x063, 1, 1, "V", "V", false], # 2
303
+ "ACOSH" => [0x0e9, 1, 1, "V", "V", false], # 3
304
+ "ADDRESS" => [0x0db, 2, 5, "V", "V V V V V", false], # 4
305
+ "AND" => [0x024, 1, 30, "V", "R ...", false], # 5
306
+ "ARCTAN" => [0x012, 1, 1, "V", "V", false], # 6
307
+ "AREAS" => [0x04b, 1, 1, "V", "R", false], # 7
308
+ "ASC" => [0x0d6, 1, 1, "V", "V", false], # 8
309
+ "ASIN" => [0x062, 1, 1, "V", "V", false], # 9
310
+ "ASINH" => [0x0e8, 1, 1, "V", "V", false], # 10
311
+ "ATAN2" => [0x061, 2, 2, "V", "V V", false], # 11
312
+ "ATANH" => [0x0ea, 1, 1, "V", "V", false], # 12
313
+ "AVEDEV" => [0x10d, 1, 30, "V", "R ...", false], # 13
314
+ "AVERAGE" => [0x005, 1, 30, "V", "R ...", false], # 14
315
+ "AVERAGEA" => [0x169, 1, 30, "V", "R ...", false], # 15
316
+ "BETADIST" => [0x10e, 3, 5, "V", "V V V V V", false], # 16
317
+ "BETAINV" => [0x110, 3, 5, "V", "V V V V V", false], # 17
318
+ "BINOMDIST" => [0x111, 4, 4, "V", "V V V V", false], # 18
319
+ "CEILING" => [0x120, 2, 2, "V", "V V", false], # 19
320
+ "CELL" => [0x07d, 1, 2, "V", "V R", true], # 20
321
+ "CHAR" => [0x06f, 1, 1, "V", "V", false], # 21
322
+ "CHIDIST" => [0x112, 2, 2, "V", "V V", false], # 22
323
+ "CHIINV" => [0x113, 2, 2, "V", "V V", false], # 23
324
+ "CHITEST" => [0x132, 2, 2, "V", "A A", false], # 24
325
+ "CHOOSE" => [0x064, 2, 30, "R", "V R ...", false], # 25
326
+ "CLEAN" => [0x0a2, 1, 1, "V", "V", false], # 26
327
+ "CODE" => [0x079, 1, 1, "V", "V", false], # 27
328
+ "COLUMN" => [0x009, 0, 1, "V", "R", false], # 28
329
+ "COLUMNS" => [0x04d, 1, 1, "V", "R", false], # 29
330
+ "COMBIN" => [0x114, 2, 2, "V", "V V", false], # 30
331
+ "CONCATENATE" => [0x150, 0, 30, "V", "V ...", false], # 31
332
+ "CONFIDENCE" => [0x115, 3, 3, "V", "V V V", false], # 32
333
+ "CORREL" => [0x133, 2, 2, "V", "A A", false], # 33
334
+ "COS" => [0x010, 1, 1, "V", "V", false], # 34
335
+ "COSH" => [0x0e6, 1, 1, "V", "V", false], # 35
336
+ "COUNT" => [0x000, 0, 30, "V", "R ...", false], # 36
337
+ "COUNTA" => [0x0a9, 0, 30, "V", "R ...", false], # 37
338
+ "COUNTBLANK" => [0x15b, 1, 1, "V", "R", false], # 38
339
+ "COUNTIF" => [0x15a, 2, 2, "V", "R V", false], # 39
340
+ "COVAR" => [0x134, 2, 2, "V", "A A", false], # 40
341
+ "CRITBINOM" => [0x116, 3, 3, "V", "V V V", false], # 41
342
+ "DATE" => [0x041, 3, 3, "V", "V V V", false], # 42
343
+ "DATEDIF" => [0x15f, 3, 3, "V", "V V V", false], # 43
344
+ "DATESTRING" => [0x160, 1, 1, "V", "V", false], # 44
345
+ "DATEVALUE" => [0x08c, 1, 1, "V", "V", false], # 45
346
+ "DAVERAGE" => [0x02a, 3, 3, "V", "R R R", false], # 46
347
+ "DAY" => [0x043, 1, 1, "V", "V", false], # 47
348
+ "DAYS360" => [0x0dc, 2, 3, "V", "V V V", false], # 48
349
+ "DB" => [0x0f7, 4, 5, "V", "V V V V V", false], # 49
350
+ "DBSC" => [0x0d7, 1, 1, "V", "V", false], # 50
351
+ "DCOUNT" => [0x028, 3, 3, "V", "R R R", false], # 51
352
+ "DCOUNTA" => [0x0c7, 3, 3, "V", "R R R", false], # 52
353
+ "DDB" => [0x090, 4, 5, "V", "V V V V V", false], # 53
354
+ "DEGREES" => [0x157, 1, 1, "V", "V", false], # 54
355
+ "DEVSQ" => [0x13e, 1, 30, "V", "R ...", false], # 55
356
+ "DGET" => [0x0eb, 3, 3, "V", "R R R", false], # 56
357
+ "DMAX" => [0x02c, 3, 3, "V", "R R R", false], # 57
358
+ "DMIN" => [0x02b, 3, 3, "V", "R R R", false], # 58
359
+ "DOLLAR" => [0x00d, 1, 2, "V", "V V", false], # 59
360
+ "DPRODUCT" => [0x0bf, 3, 3, "V", "R R R", false], # 60
361
+ "DSTDEV" => [0x02d, 3, 3, "V", "R R R", false], # 61
362
+ "DSTDEVP" => [0x0c3, 3, 3, "V", "R R R", false], # 62
363
+ "DSUM" => [0x029, 3, 3, "V", "R R R", false], # 63
364
+ "DVAR" => [0x02f, 3, 3, "V", "R R R", false], # 64
365
+ "DVARP" => [0x0c4, 3, 3, "V", "R R R", false], # 65
366
+ "ERROR.TYPE" => [0x105, 1, 1, "V", "V", false], # 66
367
+ "EVEN" => [0x117, 1, 1, "V", "V", false], # 67
368
+ "EXACT" => [0x075, 2, 2, "V", "V V", false], # 68
369
+ "EXP" => [0x015, 1, 1, "V", "V", false], # 69
370
+ "EXPONDIST" => [0x118, 3, 3, "V", "V V V", false], # 70
371
+ "FACT" => [0x0b8, 1, 1, "V", "V", false], # 71
372
+ "FALSE" => [0x023, 0, 0, "V", "-", false], # 72
373
+ "FDIST" => [0x119, 3, 3, "V", "V V V", false], # 73
374
+ "FIND" => [0x07c, 2, 3, "V", "V V V", false], # 74
375
+ "FINDB" => [0x0cd, 2, 3, "V", "V V V", false], # 75
376
+ "FINV" => [0x11a, 3, 3, "V", "V V V", false], # 76
377
+ "FISHER" => [0x11b, 1, 1, "V", "V", false], # 77
378
+ "FISHERINV" => [0x11c, 1, 1, "V", "V", false], # 78
379
+ "FIXED" => [0x00e, 2, 3, "V", "V V V", false], # 79
380
+ "FLOOR" => [0x11d, 2, 2, "V", "V V", false], # 80
381
+ "FORECAST" => [0x135, 3, 3, "V", "V A A", false], # 81
382
+ "FREQUENCY" => [0x0fc, 2, 2, "A", "R R", false], # 82
383
+ "FTEST" => [0x136, 2, 2, "V", "A A", false], # 83
384
+ "FV" => [0x039, 3, 5, "V", "V V V V V", false], # 84
385
+ "GAMMADIST" => [0x11e, 4, 4, "V", "V V V V", false], # 85
386
+ "GAMMAINV" => [0x11f, 3, 3, "V", "V V V", false], # 86
387
+ "GAMMALN" => [0x10f, 1, 1, "V", "V", false], # 87
388
+ "GEOMEAN" => [0x13f, 1, 30, "V", "R ...", false], # 88
389
+ "GETPIVOTDATA" => [0x166, 2, 30, "A", "-", false], # 89
390
+ "GROWTH" => [0x034, 1, 4, "A", "R R R V", false], # 90
391
+ "HARMEAN" => [0x140, 1, 30, "V", "R ...", false], # 91
392
+ "HLOOKUP" => [0x065, 3, 4, "V", "V R R V", false], # 92
393
+ "HOUR" => [0x047, 1, 1, "V", "V", false], # 93
394
+ "HYPERLINK" => [0x167, 1, 2, "V", "V V", false], # 94
395
+ "HYPGEOMVERT" => [0x121, 4, 4, "V", "V V V V", false], # 95
396
+ "IF" => [0x001, 2, 3, "V", "V V V", false], # 96
397
+ "INDEX" => [0x01d, 2, 4, "R", "R V V V", false], # 97
398
+ "INDIRECT" => [0x094, 1, 2, "R", "V V", true], # 98
399
+ "INFO" => [0x0f4, 1, 1, "V", "V", false], # 99
400
+ "INT" => [0x019, 1, 1, "V", "V", false], # 100
401
+ "INTERCEPT" => [0x137, 2, 2, "V", "A A", false], # 101
402
+ "IPMT" => [0x0a7, 4, 6, "V", "V V V V V V", false], # 102
403
+ "IRR" => [0x03e, 1, 2, "V", "R V", false], # 103
404
+ "ISBLANK" => [0x081, 1, 1, "V", "V", false], # 104
405
+ "ISERR" => [0x07e, 1, 1, "V", "V", false], # 105
406
+ "ISERROR" => [0x003, 1, 1, "V", "V", false], # 106
407
+ "ISLOGICAL" => [0x0c6, 1, 1, "V", "V", false], # 107
408
+ "ISNA" => [0x002, 1, 1, "V", "V", false], # 108
409
+ "ISNONTEXT" => [0x0c0, 1, 1, "V", "V", false], # 109
410
+ "ISNUMBER" => [0x080, 1, 1, "V", "V", false], # 110
411
+ "ISPMT" => [0x15e, 4, 4, "V", "V V V V", false], # 111
412
+ "ISREF" => [0x069, 1, 1, "V", "R", false], # 112
413
+ "ISTEXT" => [0x07f, 1, 1, "V", "V", false], # 113
414
+ "KURT" => [0x142, 1, 30, "V", "R ...", false], # 114
415
+ "LARGE" => [0x145, 2, 2, "V", "R V", false], # 115
416
+ "LEFT" => [0x073, 1, 2, "V", "V V", false], # 116
417
+ "LEFTB" => [0x0d0, 1, 2, "V", "V V", false], # 117
418
+ "LEN" => [0x020, 1, 1, "V", "V", false], # 118
419
+ "LENB" => [0x0d3, 1, 1, "V", "V", false], # 119
420
+ "LINEST" => [0x031, 1, 4, "A", "R R V V", false], # 120
421
+ "LN" => [0x016, 1, 1, "V", "V", false], # 121
422
+ "LOG" => [0x06d, 1, 2, "V", "V V", false], # 122
423
+ "LOG10" => [0x017, 1, 1, "V", "V", false], # 123
424
+ "LOGEST" => [0x033, 1, 4, "A", "R R V V", false], # 124
425
+ "LOGINV" => [0x123, 3, 3, "V", "V V V", false], # 125
426
+ "LOGNORMDIST" => [0x122, 3, 3, "V", "V V V", false], # 126
427
+ "LOOKUP" => [0x01c, 2, 3, "V", "V R R", false], # 127
428
+ "LOWER" => [0x070, 1, 1, "V", "V", false], # 128
429
+ "MATCH" => [0x040, 2, 3, "V", "V R R", false], # 129
430
+ "MAX" => [0x007, 1, 30, "V", "R ...", false], # 130
431
+ "MAXA" => [0x16a, 1, 30, "V", "R ...", false], # 131
432
+ "MDETERM" => [0x0a3, 1, 1, "V", "A", false], # 132
433
+ "MEDIAN" => [0x0e3, 1, 30, "V", "R ...", false], # 133
434
+ "MID" => [0x01f, 3, 3, "V", "V V V", false], # 134
435
+ "MIDB" => [0x0d2, 3, 3, "V", "V V V", false], # 135
436
+ "MIN" => [0x006, 1, 30, "V", "R ...", false], # 136
437
+ "MINA" => [0x16b, 1, 30, "V", "R ...", false], # 137
438
+ "MINUTE" => [0x048, 1, 1, "V", "V", false], # 138
439
+ "MINVERSE" => [0x0a4, 1, 1, "A", "A", false], # 139
440
+ "MIRR" => [0x03d, 3, 3, "V", "R V V", false], # 140
441
+ "MMULT" => [0x0a5, 2, 2, "A", "A A", false], # 141
442
+ "MNORMSINV" => [0x128, 1, 1, "V", "V", false], # 142
443
+ "MOD" => [0x027, 2, 2, "V", "V V", false], # 143
444
+ "MODE" => [0x14a, 1, 30, "V", "A ...", false], # 144
445
+ "MONTH" => [0x044, 1, 1, "V", "V", false], # 145
446
+ "N" => [0x083, 1, 1, "V", "R", false], # 146
447
+ "NA" => [0x00a, 0, 0, "V", "-", false], # 147
448
+ "NEGBINOMDIST" => [0x124, 3, 3, "V", "V V V", false], # 148
449
+ "NORMDIST" => [0x125, 4, 4, "V", "V V V V", false], # 149
450
+ "NORMINV" => [0x127, 3, 3, "V", "V V V", false], # 150
451
+ "NORMSDIST" => [0x126, 1, 1, "V", "V", false], # 151
452
+ "NOT" => [0x026, 1, 1, "V", "V", false], # 152
453
+ "NOW" => [0x04a, 0, 0, "V", "-", true], # 153
454
+ "NPER" => [0x03a, 3, 5, "V", "V V V V V", false], # 154
455
+ "NPV" => [0x00b, 2, 30, "V", "V R ...", false], # 155
456
+ "NUMBERSTRING" => [0x161, 2, 2, "V", "V V", false], # 156
457
+ "ODD" => [0x12a, 1, 1, "V", "V", false], # 157
458
+ "OFFSET" => [0x04e, 3, 5, "R", "R V V V V", true], # 158
459
+ "OR" => [0x025, 1, 30, "V", "R ...", false], # 159
460
+ "PEARSON" => [0x138, 2, 2, "V", "A A", false], # 160
461
+ "PERCENTILE" => [0x148, 2, 2, "V", "R V", false], # 161
462
+ "PERCENTRANK" => [0x149, 2, 3, "V", "R V V", false], # 162
463
+ "PERMUT" => [0x12b, 2, 2, "V", "V V", false], # 163
464
+ "PHONETIC" => [0x168, 1, 1, "V", "R", false], # 164
465
+ "PI" => [0x013, 0, 0, "V", "-", false], # 165
466
+ "PMT" => [0x03b, 3, 5, "V", "V V V V V", false], # 166
467
+ "POISSON" => [0x12c, 3, 3, "V", "V V V", false], # 167
468
+ "POWER" => [0x151, 2, 2, "V", "V V", false], # 168
469
+ "PPMT" => [0x0a8, 4, 6, "V", "V V V V V V", false], # 169
470
+ "PROB" => [0x13d, 3, 4, "V", "A A V V", false], # 170
471
+ "PRODUCT" => [0x0b7, 0, 30, "V", "R ...", false], # 171
472
+ "PROPER" => [0x072, 1, 1, "V", "V", false], # 172
473
+ "PV" => [0x038, 3, 5, "V", "V V V V V", false], # 173
474
+ "QUARTILE" => [0x147, 2, 2, "V", "R V", false], # 174
475
+ "RADIANS" => [0x156, 1, 1, "V", "V", false], # 175
476
+ "RAND" => [0x03f, 0, 0, "V", "-", true], # 176
477
+ "RANK" => [0x0d8, 2, 3, "V", "V R V", false], # 177
478
+ "RATE" => [0x03c, 3, 6, "V", "V V V V V V", false], # 178
479
+ "REPLACE" => [0x077, 4, 4, "V", "V V V V", false], # 179
480
+ "REPLACEB" => [0x0cf, 4, 4, "V", "V V V V", false], # 180
481
+ "REPT" => [0x01e, 2, 2, "V", "V V", false], # 181
482
+ "RIGHT" => [0x074, 1, 2, "V", "V V", false], # 182
483
+ "RIGHTB" => [0x0d1, 1, 2, "V", "V V", false], # 183
484
+ "ROMAN" => [0x162, 1, 2, "V", "V V", false], # 184
485
+ "ROUND" => [0x01b, 2, 2, "V", "V V", false], # 185
486
+ "ROUNDDOWN" => [0x0d5, 2, 2, "V", "V V", false], # 186
487
+ "ROUNDUP" => [0x0d4, 2, 2, "V", "V V", false], # 187
488
+ "ROW" => [0x008, 0, 1, "V", "R", false], # 188
489
+ "ROWS" => [0x04c, 1, 1, "V", "R", false], # 189
490
+ "RSQ" => [0x139, 2, 2, "V", "A A", false], # 190
491
+ "SEARCH" => [0x052, 2, 3, "V", "V V V", false], # 191
492
+ "SEARCHB" => [0x0ce, 2, 3, "V", "V V V", false], # 192
493
+ "SECOND" => [0x049, 1, 1, "V", "V", false], # 193
494
+ "SIGN" => [0x01a, 1, 1, "V", "V", false], # 194
495
+ "SIN" => [0x00f, 1, 1, "V", "V", false], # 195
496
+ "SINH" => [0x0e5, 1, 1, "V", "V", false], # 196
497
+ "SKEW" => [0x143, 1, 30, "V", "R ...", false], # 197
498
+ "SLN" => [0x08e, 3, 3, "V", "V V V", false], # 198
499
+ "SLOPE" => [0x13b, 2, 2, "V", "A A", false], # 199
500
+ "SMALL" => [0x146, 2, 2, "V", "R V", false], # 200
501
+ "SQRT" => [0x014, 1, 1, "V", "V", false], # 201
502
+ "STANDARDIZE" => [0x129, 3, 3, "V", "V V V", false], # 202
503
+ "STDEV" => [0x00c, 1, 30, "V", "R ...", false], # 203
504
+ "STDEVA" => [0x16e, 1, 30, "V", "R ...", false], # 204
505
+ "STDEVP" => [0x0c1, 1, 30, "V", "R ...", false], # 205
506
+ "STDEVPA" => [0x16c, 1, 30, "V", "R ...", false], # 206
507
+ "STEYX" => [0x13a, 2, 2, "V", "A A", false], # 207
508
+ "SUBSTITUTE" => [0x078, 3, 4, "V", "V V V V", false], # 208
509
+ "SUBTOTAL" => [0x158, 2, 30, "V", "V R ...", false], # 209
510
+ "SUM" => [0x004, 0, 30, "V", "R ...", false], # 210
511
+ "SUMIF" => [0x159, 2, 3, "V", "R V R", false], # 211
512
+ "SUMPRODUCT" => [0x0e4, 1, 30, "V", "A ...", false], # 212
513
+ "SUMSQ" => [0x141, 0, 30, "V", "R ...", false], # 213
514
+ "SUMX2MY2" => [0x130, 2, 2, "V", "A A", false], # 214
515
+ "SUMX2PY2" => [0x131, 2, 2, "V", "A A", false], # 215
516
+ "SUMXMY2" => [0x12f, 2, 2, "V", "A A", false], # 216
517
+ "SYD" => [0x08f, 4, 4, "V", "V V V V", false], # 217
518
+ "T" => [0x082, 1, 1, "V", "R", false], # 218
519
+ "TAN" => [0x011, 1, 1, "V", "V", false], # 219
520
+ "TANH" => [0x0e7, 1, 1, "V", "V", false], # 220
521
+ "TDIST" => [0x12d, 3, 3, "V", "V V V", false], # 221
522
+ "TEXT" => [0x030, 2, 2, "V", "V V", false], # 222
523
+ "TIME" => [0x042, 3, 3, "V", "V V V", false], # 223
524
+ "TIMEVALUE" => [0x08d, 1, 1, "V", "V", false], # 224
525
+ "TINV" => [0x14c, 2, 2, "V", "V V", false], # 225
526
+ "TODAY" => [0x0dd, 0, 0, "V", "-", true], # 226
527
+ "TRANSPOSE" => [0x053, 1, 1, "A", "A", false], # 227
528
+ "TREND" => [0x032, 1, 4, "A", "R R R V", false], # 228
529
+ "TRIM" => [0x076, 1, 1, "V", "V", false], # 229
530
+ "TRIMMEAN" => [0x14b, 2, 2, "V", "R V", false], # 230
531
+ "TRUE" => [0x022, 0, 0, "V", "-", false], # 231
532
+ "TRUNC" => [0x0c5, 1, 2, "V", "V V", false], # 232
533
+ "TTEST" => [0x13c, 4, 4, "V", "A A V V", false], # 233
534
+ "TYPE" => [0x056, 1, 1, "V", "V", false], # 234
535
+ "UPPER" => [0x071, 1, 1, "V", "V", false], # 235
536
+ "USDOLLAR" => [0x0cc, 1, 2, "V", "V V", false], # 236
537
+ "VALUE" => [0x021, 1, 1, "V", "V", false], # 237
538
+ "VAR" => [0x02e, 1, 30, "V", "R ...", false], # 238
539
+ "VARA" => [0x16f, 1, 30, "V", "R ...", false], # 239
540
+ "VARP" => [0x0c2, 1, 30, "V", "R ...", false], # 240
541
+ "VARPA" => [0x16d, 1, 30, "V", "R ...", false], # 241
542
+ "VDB" => [0x0de, 5, 7, "V", "V V V V V V V", false], # 242
543
+ "VLOOKUP" => [0x066, 3, 4, "V", "V R R V", false], # 243
544
+ "WEEKDAY" => [0x046, 1, 2, "V", "V V", false], # 244
545
+ "WEIBULL" => [0x12e, 4, 4, "V", "V V V V", false], # 245
546
+ "YEAR" => [0x045, 1, 1, "V", "V", false], # 246
547
+ "ZTEST" => [0x144, 2, 3, "V", "R V V", false] # 247
548
+ }
549
+
550
+
551
+ STD_FUNC_BY_NUM = {
552
+ 0x000 => [ "COUNT", 0, 30, "V", "R ...", false], # 1
553
+ 0x001 => [ "IF", 2, 3, "R", "V R R", false], # 2
554
+ 0x002 => [ "ISNA", 1, 1, "V", "V", false], # 3
555
+ 0x003 => [ "ISERROR", 1, 1, "V", "V", false], # 4
556
+ 0x004 => [ "SUM", 0, 30, "V", "R ...", false], # 5
557
+ 0x005 => [ "AVERAGE", 1, 30, "V", "R ...", false], # 6
558
+ 0x006 => [ "MIN", 1, 30, "V", "R ...", false], # 7
559
+ 0x007 => [ "MAX", 1, 30, "V", "R ...", false], # 8
560
+ 0x008 => [ "ROW", 0, 1, "V", "R", false], # 9
561
+ 0x009 => [ "COLUMN", 0, 1, "V", "R", false], # 10
562
+ 0x00a => [ "NA", 0, 0, "V", "-", false], # 11
563
+ 0x00b => [ "NPV", 2, 30, "V", "V R ...", false], # 12
564
+ 0x00c => [ "STDEV", 1, 30, "V", "R ...", false], # 13
565
+ 0x00d => [ "DOLLAR", 1, 2, "V", "V V", false], # 14
566
+ 0x00e => [ "FIXED", 2, 3, "V", "V V V", false], # 15
567
+ 0x00f => [ "SIN", 1, 1, "V", "V", false], # 16
568
+ 0x010 => [ "COS", 1, 1, "V", "V", false], # 17
569
+ 0x011 => [ "TAN", 1, 1, "V", "V", false], # 18
570
+ 0x012 => [ "ARCTAN", 1, 1, "V", "V", false], # 19
571
+ 0x013 => [ "PI", 0, 0, "V", "-", false], # 20
572
+ 0x014 => [ "SQRT", 1, 1, "V", "V", false], # 21
573
+ 0x015 => [ "EXP", 1, 1, "V", "V", false], # 22
574
+ 0x016 => [ "LN", 1, 1, "V", "V", false], # 23
575
+ 0x017 => [ "LOG10", 1, 1, "V", "V", false], # 24
576
+ 0x018 => [ "ABS", 1, 1, "V", "V", false], # 25
577
+ 0x019 => [ "INT", 1, 1, "V", "V", false], # 26
578
+ 0x01a => [ "SIGN", 1, 1, "V", "V", false], # 27
579
+ 0x01b => [ "ROUND", 2, 2, "V", "V V", false], # 28
580
+ 0x01c => [ "LOOKUP", 2, 3, "V", "V R R", false], # 29
581
+ 0x01d => [ "INDEX", 2, 4, "R", "R V V V", false], # 30
582
+ 0x01e => [ "REPT", 2, 2, "V", "V V", false], # 31
583
+ 0x01f => [ "MID", 3, 3, "V", "V V V", false], # 32
584
+ 0x020 => [ "LEN", 1, 1, "V", "V", false], # 33
585
+ 0x021 => [ "VALUE", 1, 1, "V", "V", false], # 34
586
+ 0x022 => [ "TRUE", 0, 0, "V", "-", false], # 35
587
+ 0x023 => [ "FALSE", 0, 0, "V", "-", false], # 36
588
+ 0x024 => [ "AND", 1, 30, "V", "R ...", false], # 37
589
+ 0x025 => [ "OR", 1, 30, "V", "R ...", false], # 38
590
+ 0x026 => [ "NOT", 1, 1, "V", "V", false], # 39
591
+ 0x027 => [ "MOD", 2, 2, "V", "V V", false], # 40
592
+ 0x028 => [ "DCOUNT", 3, 3, "V", "R R R", false], # 41
593
+ 0x029 => [ "DSUM", 3, 3, "V", "R R R", false], # 42
594
+ 0x02a => [ "DAVERAGE", 3, 3, "V", "R R R", false], # 43
595
+ 0x02b => [ "DMIN", 3, 3, "V", "R R R", false], # 44
596
+ 0x02c => [ "DMAX", 3, 3, "V", "R R R", false], # 45
597
+ 0x02d => [ "DSTDEV", 3, 3, "V", "R R R", false], # 46
598
+ 0x02e => [ "VAR", 1, 30, "V", "R ...", false], # 47
599
+ 0x02f => [ "DVAR", 3, 3, "V", "R R R", false], # 48
600
+ 0x030 => [ "TEXT", 2, 2, "V", "V V", false], # 49
601
+ 0x031 => [ "LINEST", 1, 4, "A", "R R V V", false], # 50
602
+ 0x032 => [ "TREND", 1, 4, "A", "R R R V", false], # 51
603
+ 0x033 => [ "LOGEST", 1, 4, "A", "R R V V", false], # 52
604
+ 0x034 => [ "GROWTH", 1, 4, "A", "R R R V", false], # 53
605
+ 0x038 => [ "PV", 3, 5, "V", "V V V V V", false], # 54
606
+ 0x039 => [ "FV", 3, 5, "V", "V V V V V", false], # 55
607
+ 0x03a => [ "NPER", 3, 5, "V", "V V V V V", false], # 56
608
+ 0x03b => [ "PMT", 3, 5, "V", "V V V V V", false], # 57
609
+ 0x03c => [ "RATE", 3, 6, "V", "V V V V V V", false], # 58
610
+ 0x03d => [ "MIRR", 3, 3, "V", "R V V", false], # 59
611
+ 0x03e => [ "IRR", 1, 2, "V", "R V", false], # 60
612
+ 0x03f => [ "RAND", 0, 0, "V", "-", true], # 61
613
+ 0x040 => [ "MATCH", 2, 3, "V", "V R R", false], # 62
614
+ 0x041 => [ "DATE", 3, 3, "V", "V V V", false], # 63
615
+ 0x042 => [ "TIME", 3, 3, "V", "V V V", false], # 64
616
+ 0x043 => [ "DAY", 1, 1, "V", "V", false], # 65
617
+ 0x044 => [ "MONTH", 1, 1, "V", "V", false], # 66
618
+ 0x045 => [ "YEAR", 1, 1, "V", "V", false], # 67
619
+ 0x046 => [ "WEEKDAY", 1, 2, "V", "V V", false], # 68
620
+ 0x047 => [ "HOUR", 1, 1, "V", "V", false], # 69
621
+ 0x048 => [ "MINUTE", 1, 1, "V", "V", false], # 70
622
+ 0x049 => [ "SECOND", 1, 1, "V", "V", false], # 71
623
+ 0x04a => [ "NOW", 0, 0, "V", "-", true], # 72
624
+ 0x04b => [ "AREAS", 1, 1, "V", "R", false], # 73
625
+ 0x04c => [ "ROWS", 1, 1, "V", "R", false], # 74
626
+ 0x04d => [ "COLUMNS", 1, 1, "V", "R", false], # 75
627
+ 0x04e => [ "OFFSET", 3, 5, "R", "R V V V V", true], # 76
628
+ 0x052 => [ "SEARCH", 2, 3, "V", "V V V", false], # 77
629
+ 0x053 => [ "TRANSPOSE", 1, 1, "A", "A", false], # 78
630
+ 0x056 => [ "TYPE", 1, 1, "V", "V", false], # 79
631
+ 0x061 => [ "ATAN2", 2, 2, "V", "V V", false], # 80
632
+ 0x062 => [ "ASIN", 1, 1, "V", "V", false], # 81
633
+ 0x063 => [ "ACOS", 1, 1, "V", "V", false], # 82
634
+ 0x064 => [ "CHOOSE", 2, 30, "R", "V R ...", false], # 83
635
+ 0x065 => [ "HLOOKUP", 3, 4, "V", "V R R V", false], # 84
636
+ 0x066 => [ "VLOOKUP", 3, 4, "V", "V R R V", false], # 85
637
+ 0x069 => [ "ISREF", 1, 1, "V", "R", false], # 86
638
+ 0x06d => [ "LOG", 1, 2, "V", "V V", false], # 87
639
+ 0x06f => [ "CHAR", 1, 1, "V", "V", false], # 88
640
+ 0x070 => [ "LOWER", 1, 1, "V", "V", false], # 89
641
+ 0x071 => [ "UPPER", 1, 1, "V", "V", false], # 90
642
+ 0x072 => [ "PROPER", 1, 1, "V", "V", false], # 91
643
+ 0x073 => [ "LEFT", 1, 2, "V", "V V", false], # 92
644
+ 0x074 => [ "RIGHT", 1, 2, "V", "V V", false], # 93
645
+ 0x075 => [ "EXACT", 2, 2, "V", "V V", false], # 94
646
+ 0x076 => [ "TRIM", 1, 1, "V", "V", false], # 95
647
+ 0x077 => [ "REPLACE", 4, 4, "V", "V V V V", false], # 96
648
+ 0x078 => [ "SUBSTITUTE", 3, 4, "V", "V V V V", false], # 97
649
+ 0x079 => [ "CODE", 1, 1, "V", "V", false], # 98
650
+ 0x07c => [ "FIND", 2, 3, "V", "V V V", false], # 99
651
+ 0x07d => [ "CELL", 1, 2, "V", "V R", true], # 100
652
+ 0x07e => [ "ISERR", 1, 1, "V", "V", false], # 101
653
+ 0x07f => [ "ISTEXT", 1, 1, "V", "V", false], # 102
654
+ 0x080 => [ "ISNUMBER", 1, 1, "V", "V", false], # 103
655
+ 0x081 => [ "ISBLANK", 1, 1, "V", "V", false], # 104
656
+ 0x082 => [ "T", 1, 1, "V", "R", false], # 105
657
+ 0x083 => [ "N", 1, 1, "V", "R", false], # 106
658
+ 0x08c => [ "DATEVALUE", 1, 1, "V", "V", false], # 107
659
+ 0x08d => [ "TIMEVALUE", 1, 1, "V", "V", false], # 108
660
+ 0x08e => [ "SLN", 3, 3, "V", "V V V", false], # 109
661
+ 0x08f => [ "SYD", 4, 4, "V", "V V V V", false], # 110
662
+ 0x090 => [ "DDB", 4, 5, "V", "V V V V V", false], # 111
663
+ 0x094 => [ "INDIRECT", 1, 2, "R", "V V", true], # 112
664
+ 0x0a2 => [ "CLEAN", 1, 1, "V", "V", false], # 113
665
+ 0x0a3 => [ "MDETERM", 1, 1, "V", "A", false], # 114
666
+ 0x0a4 => [ "MINVERSE", 1, 1, "A", "A", false], # 115
667
+ 0x0a5 => [ "MMULT", 2, 2, "A", "A A", false], # 116
668
+ 0x0a7 => [ "IPMT", 4, 6, "V", "V V V V V V", false], # 117
669
+ 0x0a8 => [ "PPMT", 4, 6, "V", "V V V V V V", false], # 118
670
+ 0x0a9 => [ "COUNTA", 0, 30, "V", "R ...", false], # 119
671
+ 0x0b7 => [ "PRODUCT", 0, 30, "V", "R ...", false], # 120
672
+ 0x0b8 => [ "FACT", 1, 1, "V", "V", false], # 121
673
+ 0x0bf => [ "DPRODUCT", 3, 3, "V", "R R R", false], # 122
674
+ 0x0c0 => [ "ISNONTEXT", 1, 1, "V", "V", false], # 123
675
+ 0x0c1 => [ "STDEVP", 1, 30, "V", "R ...", false], # 124
676
+ 0x0c2 => [ "VARP", 1, 30, "V", "R ...", false], # 125
677
+ 0x0c3 => [ "DSTDEVP", 3, 3, "V", "R R R", false], # 126
678
+ 0x0c4 => [ "DVARP", 3, 3, "V", "R R R", false], # 127
679
+ 0x0c5 => [ "TRUNC", 1, 2, "V", "V V", false], # 128
680
+ 0x0c6 => [ "ISLOGICAL", 1, 1, "V", "V", false], # 129
681
+ 0x0c7 => [ "DCOUNTA", 3, 3, "V", "R R R", false], # 130
682
+ 0x0cc => [ "USDOLLAR", 1, 2, "V", "V V", false], # 131
683
+ 0x0cd => [ "FINDB", 2, 3, "V", "V V V", false], # 132
684
+ 0x0ce => [ "SEARCHB", 2, 3, "V", "V V V", false], # 133
685
+ 0x0cf => [ "REPLACEB", 4, 4, "V", "V V V V", false], # 134
686
+ 0x0d0 => [ "LEFTB", 1, 2, "V", "V V", false], # 135
687
+ 0x0d1 => [ "RIGHTB", 1, 2, "V", "V V", false], # 136
688
+ 0x0d2 => [ "MIDB", 3, 3, "V", "V V V", false], # 137
689
+ 0x0d3 => [ "LENB", 1, 1, "V", "V", false], # 138
690
+ 0x0d4 => [ "ROUNDUP", 2, 2, "V", "V V", false], # 139
691
+ 0x0d5 => [ "ROUNDDOWN", 2, 2, "V", "V V", false], # 140
692
+ 0x0d6 => [ "ASC", 1, 1, "V", "V", false], # 141
693
+ 0x0d7 => [ "DBSC", 1, 1, "V", "V", false], # 142
694
+ 0x0d8 => [ "RANK", 2, 3, "V", "V R V", false], # 143
695
+ 0x0db => [ "ADDRESS", 2, 5, "V", "V V V V V", false], # 144
696
+ 0x0dc => [ "DAYS360", 2, 3, "V", "V V V", false], # 145
697
+ 0x0dd => [ "TODAY", 0, 0, "V", "-", true], # 146
698
+ 0x0de => [ "VDB", 5, 7, "V", "V V V V V V V", false], # 147
699
+ 0x0e3 => [ "MEDIAN", 1, 30, "V", "R ...", false], # 148
700
+ 0x0e4 => [ "SUMPRODUCT", 1, 30, "V", "A ...", false], # 149
701
+ 0x0e5 => [ "SINH", 1, 1, "V", "V", false], # 150
702
+ 0x0e6 => [ "COSH", 1, 1, "V", "V", false], # 151
703
+ 0x0e7 => [ "TANH", 1, 1, "V", "V", false], # 152
704
+ 0x0e8 => [ "ASINH", 1, 1, "V", "V", false], # 153
705
+ 0x0e9 => [ "ACOSH", 1, 1, "V", "V", false], # 154
706
+ 0x0ea => [ "ATANH", 1, 1, "V", "V", false], # 155
707
+ 0x0eb => [ "DGET", 3, 3, "V", "R R R", false], # 156
708
+ 0x0f4 => [ "INFO", 1, 1, "V", "V", false], # 157
709
+ 0x0f7 => [ "DB", 4, 5, "V", "V V V V V", false], # 158
710
+ 0x0fc => [ "FREQUENCY", 2, 2, "A", "R R", false], # 159
711
+ 0x105 => [ "ERROR.TYPE", 1, 1, "V", "V", false], # 160
712
+ 0x10d => [ "AVEDEV", 1, 30, "V", "R ...", false], # 161
713
+ 0x10e => [ "BETADIST", 3, 5, "V", "V V V V V", false], # 162
714
+ 0x10f => [ "GAMMALN", 1, 1, "V", "V", false], # 163
715
+ 0x110 => [ "BETAINV", 3, 5, "V", "V V V V V", false], # 164
716
+ 0x111 => [ "BINOMDIST", 4, 4, "V", "V V V V", false], # 165
717
+ 0x112 => [ "CHIDIST", 2, 2, "V", "V V", false], # 166
718
+ 0x113 => [ "CHIINV", 2, 2, "V", "V V", false], # 167
719
+ 0x114 => [ "COMBIN", 2, 2, "V", "V V", false], # 168
720
+ 0x115 => [ "CONFIDENCE", 3, 3, "V", "V V V", false], # 169
721
+ 0x116 => [ "CRITBINOM", 3, 3, "V", "V V V", false], # 170
722
+ 0x117 => [ "EVEN", 1, 1, "V", "V", false], # 171
723
+ 0x118 => [ "EXPONDIST", 3, 3, "V", "V V V", false], # 172
724
+ 0x119 => [ "FDIST", 3, 3, "V", "V V V", false], # 173
725
+ 0x11a => [ "FINV", 3, 3, "V", "V V V", false], # 174
726
+ 0x11b => [ "FISHER", 1, 1, "V", "V", false], # 175
727
+ 0x11c => [ "FISHERINV", 1, 1, "V", "V", false], # 176
728
+ 0x11d => [ "FLOOR", 2, 2, "V", "V V", false], # 177
729
+ 0x11e => [ "GAMMADIST", 4, 4, "V", "V V V V", false], # 178
730
+ 0x11f => [ "GAMMAINV", 3, 3, "V", "V V V", false], # 179
731
+ 0x120 => [ "CEILING", 2, 2, "V", "V V", false], # 180
732
+ 0x121 => [ "HYPGEOMVERT", 4, 4, "V", "V V V V", false], # 181
733
+ 0x122 => [ "LOGNORMDIST", 3, 3, "V", "V V V", false], # 182
734
+ 0x123 => [ "LOGINV", 3, 3, "V", "V V V", false], # 183
735
+ 0x124 => ["NEGBINOMDIST", 3, 3, "V", "V V V", false], # 184
736
+ 0x125 => [ "NORMDIST", 4, 4, "V", "V V V V", false], # 185
737
+ 0x126 => [ "NORMSDIST", 1, 1, "V", "V", false], # 186
738
+ 0x127 => [ "NORMINV", 3, 3, "V", "V V V", false], # 187
739
+ 0x128 => [ "MNORMSINV", 1, 1, "V", "V", false], # 188
740
+ 0x129 => [ "STANDARDIZE", 3, 3, "V", "V V V", false], # 189
741
+ 0x12a => [ "ODD", 1, 1, "V", "V", false], # 190
742
+ 0x12b => [ "PERMUT", 2, 2, "V", "V V", false], # 191
743
+ 0x12c => [ "POISSON", 3, 3, "V", "V V V", false], # 192
744
+ 0x12d => [ "TDIST", 3, 3, "V", "V V V", false], # 193
745
+ 0x12e => [ "WEIBULL", 4, 4, "V", "V V V V", false], # 194
746
+ 0x12f => [ "SUMXMY2", 2, 2, "V", "A A", false], # 195
747
+ 0x130 => [ "SUMX2MY2", 2, 2, "V", "A A", false], # 196
748
+ 0x131 => [ "SUMX2PY2", 2, 2, "V", "A A", false], # 197
749
+ 0x132 => [ "CHITEST", 2, 2, "V", "A A", false], # 198
750
+ 0x133 => [ "CORREL", 2, 2, "V", "A A", false], # 199
751
+ 0x134 => [ "COVAR", 2, 2, "V", "A A", false], # 200
752
+ 0x135 => [ "FORECAST", 3, 3, "V", "V A A", false], # 201
753
+ 0x136 => [ "FTEST", 2, 2, "V", "A A", false], # 202
754
+ 0x137 => [ "INTERCEPT", 2, 2, "V", "A A", false], # 203
755
+ 0x138 => [ "PEARSON", 2, 2, "V", "A A", false], # 204
756
+ 0x139 => [ "RSQ", 2, 2, "V", "A A", false], # 205
757
+ 0x13a => [ "STEYX", 2, 2, "V", "A A", false], # 206
758
+ 0x13b => [ "SLOPE", 2, 2, "V", "A A", false], # 207
759
+ 0x13c => [ "TTEST", 4, 4, "V", "A A V V", false], # 208
760
+ 0x13d => [ "PROB", 3, 4, "V", "A A V V", false], # 209
761
+ 0x13e => [ "DEVSQ", 1, 30, "V", "R ...", false], # 210
762
+ 0x13f => [ "GEOMEAN", 1, 30, "V", "R ...", false], # 211
763
+ 0x140 => [ "HARMEAN", 1, 30, "V", "R ...", false], # 212
764
+ 0x141 => [ "SUMSQ", 0, 30, "V", "R ...", false], # 213
765
+ 0x142 => [ "KURT", 1, 30, "V", "R ...", false], # 214
766
+ 0x143 => [ "SKEW", 1, 30, "V", "R ...", false], # 215
767
+ 0x144 => [ "ZTEST", 2, 3, "V", "R V V", false], # 216
768
+ 0x145 => [ "LARGE", 2, 2, "V", "R V", false], # 217
769
+ 0x146 => [ "SMALL", 2, 2, "V", "R V", false], # 218
770
+ 0x147 => [ "QUARTILE", 2, 2, "V", "R V", false], # 219
771
+ 0x148 => [ "PERCENTILE", 2, 2, "V", "R V", false], # 220
772
+ 0x149 => [ "PERCENTRANK", 2, 3, "V", "R V V", false], # 221
773
+ 0x14a => [ "MODE", 1, 30, "V", "A ...", false], # 222
774
+ 0x14b => [ "TRIMMEAN", 2, 2, "V", "R V", false], # 223
775
+ 0x14c => [ "TINV", 2, 2, "V", "V V", false], # 224
776
+ 0x150 => [ "CONCATENATE", 0, 30, "V", "V ...", false], # 225
777
+ 0x151 => [ "POWER", 2, 2, "V", "V V", false], # 226
778
+ 0x156 => [ "RADIANS", 1, 1, "V", "V", false], # 227
779
+ 0x157 => [ "DEGREES", 1, 1, "V", "V", false], # 228
780
+ 0x158 => [ "SUBTOTAL", 2, 30, "V", "V R ...", false], # 229
781
+ 0x159 => [ "SUMIF", 2, 3, "V", "R V R", false], # 230
782
+ 0x15a => [ "COUNTIF", 2, 2, "V", "R V", false], # 231
783
+ 0x15b => [ "COUNTBLANK", 1, 1, "V", "R", false], # 232
784
+ 0x15e => [ "ISPMT", 4, 4, "V", "V V V V", false], # 233
785
+ 0x15f => [ "DATEDIF", 3, 3, "V", "V V V", false], # 234
786
+ 0x160 => [ "DATESTRING", 1, 1, "V", "V", false], # 235
787
+ 0x161 => ["NUMBERSTRING", 2, 2, "V", "V V", false], # 236
788
+ 0x162 => [ "ROMAN", 1, 2, "V", "V V", false], # 237
789
+ 0x166 => ["GETPIVOTDATA", 2, 30, "A", "-", false], # 238
790
+ 0x167 => [ "HYPERLINK", 1, 2, "V", "V V", false], # 239
791
+ 0x168 => [ "PHONETIC", 1, 1, "V", "R", false], # 240
792
+ 0x169 => [ "AVERAGEA", 1, 30, "V", "R ...", false], # 241
793
+ 0x16a => [ "MAXA", 1, 30, "V", "R ...", false], # 242
794
+ 0x16b => [ "MINA", 1, 30, "V", "R ...", false], # 243
795
+ 0x16c => [ "STDEVPA", 1, 30, "V", "R ...", false], # 244
796
+ 0x16d => [ "VARPA", 1, 30, "V", "R ...", false], # 245
797
+ 0x16e => [ "STDEVA", 1, 30, "V", "R ...", false], # 246
798
+ 0x16f => [ "VARA", 1, 30, "V", "R ...", false] # 247
799
+ }
800
+
801
+
802
+ # Formulas Parse things
803
+
804
+ PTGEXP = 0x01
805
+ PTGTBL = 0x02
806
+ PTGADD = 0x03
807
+ PTGSUB = 0x04
808
+ PTGMUL = 0x05
809
+ PTGDIV = 0x06
810
+ PTGPOWER = 0x07
811
+ PTGCONCAT = 0x08
812
+ PTGLT = 0x09
813
+ PTGLE = 0x0a
814
+ PTGEQ = 0x0b
815
+ PTGGE = 0x0c
816
+ PTGGT = 0x0d
817
+ PTGNE = 0x0e
818
+ PTGISECT = 0x0f
819
+ PTGUNION = 0x10
820
+ PTGRANGE = 0x11
821
+ PTGUPLUS = 0x12
822
+ PTGUMINUS = 0x13
823
+ PTGPERCENT = 0x14
824
+ PTGPAREN = 0x15
825
+ PTGMISSARG = 0x16
826
+ PTGSTR = 0x17
827
+ PTGEXTEND = 0x18
828
+ PTGATTR = 0x19
829
+ PTGSHEET = 0x1a
830
+ PTGENDSHEET = 0x1b
831
+ PTGERR = 0x1c
832
+ PTGBOOL = 0x1d
833
+ PTGINT = 0x1e
834
+ PTGNUM = 0x1f
835
+
836
+ PTGARRAYR = 0x20
837
+ PTGFUNCR = 0x21
838
+ PTGFUNCVARR = 0x22
839
+ PTGNAMER = 0x23
840
+ PTGREFR = 0x24
841
+ PTGAREAR = 0x25
842
+ PTGMEMAREAR = 0x26
843
+ PTGMEMERRR = 0x27
844
+ PTGMEMNOMEMR = 0x28
845
+ PTGMEMFUNCR = 0x29
846
+ PTGREFERRR = 0x2a
847
+ PTGAREAERRR = 0x2b
848
+ PTGREFNR = 0x2c
849
+ PTGAREANR = 0x2d
850
+ PTGMEMAREANR = 0x2e
851
+ PTGMEMNOMEMNR = 0x2f
852
+ PTGNAMEXR = 0x39
853
+ PTGREF3DR = 0x3a
854
+ PTGAREA3DR = 0x3b
855
+ PTGREFERR3DR = 0x3c
856
+ PTGAREAERR3DR = 0x3d
857
+
858
+ PTGARRAYV = 0x40
859
+ PTGFUNCV = 0x41
860
+ PTGFUNCVARV = 0x42
861
+ PTGNAMEV = 0x43
862
+ PTGREFV = 0x44
863
+ PTGAREAV = 0x45
864
+ PTGMEMAREAV = 0x46
865
+ PTGMEMERRV = 0x47
866
+ PTGMEMNOMEMV = 0x48
867
+ PTGMEMFUNCV = 0x49
868
+ PTGREFERRV = 0x4a
869
+ PTGAREAERRV = 0x4b
870
+ PTGREFNV = 0x4c
871
+ PTGAREANV = 0x4d
872
+ PTGMEMAREANV = 0x4e
873
+ PTGMEMNOMEMNV = 0x4f
874
+ PTGFUNCCEV = 0x58
875
+ PTGNAMEXV = 0x59
876
+ PTGREF3DV = 0x5a
877
+ PTGAREA3DV = 0x5b
878
+ PTGREFERR3DV = 0x5c
879
+ PTGAREAERR3DV = 0x5d
880
+
881
+ PTGARRAYA = 0x60
882
+ PTGFUNCA = 0x61
883
+ PTGFUNCVARA = 0x62
884
+ PTGNAMEA = 0x63
885
+ PTGREFA = 0x64
886
+ PTGAREAA = 0x65
887
+ PTGMEMAREAA = 0x66
888
+ PTGMEMERRA = 0x67
889
+ PTGMEMNOMEMA = 0x68
890
+ PTGMEMFUNCA = 0x69
891
+ PTGREFERRA = 0x6a
892
+ PTGAREAERRA = 0x6b
893
+ PTGREFNA = 0x6c
894
+ PTGAREANA = 0x6d
895
+ PTGMEMAREANA = 0x6e
896
+ PTGMEMNOMEMNA = 0x6f
897
+ PTGFUNCCEA = 0x78
898
+ PTGNAMEXA = 0x79
899
+ PTGREF3DA = 0x7a
900
+ PTGAREA3DA = 0x7b
901
+ PTGREFERR3DA = 0x7c
902
+ PTGAREAERR3DA = 0x7d
903
+
904
+
905
+ PTG_NAMES = {
906
+ :ptgExp => "ptgExp",
907
+ :ptgTbl => "ptgTbl",
908
+ :ptgAdd => "ptgAdd",
909
+ :ptgSub => "ptgSub",
910
+ :ptgMul => "ptgMul",
911
+ :ptgDiv => "ptgDiv",
912
+ :ptgPower => "ptgPower",
913
+ :ptgConcat => "ptgConcat",
914
+ :ptgLT => "ptgLT",
915
+ :ptgLE => "ptgLE",
916
+ :ptgEQ => "ptgEQ",
917
+ :ptgGE => "ptgGE",
918
+ :ptgGT => "ptgGT",
919
+ :ptgNE => "ptgNE",
920
+ :ptgIsect => "ptgIsect",
921
+ :ptgUnion => "ptgUnion",
922
+ :ptgRange => "ptgRange",
923
+ :ptgUplus => "ptgUplus",
924
+ :ptgUminus => "ptgUminus",
925
+ :ptgPercent => "ptgPercent",
926
+ :ptgParen => "ptgParen",
927
+ :ptgMissArg => "ptgMissArg",
928
+ :ptgStr => "ptgStr",
929
+ :ptgExtend => "ptgExtend",
930
+ :ptgAttr => "ptgAttr",
931
+ :ptgSheet => "ptgSheet",
932
+ :ptgEndSheet => "ptgEndSheet",
933
+ :ptgErr => "ptgErr",
934
+ :ptgBool => "ptgBool",
935
+ :ptgInt => "ptgInt",
936
+ :ptgNum => "ptgNum",
937
+ :ptgArrayR => "ptgArrayR",
938
+ :ptgFuncR => "ptgFuncR",
939
+ :ptgFuncVarR => "ptgFuncVarR",
940
+ :ptgNameR => "ptgNameR",
941
+ :ptgRefR => "ptgRefR",
942
+ :ptgAreaR => "ptgAreaR",
943
+ :ptgMemAreaR => "ptgMemAreaR",
944
+ :ptgMemErrR => "ptgMemErrR",
945
+ :ptgMemNoMemR => "ptgMemNoMemR",
946
+ :ptgMemFuncR => "ptgMemFuncR",
947
+ :ptgRefErrR => "ptgRefErrR",
948
+ :ptgAreaErrR => "ptgAreaErrR",
949
+ :ptgRefNR => "ptgRefNR",
950
+ :ptgAreaNR => "ptgAreaNR",
951
+ :ptgMemAreaNR => "ptgMemAreaNR",
952
+ :ptgMemNoMemNR => "ptgMemNoMemNR",
953
+ :ptgNameXR => "ptgNameXR",
954
+ :ptgRef3dR => "ptgRef3dR",
955
+ :ptgArea3dR => "ptgArea3dR",
956
+ :ptgRefErr3dR => "ptgRefErr3dR",
957
+ :ptgAreaErr3dR => "ptgAreaErr3dR",
958
+ :ptgArrayV => "ptgArrayV",
959
+ :ptgFuncV => "ptgFuncV",
960
+ :ptgFuncVarV => "ptgFuncVarV",
961
+ :ptgNameV => "ptgNameV",
962
+ :ptgRefV => "ptgRefV",
963
+ :ptgAreaV => "ptgAreaV",
964
+ :ptgMemAreaV => "ptgMemAreaV",
965
+ :ptgMemErrV => "ptgMemErrV",
966
+ :ptgMemNoMemV => "ptgMemNoMemV",
967
+ :ptgMemFuncV => "ptgMemFuncV",
968
+ :ptgRefErrV => "ptgRefErrV",
969
+ :ptgAreaErrV => "ptgAreaErrV",
970
+ :ptgRefNV => "ptgRefNV",
971
+ :ptgAreaNV => "ptgAreaNV",
972
+ :ptgMemAreaNV => "ptgMemAreaNV",
973
+ :ptgMemNoMemNV => "ptgMemNoMemNV",
974
+ :ptgFuncCEV => "ptgFuncCEV",
975
+ :ptgNameXV => "ptgNameXV",
976
+ :ptgRef3dV => "ptgRef3dV",
977
+ :ptgArea3dV => "ptgArea3dV",
978
+ :ptgRefErr3dV => "ptgRefErr3dV",
979
+ :ptgAreaErr3dV => "ptgAreaErr3dV",
980
+ :ptgArrayA => "ptgArrayA",
981
+ :ptgFuncA => "ptgFuncA",
982
+ :ptgFuncVarA => "ptgFuncVarA",
983
+ :ptgNameA => "ptgNameA",
984
+ :ptgRefA => "ptgRefA",
985
+ :ptgAreaA => "ptgAreaA",
986
+ :ptgMemAreaA => "ptgMemAreaA",
987
+ :ptgMemErrA => "ptgMemErrA",
988
+ :ptgMemNoMemA => "ptgMemNoMemA",
989
+ :ptgMemFuncA => "ptgMemFuncA",
990
+ :ptgRefErrA => "ptgRefErrA",
991
+ :ptgAreaErrA => "ptgAreaErrA",
992
+ :ptgRefNA => "ptgRefNA",
993
+ :ptgAreaNA => "ptgAreaNA",
994
+ :ptgMemAreaNA => "ptgMemAreaNA",
995
+ :ptgMemNoMemNA => "ptgMemNoMemNA",
996
+ :ptgFuncCEA => "ptgFuncCEA",
997
+ :ptgNameXA => "ptgNameXA",
998
+ :ptgRef3dA => "ptgRef3dA",
999
+ :ptgArea3dA => "ptgArea3dA",
1000
+ :ptgRefErr3dA => "ptgRefErr3dA",
1001
+ :ptgAreaErr3dA => "ptgAreaErr3dA"
1002
+ }
1003
+
1004
+
1005
+ ERROR_MSG_BY_CODE = {
1006
+ 0x00 => "#NULL!", # intersection of two cell ranges is empty
1007
+ 0x07 => "#DIV/0!", # division by zero
1008
+ 0x0F => "#VALUE!", # wrong type of operand
1009
+ 0x17 => "#REF!", # illegal or deleted cell reference
1010
+ 0x1D => "#NAME?", # wrong function or range name
1011
+ 0x24 => "#NUM!", # value range overflow
1012
+ 0x2A => "#N/A!" # argument or function not available
1013
+ }