Module: Excel

Defined in:
lib/ru_excel/worksheet.rb,
lib/ru_excel.rb,
lib/ru_excel/row.rb,
lib/ru_excel/cell.rb,
lib/ru_excel/deco.rb,
lib/ru_excel/style.rb,
lib/ru_excel/bitmap.rb,
lib/ru_excel/column.rb,
lib/ru_excel/workbook.rb,
lib/ru_excel/formatting.rb,
lib/ru_excel/excel_magic.rb,
lib/ru_excel/biff_records.rb,
lib/ru_excel/compound_doc.rb,
lib/ru_excel/unicode_utils.rb

Overview

This implementation writes only ‘Root Entry’, ‘Workbook’ streams and 2 empty streams for aligning directory stream on sector boundary

LAYOUT 0 header 76 MSAT (1st part=> 109 SID) 512 workbook stream … additional MSAT sectors if streams’ size > about 7 Mb == (109*512 * 128) … SAT … directory stream

NOTE=> this layout is “ad hoc”. It can be more general. RTFM

Defined Under Namespace

Modules: BiffRecord, Cell, Deco, UnicodeUtils Classes: Alignment, Borders, Column, Font, Pattern, Protection, Row, SharedStringTable, StyleCollection, Workbook, Worksheet, XFStyle, XlsDoc

Constant Summary collapse

ICONV =
{}
MAX_ROW =

Boundaries BIFF8+

65536
MAX_COL =
256
StdFuncByName =
{
             "ABS"=> [0x018,  1,  1,   "V",             "V", false], # 1
            "ACOS"=> [0x063,  1,  1,   "V",             "V", false], # 2
           "ACOSH"=> [0x0e9,  1,  1,   "V",             "V", false], # 3
         "ADDRESS"=> [0x0db,  2,  5,   "V",     "V V V V V", false], # 4
             "AND"=> [0x024,  1, 30,   "V",         "R ...", false], # 5
          "ARCTAN"=> [0x012,  1,  1,   "V",             "V", false], # 6
           "AREAS"=> [0x04b,  1,  1,   "V",             "R", false], # 7
             "ASC"=> [0x0d6,  1,  1,   "V",             "V", false], # 8
            "ASIN"=> [0x062,  1,  1,   "V",             "V", false], # 9
           "ASINH"=> [0x0e8,  1,  1,   "V",             "V", false], # 10
           "ATAN2"=> [0x061,  2,  2,   "V",           "V V", false], # 11
           "ATANH"=> [0x0ea,  1,  1,   "V",             "V", false], # 12
          "AVEDEV"=> [0x10d,  1, 30,   "V",         "R ...", false], # 13
         "AVERAGE"=> [0x005,  1, 30,   "V",         "R ...", false], # 14
        "AVERAGEA"=> [0x169,  1, 30,   "V",         "R ...", false], # 15
        "BETADIST"=> [0x10e,  3,  5,   "V",     "V V V V V", false], # 16
         "BETAINV"=> [0x110,  3,  5,   "V",     "V V V V V", false], # 17
       "BINOMDIST"=> [0x111,  4,  4,   "V",       "V V V V", false], # 18
         "CEILING"=> [0x120,  2,  2,   "V",           "V V", false], # 19
            "CELL"=> [0x07d,  1,  2,   "V",           "V R",  true], # 20
            "CHAR"=> [0x06f,  1,  1,   "V",             "V", false], # 21
         "CHIDIST"=> [0x112,  2,  2,   "V",           "V V", false], # 22
          "CHIINV"=> [0x113,  2,  2,   "V",           "V V", false], # 23
         "CHITEST"=> [0x132,  2,  2,   "V",           "A A", false], # 24
          "CHOOSE"=> [0x064,  2, 30,   "R",       "V R ...", false], # 25
           "CLEAN"=> [0x0a2,  1,  1,   "V",             "V", false], # 26
            "CODE"=> [0x079,  1,  1,   "V",             "V", false], # 27
          "COLUMN"=> [0x009,  0,  1,   "V",             "R", false], # 28
         "COLUMNS"=> [0x04d,  1,  1,   "V",             "R", false], # 29
          "COMBIN"=> [0x114,  2,  2,   "V",           "V V", false], # 30
     "CONCATENATE"=> [0x150,  0, 30,   "V",         "V ...", false], # 31
      "CONFIDENCE"=> [0x115,  3,  3,   "V",         "V V V", false], # 32
          "CORREL"=> [0x133,  2,  2,   "V",           "A A", false], # 33
             "COS"=> [0x010,  1,  1,   "V",             "V", false], # 34
            "COSH"=> [0x0e6,  1,  1,   "V",             "V", false], # 35
           "COUNT"=> [0x000,  0, 30,   "V",         "R ...", false], # 36
          "COUNTA"=> [0x0a9,  0, 30,   "V",         "R ...", false], # 37
      "COUNTBLANK"=> [0x15b,  1,  1,   "V",             "R", false], # 38
         "COUNTIF"=> [0x15a,  2,  2,   "V",           "R V", false], # 39
           "COVAR"=> [0x134,  2,  2,   "V",           "A A", false], # 40
       "CRITBINOM"=> [0x116,  3,  3,   "V",         "V V V", false], # 41
            "DATE"=> [0x041,  3,  3,   "V",         "V V V", false], # 42
         "DATEDIF"=> [0x15f,  3,  3,   "V",         "V V V", false], # 43
      "DATESTRING"=> [0x160,  1,  1,   "V",             "V", false], # 44
       "DATEVALUE"=> [0x08c,  1,  1,   "V",             "V", false], # 45
        "DAVERAGE"=> [0x02a,  3,  3,   "V",         "R R R", false], # 46
             "DAY"=> [0x043,  1,  1,   "V",             "V", false], # 47
         "DAYS360"=> [0x0dc,  2,  3,   "V",         "V V V", false], # 48
              "DB"=> [0x0f7,  4,  5,   "V",     "V V V V V", false], # 49
            "DBSC"=> [0x0d7,  1,  1,   "V",             "V", false], # 50
          "DCOUNT"=> [0x028,  3,  3,   "V",         "R R R", false], # 51
         "DCOUNTA"=> [0x0c7,  3,  3,   "V",         "R R R", false], # 52
             "DDB"=> [0x090,  4,  5,   "V",     "V V V V V", false], # 53
         "DEGREES"=> [0x157,  1,  1,   "V",             "V", false], # 54
           "DEVSQ"=> [0x13e,  1, 30,   "V",         "R ...", false], # 55
            "DGET"=> [0x0eb,  3,  3,   "V",         "R R R", false], # 56
            "DMAX"=> [0x02c,  3,  3,   "V",         "R R R", false], # 57
            "DMIN"=> [0x02b,  3,  3,   "V",         "R R R", false], # 58
          "DOLLAR"=> [0x00d,  1,  2,   "V",           "V V", false], # 59
        "DPRODUCT"=> [0x0bf,  3,  3,   "V",         "R R R", false], # 60
          "DSTDEV"=> [0x02d,  3,  3,   "V",         "R R R", false], # 61
         "DSTDEVP"=> [0x0c3,  3,  3,   "V",         "R R R", false], # 62
            "DSUM"=> [0x029,  3,  3,   "V",         "R R R", false], # 63
            "DVAR"=> [0x02f,  3,  3,   "V",         "R R R", false], # 64
           "DVARP"=> [0x0c4,  3,  3,   "V",         "R R R", false], # 65
      "ERROR.TYPE"=> [0x105,  1,  1,   "V",             "V", false], # 66
            "EVEN"=> [0x117,  1,  1,   "V",             "V", false], # 67
           "EXACT"=> [0x075,  2,  2,   "V",           "V V", false], # 68
             "EXP"=> [0x015,  1,  1,   "V",             "V", false], # 69
       "EXPONDIST"=> [0x118,  3,  3,   "V",         "V V V", false], # 70
            "FACT"=> [0x0b8,  1,  1,   "V",             "V", false], # 71
           "false"=> [0x023,  0,  0,   "V",             "-", false], # 72
           "FDIST"=> [0x119,  3,  3,   "V",         "V V V", false], # 73
            "FIND"=> [0x07c,  2,  3,   "V",         "V V V", false], # 74
           "FINDB"=> [0x0cd,  2,  3,   "V",         "V V V", false], # 75
            "FINV"=> [0x11a,  3,  3,   "V",         "V V V", false], # 76
          "FISHER"=> [0x11b,  1,  1,   "V",             "V", false], # 77
       "FISHERINV"=> [0x11c,  1,  1,   "V",             "V", false], # 78
           "FIXED"=> [0x00e,  2,  3,   "V",         "V V V", false], # 79
           "FLOOR"=> [0x11d,  2,  2,   "V",           "V V", false], # 80
        "FORECAST"=> [0x135,  3,  3,   "V",         "V A A", false], # 81
       "FREQUENCY"=> [0x0fc,  2,  2,   "A",           "R R", false], # 82
           "FTEST"=> [0x136,  2,  2,   "V",           "A A", false], # 83
              "FV"=> [0x039,  3,  5,   "V",     "V V V V V", false], # 84
       "GAMMADIST"=> [0x11e,  4,  4,   "V",       "V V V V", false], # 85
        "GAMMAINV"=> [0x11f,  3,  3,   "V",         "V V V", false], # 86
         "GAMMALN"=> [0x10f,  1,  1,   "V",             "V", false], # 87
         "GEOMEAN"=> [0x13f,  1, 30,   "V",         "R ...", false], # 88
    "GETPIVOTDATA"=> [0x166,  2, 30,   "A",             "-", false], # 89
          "GROWTH"=> [0x034,  1,  4,   "A",       "R R R V", false], # 90
         "HARMEAN"=> [0x140,  1, 30,   "V",         "R ...", false], # 91
         "HLOOKUP"=> [0x065,  3,  4,   "V",       "V R R V", false], # 92
            "HOUR"=> [0x047,  1,  1,   "V",             "V", false], # 93
       "HYPERLINK"=> [0x167,  1,  2,   "V",           "V V", false], # 94
     "HYPGEOMVERT"=> [0x121,  4,  4,   "V",       "V V V V", false], # 95
              "IF"=> [0x001,  2,  3,   "R",         "V R R", false], # 96
           "INDEX"=> [0x01d,  2,  4,   "R",       "R V V V", false], # 97
        "INDIRECT"=> [0x094,  1,  2,   "R",           "V V",  true], # 98
            "INFO"=> [0x0f4,  1,  1,   "V",             "V", false], # 99
             "INT"=> [0x019,  1,  1,   "V",             "V", false], # 100
       "INTERCEPT"=> [0x137,  2,  2,   "V",           "A A", false], # 101
            "IPMT"=> [0x0a7,  4,  6,   "V",   "V V V V V V", false], # 102
             "IRR"=> [0x03e,  1,  2,   "V",           "R V", false], # 103
         "ISBLANK"=> [0x081,  1,  1,   "V",             "V", false], # 104
           "ISERR"=> [0x07e,  1,  1,   "V",             "V", false], # 105
         "ISERROR"=> [0x003,  1,  1,   "V",             "V", false], # 106
       "ISLOGICAL"=> [0x0c6,  1,  1,   "V",             "V", false], # 107
            "ISNA"=> [0x002,  1,  1,   "V",             "V", false], # 108
       "ISNONTEXT"=> [0x0c0,  1,  1,   "V",             "V", false], # 109
        "ISNUMBER"=> [0x080,  1,  1,   "V",             "V", false], # 110
           "ISPMT"=> [0x15e,  4,  4,   "V",       "V V V V", false], # 111
           "ISREF"=> [0x069,  1,  1,   "V",             "R", false], # 112
          "ISTEXT"=> [0x07f,  1,  1,   "V",             "V", false], # 113
            "KURT"=> [0x142,  1, 30,   "V",         "R ...", false], # 114
           "LARGE"=> [0x145,  2,  2,   "V",           "R V", false], # 115
            "LEFT"=> [0x073,  1,  2,   "V",           "V V", false], # 116
           "LEFTB"=> [0x0d0,  1,  2,   "V",           "V V", false], # 117
             "LEN"=> [0x020,  1,  1,   "V",             "V", false], # 118
            "LENB"=> [0x0d3,  1,  1,   "V",             "V", false], # 119
          "LINEST"=> [0x031,  1,  4,   "A",       "R R V V", false], # 120
              "LN"=> [0x016,  1,  1,   "V",             "V", false], # 121
             "LOG"=> [0x06d,  1,  2,   "V",           "V V", false], # 122
           "LOG10"=> [0x017,  1,  1,   "V",             "V", false], # 123
          "LOGEST"=> [0x033,  1,  4,   "A",       "R R V V", false], # 124
          "LOGINV"=> [0x123,  3,  3,   "V",         "V V V", false], # 125
     "LOGNORMDIST"=> [0x122,  3,  3,   "V",         "V V V", false], # 126
          "LOOKUP"=> [0x01c,  2,  3,   "V",         "V R R", false], # 127
           "LOWER"=> [0x070,  1,  1,   "V",             "V", false], # 128
           "MATCH"=> [0x040,  2,  3,   "V",         "V R R", false], # 129
             "MAX"=> [0x007,  1, 30,   "V",         "R ...", false], # 130
            "MAXA"=> [0x16a,  1, 30,   "V",         "R ...", false], # 131
         "MDETERM"=> [0x0a3,  1,  1,   "V",             "A", false], # 132
          "MEDIAN"=> [0x0e3,  1, 30,   "V",         "R ...", false], # 133
             "MID"=> [0x01f,  3,  3,   "V",         "V V V", false], # 134
            "MIDB"=> [0x0d2,  3,  3,   "V",         "V V V", false], # 135
             "MIN"=> [0x006,  1, 30,   "V",         "R ...", false], # 136
            "MINA"=> [0x16b,  1, 30,   "V",         "R ...", false], # 137
          "MINUTE"=> [0x048,  1,  1,   "V",             "V", false], # 138
        "MINVERSE"=> [0x0a4,  1,  1,   "A",             "A", false], # 139
            "MIRR"=> [0x03d,  3,  3,   "V",         "R V V", false], # 140
           "MMULT"=> [0x0a5,  2,  2,   "A",           "A A", false], # 141
       "MNORMSINV"=> [0x128,  1,  1,   "V",             "V", false], # 142
             "MOD"=> [0x027,  2,  2,   "V",           "V V", false], # 143
            "MODE"=> [0x14a,  1, 30,   "V",         "A ...", false], # 144
           "MONTH"=> [0x044,  1,  1,   "V",             "V", false], # 145
               "N"=> [0x083,  1,  1,   "V",             "R", false], # 146
              "NA"=> [0x00a,  0,  0,   "V",             "-", false], # 147
    "NEGBINOMDIST"=> [0x124,  3,  3,   "V",         "V V V", false], # 148
        "NORMDIST"=> [0x125,  4,  4,   "V",       "V V V V", false], # 149
         "NORMINV"=> [0x127,  3,  3,   "V",         "V V V", false], # 150
       "NORMSDIST"=> [0x126,  1,  1,   "V",             "V", false], # 151
             "NOT"=> [0x026,  1,  1,   "V",             "V", false], # 152
             "NOW"=> [0x04a,  0,  0,   "V",             "-",  true], # 153
            "NPER"=> [0x03a,  3,  5,   "V",     "V V V V V", false], # 154
             "NPV"=> [0x00b,  2, 30,   "V",       "V R ...", false], # 155
    "NUMBERSTRING"=> [0x161,  2,  2,   "V",           "V V", false], # 156
             "ODD"=> [0x12a,  1,  1,   "V",             "V", false], # 157
          "OFFSET"=> [0x04e,  3,  5,   "R",     "R V V V V",  true], # 158
              "OR"=> [0x025,  1, 30,   "V",         "R ...", false], # 159
         "PEARSON"=> [0x138,  2,  2,   "V",           "A A", false], # 160
      "PERCENTILE"=> [0x148,  2,  2,   "V",           "R V", false], # 161
     "PERCENTRANK"=> [0x149,  2,  3,   "V",         "R V V", false], # 162
          "PERMUT"=> [0x12b,  2,  2,   "V",           "V V", false], # 163
        "PHONETIC"=> [0x168,  1,  1,   "V",             "R", false], # 164
              "PI"=> [0x013,  0,  0,   "V",             "-", false], # 165
             "PMT"=> [0x03b,  3,  5,   "V",     "V V V V V", false], # 166
         "POISSON"=> [0x12c,  3,  3,   "V",         "V V V", false], # 167
           "POWER"=> [0x151,  2,  2,   "V",           "V V", false], # 168
            "PPMT"=> [0x0a8,  4,  6,   "V",   "V V V V V V", false], # 169
            "PROB"=> [0x13d,  3,  4,   "V",       "A A V V", false], # 170
         "PRODUCT"=> [0x0b7,  0, 30,   "V",         "R ...", false], # 171
          "PROPER"=> [0x072,  1,  1,   "V",             "V", false], # 172
              "PV"=> [0x038,  3,  5,   "V",     "V V V V V", false], # 173
        "QUARTILE"=> [0x147,  2,  2,   "V",           "R V", false], # 174
         "RADIANS"=> [0x156,  1,  1,   "V",             "V", false], # 175
            "RAND"=> [0x03f,  0,  0,   "V",             "-",  true], # 176
            "RANK"=> [0x0d8,  2,  3,   "V",         "V R V", false], # 177
            "RATE"=> [0x03c,  3,  6,   "V",   "V V V V V V", false], # 178
         "REPLACE"=> [0x077,  4,  4,   "V",       "V V V V", false], # 179
        "REPLACEB"=> [0x0cf,  4,  4,   "V",       "V V V V", false], # 180
            "REPT"=> [0x01e,  2,  2,   "V",           "V V", false], # 181
           "RIGHT"=> [0x074,  1,  2,   "V",           "V V", false], # 182
          "RIGHTB"=> [0x0d1,  1,  2,   "V",           "V V", false], # 183
           "ROMAN"=> [0x162,  1,  2,   "V",           "V V", false], # 184
           "ROUND"=> [0x01b,  2,  2,   "V",           "V V", false], # 185
       "ROUNDDOWN"=> [0x0d5,  2,  2,   "V",           "V V", false], # 186
         "ROUNDUP"=> [0x0d4,  2,  2,   "V",           "V V", false], # 187
             "ROW"=> [0x008,  0,  1,   "V",             "R", false], # 188
            "ROWS"=> [0x04c,  1,  1,   "V",             "R", false], # 189
             "RSQ"=> [0x139,  2,  2,   "V",           "A A", false], # 190
          "SEARCH"=> [0x052,  2,  3,   "V",         "V V V", false], # 191
         "SEARCHB"=> [0x0ce,  2,  3,   "V",         "V V V", false], # 192
          "SECOND"=> [0x049,  1,  1,   "V",             "V", false], # 193
            "SIGN"=> [0x01a,  1,  1,   "V",             "V", false], # 194
             "SIN"=> [0x00f,  1,  1,   "V",             "V", false], # 195
            "SINH"=> [0x0e5,  1,  1,   "V",             "V", false], # 196
            "SKEW"=> [0x143,  1, 30,   "V",         "R ...", false], # 197
             "SLN"=> [0x08e,  3,  3,   "V",         "V V V", false], # 198
           "SLOPE"=> [0x13b,  2,  2,   "V",           "A A", false], # 199
           "SMALL"=> [0x146,  2,  2,   "V",           "R V", false], # 200
            "SQRT"=> [0x014,  1,  1,   "V",             "V", false], # 201
     "STANDARDIZE"=> [0x129,  3,  3,   "V",         "V V V", false], # 202
           "STDEV"=> [0x00c,  1, 30,   "V",         "R ...", false], # 203
          "STDEVA"=> [0x16e,  1, 30,   "V",         "R ...", false], # 204
          "STDEVP"=> [0x0c1,  1, 30,   "V",         "R ...", false], # 205
         "STDEVPA"=> [0x16c,  1, 30,   "V",         "R ...", false], # 206
           "STEYX"=> [0x13a,  2,  2,   "V",           "A A", false], # 207
      "SUBSTITUTE"=> [0x078,  3,  4,   "V",       "V V V V", false], # 208
        "SUBTOTAL"=> [0x158,  2, 30,   "V",       "V R ...", false], # 209
             "SUM"=> [0x004,  0, 30,   "V",         "R ...", false], # 210
           "SUMIF"=> [0x159,  2,  3,   "V",         "R V R", false], # 211
      "SUMPRODUCT"=> [0x0e4,  1, 30,   "V",         "A ...", false], # 212
           "SUMSQ"=> [0x141,  0, 30,   "V",         "R ...", false], # 213
        "SUMX2MY2"=> [0x130,  2,  2,   "V",           "A A", false], # 214
        "SUMX2PY2"=> [0x131,  2,  2,   "V",           "A A", false], # 215
         "SUMXMY2"=> [0x12f,  2,  2,   "V",           "A A", false], # 216
             "SYD"=> [0x08f,  4,  4,   "V",       "V V V V", false], # 217
               "T"=> [0x082,  1,  1,   "V",             "R", false], # 218
             "TAN"=> [0x011,  1,  1,   "V",             "V", false], # 219
            "TANH"=> [0x0e7,  1,  1,   "V",             "V", false], # 220
           "TDIST"=> [0x12d,  3,  3,   "V",         "V V V", false], # 221
            "TEXT"=> [0x030,  2,  2,   "V",           "V V", false], # 222
            "TIME"=> [0x042,  3,  3,   "V",         "V V V", false], # 223
       "TIMEVALUE"=> [0x08d,  1,  1,   "V",             "V", false], # 224
            "TINV"=> [0x14c,  2,  2,   "V",           "V V", false], # 225
           "TODAY"=> [0x0dd,  0,  0,   "V",             "-",  true], # 226
       "TRANSPOSE"=> [0x053,  1,  1,   "A",             "A", false], # 227
           "TREND"=> [0x032,  1,  4,   "A",       "R R R V", false], # 228
            "TRIM"=> [0x076,  1,  1,   "V",             "V", false], # 229
        "TRIMMEAN"=> [0x14b,  2,  2,   "V",           "R V", false], # 230
            "true"=> [0x022,  0,  0,   "V",             "-", false], # 231
           "TRUNC"=> [0x0c5,  1,  2,   "V",           "V V", false], # 232
           "TTEST"=> [0x13c,  4,  4,   "V",       "A A V V", false], # 233
            "TYPE"=> [0x056,  1,  1,   "V",             "V", false], # 234
           "UPPER"=> [0x071,  1,  1,   "V",             "V", false], # 235
        "USDOLLAR"=> [0x0cc,  1,  2,   "V",           "V V", false], # 236
           "VALUE"=> [0x021,  1,  1,   "V",             "V", false], # 237
             "VAR"=> [0x02e,  1, 30,   "V",         "R ...", false], # 238
            "VARA"=> [0x16f,  1, 30,   "V",         "R ...", false], # 239
            "VARP"=> [0x0c2,  1, 30,   "V",         "R ...", false], # 240
           "VARPA"=> [0x16d,  1, 30,   "V",         "R ...", false], # 241
             "VDB"=> [0x0de,  5,  7,   "V", "V V V V V V V", false], # 242
         "VLOOKUP"=> [0x066,  3,  4,   "V",       "V R R V", false], # 243
         "WEEKDAY"=> [0x046,  1,  2,   "V",           "V V", false], # 244
         "WEIBULL"=> [0x12e,  4,  4,   "V",       "V V V V", false], # 245
            "YEAR"=> [0x045,  1,  1,   "V",             "V", false], # 246
           "ZTEST"=> [0x144,  2,  3,   "V",         "R V V", false]  # 247
}
StdFuncByNum =
{
    0x000=> [       "COUNT",  0, 30,   "V",         "R ...", false], # 1
    0x001=> [          "IF",  2,  3,   "R",         "V R R", false], # 2
    0x002=> [        "ISNA",  1,  1,   "V",             "V", false], # 3
    0x003=> [     "ISERROR",  1,  1,   "V",             "V", false], # 4
    0x004=> [         "SUM",  0, 30,   "V",         "R ...", false], # 5
    0x005=> [     "AVERAGE",  1, 30,   "V",         "R ...", false], # 6
    0x006=> [         "MIN",  1, 30,   "V",         "R ...", false], # 7
    0x007=> [         "MAX",  1, 30,   "V",         "R ...", false], # 8
    0x008=> [         "ROW",  0,  1,   "V",             "R", false], # 9
    0x009=> [      "COLUMN",  0,  1,   "V",             "R", false], # 10
    0x00a=> [          "NA",  0,  0,   "V",             "-", false], # 11
    0x00b=> [         "NPV",  2, 30,   "V",       "V R ...", false], # 12
    0x00c=> [       "STDEV",  1, 30,   "V",         "R ...", false], # 13
    0x00d=> [      "DOLLAR",  1,  2,   "V",           "V V", false], # 14
    0x00e=> [       "FIXED",  2,  3,   "V",         "V V V", false], # 15
    0x00f=> [         "SIN",  1,  1,   "V",             "V", false], # 16
    0x010=> [         "COS",  1,  1,   "V",             "V", false], # 17
    0x011=> [         "TAN",  1,  1,   "V",             "V", false], # 18
    0x012=> [      "ARCTAN",  1,  1,   "V",             "V", false], # 19
    0x013=> [          "PI",  0,  0,   "V",             "-", false], # 20
    0x014=> [        "SQRT",  1,  1,   "V",             "V", false], # 21
    0x015=> [         "EXP",  1,  1,   "V",             "V", false], # 22
    0x016=> [          "LN",  1,  1,   "V",             "V", false], # 23
    0x017=> [       "LOG10",  1,  1,   "V",             "V", false], # 24
    0x018=> [         "ABS",  1,  1,   "V",             "V", false], # 25
    0x019=> [         "INT",  1,  1,   "V",             "V", false], # 26
    0x01a=> [        "SIGN",  1,  1,   "V",             "V", false], # 27
    0x01b=> [       "ROUND",  2,  2,   "V",           "V V", false], # 28
    0x01c=> [      "LOOKUP",  2,  3,   "V",         "V R R", false], # 29
    0x01d=> [       "INDEX",  2,  4,   "R",       "R V V V", false], # 30
    0x01e=> [        "REPT",  2,  2,   "V",           "V V", false], # 31
    0x01f=> [         "MID",  3,  3,   "V",         "V V V", false], # 32
    0x020=> [         "LEN",  1,  1,   "V",             "V", false], # 33
    0x021=> [       "VALUE",  1,  1,   "V",             "V", false], # 34
    0x022=> [        "true",  0,  0,   "V",             "-", false], # 35
    0x023=> [       "false",  0,  0,   "V",             "-", false], # 36
    0x024=> [         "AND",  1, 30,   "V",         "R ...", false], # 37
    0x025=> [          "OR",  1, 30,   "V",         "R ...", false], # 38
    0x026=> [         "NOT",  1,  1,   "V",             "V", false], # 39
    0x027=> [         "MOD",  2,  2,   "V",           "V V", false], # 40
    0x028=> [      "DCOUNT",  3,  3,   "V",         "R R R", false], # 41
    0x029=> [        "DSUM",  3,  3,   "V",         "R R R", false], # 42
    0x02a=> [    "DAVERAGE",  3,  3,   "V",         "R R R", false], # 43
    0x02b=> [        "DMIN",  3,  3,   "V",         "R R R", false], # 44
    0x02c=> [        "DMAX",  3,  3,   "V",         "R R R", false], # 45
    0x02d=> [      "DSTDEV",  3,  3,   "V",         "R R R", false], # 46
    0x02e=> [         "VAR",  1, 30,   "V",         "R ...", false], # 47
    0x02f=> [        "DVAR",  3,  3,   "V",         "R R R", false], # 48
    0x030=> [        "TEXT",  2,  2,   "V",           "V V", false], # 49
    0x031=> [      "LINEST",  1,  4,   "A",       "R R V V", false], # 50
    0x032=> [       "TREND",  1,  4,   "A",       "R R R V", false], # 51
    0x033=> [      "LOGEST",  1,  4,   "A",       "R R V V", false], # 52
    0x034=> [      "GROWTH",  1,  4,   "A",       "R R R V", false], # 53
    0x038=> [          "PV",  3,  5,   "V",     "V V V V V", false], # 54
    0x039=> [          "FV",  3,  5,   "V",     "V V V V V", false], # 55
    0x03a=> [        "NPER",  3,  5,   "V",     "V V V V V", false], # 56
    0x03b=> [         "PMT",  3,  5,   "V",     "V V V V V", false], # 57
    0x03c=> [        "RATE",  3,  6,   "V",   "V V V V V V", false], # 58
    0x03d=> [        "MIRR",  3,  3,   "V",         "R V V", false], # 59
    0x03e=> [         "IRR",  1,  2,   "V",           "R V", false], # 60
    0x03f=> [        "RAND",  0,  0,   "V",             "-",  true], # 61
    0x040=> [       "MATCH",  2,  3,   "V",         "V R R", false], # 62
    0x041=> [        "DATE",  3,  3,   "V",         "V V V", false], # 63
    0x042=> [        "TIME",  3,  3,   "V",         "V V V", false], # 64
    0x043=> [         "DAY",  1,  1,   "V",             "V", false], # 65
    0x044=> [       "MONTH",  1,  1,   "V",             "V", false], # 66
    0x045=> [        "YEAR",  1,  1,   "V",             "V", false], # 67
    0x046=> [     "WEEKDAY",  1,  2,   "V",           "V V", false], # 68
    0x047=> [        "HOUR",  1,  1,   "V",             "V", false], # 69
    0x048=> [      "MINUTE",  1,  1,   "V",             "V", false], # 70
    0x049=> [      "SECOND",  1,  1,   "V",             "V", false], # 71
    0x04a=> [         "NOW",  0,  0,   "V",             "-",  true], # 72
    0x04b=> [       "AREAS",  1,  1,   "V",             "R", false], # 73
    0x04c=> [        "ROWS",  1,  1,   "V",             "R", false], # 74
    0x04d=> [     "COLUMNS",  1,  1,   "V",             "R", false], # 75
    0x04e=> [      "OFFSET",  3,  5,   "R",     "R V V V V",  true], # 76
    0x052=> [      "SEARCH",  2,  3,   "V",         "V V V", false], # 77
    0x053=> [   "TRANSPOSE",  1,  1,   "A",             "A", false], # 78
    0x056=> [        "TYPE",  1,  1,   "V",             "V", false], # 79
    0x061=> [       "ATAN2",  2,  2,   "V",           "V V", false], # 80
    0x062=> [        "ASIN",  1,  1,   "V",             "V", false], # 81
    0x063=> [        "ACOS",  1,  1,   "V",             "V", false], # 82
    0x064=> [      "CHOOSE",  2, 30,   "R",       "V R ...", false], # 83
    0x065=> [     "HLOOKUP",  3,  4,   "V",       "V R R V", false], # 84
    0x066=> [     "VLOOKUP",  3,  4,   "V",       "V R R V", false], # 85
    0x069=> [       "ISREF",  1,  1,   "V",             "R", false], # 86
    0x06d=> [         "LOG",  1,  2,   "V",           "V V", false], # 87
    0x06f=> [        "CHAR",  1,  1,   "V",             "V", false], # 88
    0x070=> [       "LOWER",  1,  1,   "V",             "V", false], # 89
    0x071=> [       "UPPER",  1,  1,   "V",             "V", false], # 90
    0x072=> [      "PROPER",  1,  1,   "V",             "V", false], # 91
    0x073=> [        "LEFT",  1,  2,   "V",           "V V", false], # 92
    0x074=> [       "RIGHT",  1,  2,   "V",           "V V", false], # 93
    0x075=> [       "EXACT",  2,  2,   "V",           "V V", false], # 94
    0x076=> [        "TRIM",  1,  1,   "V",             "V", false], # 95
    0x077=> [     "REPLACE",  4,  4,   "V",       "V V V V", false], # 96
    0x078=> [  "SUBSTITUTE",  3,  4,   "V",       "V V V V", false], # 97
    0x079=> [        "CODE",  1,  1,   "V",             "V", false], # 98
    0x07c=> [        "FIND",  2,  3,   "V",         "V V V", false], # 99
    0x07d=> [        "CELL",  1,  2,   "V",           "V R",  true], # 100
    0x07e=> [       "ISERR",  1,  1,   "V",             "V", false], # 101
    0x07f=> [      "ISTEXT",  1,  1,   "V",             "V", false], # 102
    0x080=> [    "ISNUMBER",  1,  1,   "V",             "V", false], # 103
    0x081=> [     "ISBLANK",  1,  1,   "V",             "V", false], # 104
    0x082=> [           "T",  1,  1,   "V",             "R", false], # 105
    0x083=> [           "N",  1,  1,   "V",             "R", false], # 106
    0x08c=> [   "DATEVALUE",  1,  1,   "V",             "V", false], # 107
    0x08d=> [   "TIMEVALUE",  1,  1,   "V",             "V", false], # 108
    0x08e=> [         "SLN",  3,  3,   "V",         "V V V", false], # 109
    0x08f=> [         "SYD",  4,  4,   "V",       "V V V V", false], # 110
    0x090=> [         "DDB",  4,  5,   "V",     "V V V V V", false], # 111
    0x094=> [    "INDIRECT",  1,  2,   "R",           "V V",  true], # 112
    0x0a2=> [       "CLEAN",  1,  1,   "V",             "V", false], # 113
    0x0a3=> [     "MDETERM",  1,  1,   "V",             "A", false], # 114
    0x0a4=> [    "MINVERSE",  1,  1,   "A",             "A", false], # 115
    0x0a5=> [       "MMULT",  2,  2,   "A",           "A A", false], # 116
    0x0a7=> [        "IPMT",  4,  6,   "V",   "V V V V V V", false], # 117
    0x0a8=> [        "PPMT",  4,  6,   "V",   "V V V V V V", false], # 118
    0x0a9=> [      "COUNTA",  0, 30,   "V",         "R ...", false], # 119
    0x0b7=> [     "PRODUCT",  0, 30,   "V",         "R ...", false], # 120
    0x0b8=> [        "FACT",  1,  1,   "V",             "V", false], # 121
    0x0bf=> [    "DPRODUCT",  3,  3,   "V",         "R R R", false], # 122
    0x0c0=> [   "ISNONTEXT",  1,  1,   "V",             "V", false], # 123
    0x0c1=> [      "STDEVP",  1, 30,   "V",         "R ...", false], # 124
    0x0c2=> [        "VARP",  1, 30,   "V",         "R ...", false], # 125
    0x0c3=> [     "DSTDEVP",  3,  3,   "V",         "R R R", false], # 126
    0x0c4=> [       "DVARP",  3,  3,   "V",         "R R R", false], # 127
    0x0c5=> [       "TRUNC",  1,  2,   "V",           "V V", false], # 128
    0x0c6=> [   "ISLOGICAL",  1,  1,   "V",             "V", false], # 129
    0x0c7=> [     "DCOUNTA",  3,  3,   "V",         "R R R", false], # 130
    0x0cc=> [    "USDOLLAR",  1,  2,   "V",           "V V", false], # 131
    0x0cd=> [       "FINDB",  2,  3,   "V",         "V V V", false], # 132
    0x0ce=> [     "SEARCHB",  2,  3,   "V",         "V V V", false], # 133
    0x0cf=> [    "REPLACEB",  4,  4,   "V",       "V V V V", false], # 134
    0x0d0=> [       "LEFTB",  1,  2,   "V",           "V V", false], # 135
    0x0d1=> [      "RIGHTB",  1,  2,   "V",           "V V", false], # 136
    0x0d2=> [        "MIDB",  3,  3,   "V",         "V V V", false], # 137
    0x0d3=> [        "LENB",  1,  1,   "V",             "V", false], # 138
    0x0d4=> [     "ROUNDUP",  2,  2,   "V",           "V V", false], # 139
    0x0d5=> [   "ROUNDDOWN",  2,  2,   "V",           "V V", false], # 140
    0x0d6=> [         "ASC",  1,  1,   "V",             "V", false], # 141
    0x0d7=> [        "DBSC",  1,  1,   "V",             "V", false], # 142
    0x0d8=> [        "RANK",  2,  3,   "V",         "V R V", false], # 143
    0x0db=> [     "ADDRESS",  2,  5,   "V",     "V V V V V", false], # 144
    0x0dc=> [     "DAYS360",  2,  3,   "V",         "V V V", false], # 145
    0x0dd=> [       "TODAY",  0,  0,   "V",             "-",  true], # 146
    0x0de=> [         "VDB",  5,  7,   "V", "V V V V V V V", false], # 147
    0x0e3=> [      "MEDIAN",  1, 30,   "V",         "R ...", false], # 148
    0x0e4=> [  "SUMPRODUCT",  1, 30,   "V",         "A ...", false], # 149
    0x0e5=> [        "SINH",  1,  1,   "V",             "V", false], # 150
    0x0e6=> [        "COSH",  1,  1,   "V",             "V", false], # 151
    0x0e7=> [        "TANH",  1,  1,   "V",             "V", false], # 152
    0x0e8=> [       "ASINH",  1,  1,   "V",             "V", false], # 153
    0x0e9=> [       "ACOSH",  1,  1,   "V",             "V", false], # 154
    0x0ea=> [       "ATANH",  1,  1,   "V",             "V", false], # 155
    0x0eb=> [        "DGET",  3,  3,   "V",         "R R R", false], # 156
    0x0f4=> [        "INFO",  1,  1,   "V",             "V", false], # 157
    0x0f7=> [          "DB",  4,  5,   "V",     "V V V V V", false], # 158
    0x0fc=> [   "FREQUENCY",  2,  2,   "A",           "R R", false], # 159
    0x105=> [  "ERROR.TYPE",  1,  1,   "V",             "V", false], # 160
    0x10d=> [      "AVEDEV",  1, 30,   "V",         "R ...", false], # 161
    0x10e=> [    "BETADIST",  3,  5,   "V",     "V V V V V", false], # 162
    0x10f=> [     "GAMMALN",  1,  1,   "V",             "V", false], # 163
    0x110=> [     "BETAINV",  3,  5,   "V",     "V V V V V", false], # 164
    0x111=> [   "BINOMDIST",  4,  4,   "V",       "V V V V", false], # 165
    0x112=> [     "CHIDIST",  2,  2,   "V",           "V V", false], # 166
    0x113=> [      "CHIINV",  2,  2,   "V",           "V V", false], # 167
    0x114=> [      "COMBIN",  2,  2,   "V",           "V V", false], # 168
    0x115=> [  "CONFIDENCE",  3,  3,   "V",         "V V V", false], # 169
    0x116=> [   "CRITBINOM",  3,  3,   "V",         "V V V", false], # 170
    0x117=> [        "EVEN",  1,  1,   "V",             "V", false], # 171
    0x118=> [   "EXPONDIST",  3,  3,   "V",         "V V V", false], # 172
    0x119=> [       "FDIST",  3,  3,   "V",         "V V V", false], # 173
    0x11a=> [        "FINV",  3,  3,   "V",         "V V V", false], # 174
    0x11b=> [      "FISHER",  1,  1,   "V",             "V", false], # 175
    0x11c=> [   "FISHERINV",  1,  1,   "V",             "V", false], # 176
    0x11d=> [       "FLOOR",  2,  2,   "V",           "V V", false], # 177
    0x11e=> [   "GAMMADIST",  4,  4,   "V",       "V V V V", false], # 178
    0x11f=> [    "GAMMAINV",  3,  3,   "V",         "V V V", false], # 179
    0x120=> [     "CEILING",  2,  2,   "V",           "V V", false], # 180
    0x121=> [ "HYPGEOMVERT",  4,  4,   "V",       "V V V V", false], # 181
    0x122=> [ "LOGNORMDIST",  3,  3,   "V",         "V V V", false], # 182
    0x123=> [      "LOGINV",  3,  3,   "V",         "V V V", false], # 183
    0x124=> ["NEGBINOMDIST",  3,  3,   "V",         "V V V", false], # 184
    0x125=> [    "NORMDIST",  4,  4,   "V",       "V V V V", false], # 185
    0x126=> [   "NORMSDIST",  1,  1,   "V",             "V", false], # 186
    0x127=> [     "NORMINV",  3,  3,   "V",         "V V V", false], # 187
    0x128=> [   "MNORMSINV",  1,  1,   "V",             "V", false], # 188
    0x129=> [ "STANDARDIZE",  3,  3,   "V",         "V V V", false], # 189
    0x12a=> [         "ODD",  1,  1,   "V",             "V", false], # 190
    0x12b=> [      "PERMUT",  2,  2,   "V",           "V V", false], # 191
    0x12c=> [     "POISSON",  3,  3,   "V",         "V V V", false], # 192
    0x12d=> [       "TDIST",  3,  3,   "V",         "V V V", false], # 193
    0x12e=> [     "WEIBULL",  4,  4,   "V",       "V V V V", false], # 194
    0x12f=> [     "SUMXMY2",  2,  2,   "V",           "A A", false], # 195
    0x130=> [    "SUMX2MY2",  2,  2,   "V",           "A A", false], # 196
    0x131=> [    "SUMX2PY2",  2,  2,   "V",           "A A", false], # 197
    0x132=> [     "CHITEST",  2,  2,   "V",           "A A", false], # 198
    0x133=> [      "CORREL",  2,  2,   "V",           "A A", false], # 199
    0x134=> [       "COVAR",  2,  2,   "V",           "A A", false], # 200
    0x135=> [    "FORECAST",  3,  3,   "V",         "V A A", false], # 201
    0x136=> [       "FTEST",  2,  2,   "V",           "A A", false], # 202
    0x137=> [   "INTERCEPT",  2,  2,   "V",           "A A", false], # 203
    0x138=> [     "PEARSON",  2,  2,   "V",           "A A", false], # 204
    0x139=> [         "RSQ",  2,  2,   "V",           "A A", false], # 205
    0x13a=> [       "STEYX",  2,  2,   "V",           "A A", false], # 206
    0x13b=> [       "SLOPE",  2,  2,   "V",           "A A", false], # 207
    0x13c=> [       "TTEST",  4,  4,   "V",       "A A V V", false], # 208
    0x13d=> [        "PROB",  3,  4,   "V",       "A A V V", false], # 209
    0x13e=> [       "DEVSQ",  1, 30,   "V",         "R ...", false], # 210
    0x13f=> [     "GEOMEAN",  1, 30,   "V",         "R ...", false], # 211
    0x140=> [     "HARMEAN",  1, 30,   "V",         "R ...", false], # 212
    0x141=> [       "SUMSQ",  0, 30,   "V",         "R ...", false], # 213
    0x142=> [        "KURT",  1, 30,   "V",         "R ...", false], # 214
    0x143=> [        "SKEW",  1, 30,   "V",         "R ...", false], # 215
    0x144=> [       "ZTEST",  2,  3,   "V",         "R V V", false], # 216
    0x145=> [       "LARGE",  2,  2,   "V",           "R V", false], # 217
    0x146=> [       "SMALL",  2,  2,   "V",           "R V", false], # 218
    0x147=> [    "QUARTILE",  2,  2,   "V",           "R V", false], # 219
    0x148=> [  "PERCENTILE",  2,  2,   "V",           "R V", false], # 220
    0x149=> [ "PERCENTRANK",  2,  3,   "V",         "R V V", false], # 221
    0x14a=> [        "MODE",  1, 30,   "V",         "A ...", false], # 222
    0x14b=> [    "TRIMMEAN",  2,  2,   "V",           "R V", false], # 223
    0x14c=> [        "TINV",  2,  2,   "V",           "V V", false], # 224
    0x150=> [ "CONCATENATE",  0, 30,   "V",         "V ...", false], # 225
    0x151=> [       "POWER",  2,  2,   "V",           "V V", false], # 226
    0x156=> [     "RADIANS",  1,  1,   "V",             "V", false], # 227
    0x157=> [     "DEGREES",  1,  1,   "V",             "V", false], # 228
    0x158=> [    "SUBTOTAL",  2, 30,   "V",       "V R ...", false], # 229
    0x159=> [       "SUMIF",  2,  3,   "V",         "R V R", false], # 230
    0x15a=> [     "COUNTIF",  2,  2,   "V",           "R V", false], # 231
    0x15b=> [  "COUNTBLANK",  1,  1,   "V",             "R", false], # 232
    0x15e=> [       "ISPMT",  4,  4,   "V",       "V V V V", false], # 233
    0x15f=> [     "DATEDIF",  3,  3,   "V",         "V V V", false], # 234
    0x160=> [  "DATESTRING",  1,  1,   "V",             "V", false], # 235
    0x161=> ["NUMBERSTRING",  2,  2,   "V",           "V V", false], # 236
    0x162=> [       "ROMAN",  1,  2,   "V",           "V V", false], # 237
    0x166=> ["GETPIVOTDATA",  2, 30,   "A",             "-", false], # 238
    0x167=> [   "HYPERLINK",  1,  2,   "V",           "V V", false], # 239
    0x168=> [    "PHONETIC",  1,  1,   "V",             "R", false], # 240
    0x169=> [    "AVERAGEA",  1, 30,   "V",         "R ...", false], # 241
    0x16a=> [        "MAXA",  1, 30,   "V",         "R ...", false], # 242
    0x16b=> [        "MINA",  1, 30,   "V",         "R ...", false], # 243
    0x16c=> [     "STDEVPA",  1, 30,   "V",         "R ...", false], # 244
    0x16d=> [       "VARPA",  1, 30,   "V",         "R ...", false], # 245
    0x16e=> [      "STDEVA",  1, 30,   "V",         "R ...", false], # 246
    0x16f=> [        "VARA",  1, 30,   "V",         "R ...", false]  # 247
}
PtgExp =

Formulas Parse things

0x01
PtgTbl =
0x02
PtgAdd =
0x03
PtgSub =
0x04
PtgMul =
0x05
PtgDiv =
0x06
PtgPower =
0x07
PtgConcat =
0x08
PtgLT =
0x09
PtgLE =
0x0a
PtgEQ =
0x0b
PtgGE =
0x0c
PtgGT =
0x0d
PtgNE =
0x0e
PtgIsect =
0x0f
PtgUnion =
0x10
PtgRange =
0x11
PtgUplus =
0x12
PtgUminus =
0x13
PtgPercent =
0x14
PtgParen =
0x15
PtgMissArg =
0x16
PtgStr =
0x17
PtgExtend =
0x18
PtgAttr =
0x19
PtgSheet =
0x1a
PtgEndSheet =
0x1b
PtgErr =
0x1c
PtgBool =
0x1d
PtgInt =
0x1e
PtgNum =
0x1f
PtgArrayR =
0x20
PtgFuncR =
0x21
PtgFuncVarR =
0x22
PtgNameR =
0x23
PtgRefR =
0x24
PtgAreaR =
0x25
PtgMemAreaR =
0x26
PtgMemErrR =
0x27
PtgMemNoMemR =
0x28
PtgMemFuncR =
0x29
PtgRefErrR =
0x2a
PtgAreaErrR =
0x2b
PtgRefNR =
0x2c
PtgAreaNR =
0x2d
PtgMemAreaNR =
0x2e
PtgMemNoMemNR =
0x2f
PtgNameXR =
0x39
PtgRef3dR =
0x3a
PtgArea3dR =
0x3b
PtgRefErr3dR =
0x3c
PtgAreaErr3dR =
0x3d
PtgArrayV =
0x40
PtgFuncV =
0x41
PtgFuncVarV =
0x42
PtgNameV =
0x43
PtgRefV =
0x44
PtgAreaV =
0x45
PtgMemAreaV =
0x46
PtgMemErrV =
0x47
PtgMemNoMemV =
0x48
PtgMemFuncV =
0x49
PtgRefErrV =
0x4a
PtgAreaErrV =
0x4b
PtgRefNV =
0x4c
PtgAreaNV =
0x4d
PtgMemAreaNV =
0x4e
PtgMemNoMemNV =
0x4f
PtgFuncCEV =
0x58
PtgNameXV =
0x59
PtgRef3dV =
0x5a
PtgArea3dV =
0x5b
PtgRefErr3dV =
0x5c
PtgAreaErr3dV =
0x5d
PtgArrayA =
0x60
PtgFuncA =
0x61
PtgFuncVarA =
0x62
PtgNameA =
0x63
PtgRefA =
0x64
PtgAreaA =
0x65
PtgMemAreaA =
0x66
PtgMemErrA =
0x67
PtgMemNoMemA =
0x68
PtgMemFuncA =
0x69
PtgRefErrA =
0x6a
PtgAreaErrA =
0x6b
PtgRefNA =
0x6c
PtgAreaNA =
0x6d
PtgMemAreaNA =
0x6e
PtgMemNoMemNA =
0x6f
PtgFuncCEA =
0x78
PtgNameXA =
0x79
PtgRef3dA =
0x7a
PtgArea3dA =
0x7b
PtgRefErr3dA =
0x7c
PtgAreaErr3dA =
0x7d
PtgNames =
{
    PtgExp         => "ptgExp",
    PtgTbl         => "ptgTbl",
    PtgAdd         => "ptgAdd",
    PtgSub         => "ptgSub",
    PtgMul         => "ptgMul",
    PtgDiv         => "ptgDiv",
    PtgPower       => "ptgPower",
    PtgConcat      => "ptgConcat",
    PtgLT          => "ptgLT",
    PtgLE          => "ptgLE",
    PtgEQ          => "ptgEQ",
    PtgGE          => "ptgGE",
    PtgGT          => "ptgGT",
    PtgNE          => "ptgNE",
    PtgIsect       => "ptgIsect",
    PtgUnion       => "ptgUnion",
    PtgRange       => "ptgRange",
    PtgUplus       => "ptgUplus",
    PtgUminus      => "ptgUminus",
    PtgPercent     => "ptgPercent",
    PtgParen       => "ptgParen",
    PtgMissArg     => "ptgMissArg",
    PtgStr         => "ptgStr",
    PtgExtend      => "ptgExtend",
    PtgAttr        => "ptgAttr",
    PtgSheet       => "ptgSheet",
    PtgEndSheet    => "ptgEndSheet",
    PtgErr         => "ptgErr",
    PtgBool        => "ptgBool",
    PtgInt         => "ptgInt",
    PtgNum         => "ptgNum",
    PtgArrayR      => "ptgArrayR",
    PtgFuncR       => "ptgFuncR",
    PtgFuncVarR    => "ptgFuncVarR",
    PtgNameR       => "ptgNameR",
    PtgRefR        => "ptgRefR",
    PtgAreaR       => "ptgAreaR",
    PtgMemAreaR    => "ptgMemAreaR",
    PtgMemErrR     => "ptgMemErrR",
    PtgMemNoMemR   => "ptgMemNoMemR",
    PtgMemFuncR    => "ptgMemFuncR",
    PtgRefErrR     => "ptgRefErrR",
    PtgAreaErrR    => "ptgAreaErrR",
    PtgRefNR       => "ptgRefNR",
    PtgAreaNR      => "ptgAreaNR",
    PtgMemAreaNR   => "ptgMemAreaNR",
    PtgMemNoMemNR  => "ptgMemNoMemNR",
    PtgNameXR      => "ptgNameXR",
    PtgRef3dR      => "ptgRef3dR",
    PtgArea3dR     => "ptgArea3dR",
    PtgRefErr3dR   => "ptgRefErr3dR",
    PtgAreaErr3dR  => "ptgAreaErr3dR",
    PtgArrayV      => "ptgArrayV",
    PtgFuncV       => "ptgFuncV",
    PtgFuncVarV    => "ptgFuncVarV",
    PtgNameV       => "ptgNameV",
    PtgRefV        => "ptgRefV",
    PtgAreaV       => "ptgAreaV",
    PtgMemAreaV    => "ptgMemAreaV",
    PtgMemErrV     => "ptgMemErrV",
    PtgMemNoMemV   => "ptgMemNoMemV",
    PtgMemFuncV    => "ptgMemFuncV",
    PtgRefErrV     => "ptgRefErrV",
    PtgAreaErrV    => "ptgAreaErrV",
    PtgRefNV       => "ptgRefNV",
    PtgAreaNV      => "ptgAreaNV",
    PtgMemAreaNV   => "ptgMemAreaNV",
    PtgMemNoMemNV  => "ptgMemNoMemNV",
    PtgFuncCEV     => "ptgFuncCEV",
    PtgNameXV      => "ptgNameXV",
    PtgRef3dV      => "ptgRef3dV",
    PtgArea3dV     => "ptgArea3dV",
    PtgRefErr3dV   => "ptgRefErr3dV",
    PtgAreaErr3dV  => "ptgAreaErr3dV",
    PtgArrayA      => "ptgArrayA",
    PtgFuncA       => "ptgFuncA",
    PtgFuncVarA    => "ptgFuncVarA",
    PtgNameA       => "ptgNameA",
    PtgRefA        => "ptgRefA",
    PtgAreaA       => "ptgAreaA",
    PtgMemAreaA    => "ptgMemAreaA",
    PtgMemErrA     => "ptgMemErrA",
    PtgMemNoMemA   => "ptgMemNoMemA",
    PtgMemFuncA    => "ptgMemFuncA",
    PtgRefErrA     => "ptgRefErrA",
    PtgAreaErrA    => "ptgAreaErrA",
    PtgRefNA       => "ptgRefNA",
    PtgAreaNA      => "ptgAreaNA",
    PtgMemAreaNA   => "ptgMemAreaNA",
    PtgMemNoMemNA  => "ptgMemNoMemNA",
    PtgFuncCEA     => "ptgFuncCEA",
    PtgNameXA      => "ptgNameXA",
    PtgRef3dA      => "ptgRef3dA",
    PtgArea3dA     => "ptgArea3dA",
    PtgRefErr3dA   => "ptgRefErr3dA",
    PtgAreaErr3dA  => "ptgAreaErr3dA"
}
ErrorMsgByCode =
{
    0x00=> "#NULL!",  # intersection of two cell ranges is empty
    0x07=> "#DIV/0!", # division by zero
    0x0F=> "#VALUE!", # wrong type of operand
    0x17=> "#REF!",   # illegal or deleted cell reference
    0x1D=> "#NAME?",  # wrong function or range name
    0x24=> "#NUM!",   # value range overflow
    0x2A=> "#N/A!"    # argument or function not available
}

Class Method Summary collapse

Class Method Details

.encodingObject



4
5
6
# File 'lib/ru_excel.rb', line 4

def self.encoding
	@encoding
end

.encoding=(enc) ⇒ Object



7
8
9
10
11
# File 'lib/ru_excel.rb', line 7

def self.encoding=(enc)
	@encoding = enc
	(ICONV[:to_unicode] = Iconv.new('utf16le', enc)).iconv('z')
	(ICONV[:from_unicode] = Iconv.new(enc, 'utf16le')).iconv("z\0")
end