ExcelMagic.py :  » Windows » Python-Extensions-for-Windows » pyexcelerator-0.6.4.1 » pyExcelerator » Python Open Source

Home
Python Open Source
1.3.1.2 Python
2.Ajax
3.Aspect Oriented
4.Blog
5.Build
6.Business Application
7.Chart Report
8.Content Management Systems
9.Cryptographic
10.Database
11.Development
12.Editor
13.Email
14.ERP
15.Game 2D 3D
16.GIS
17.GUI
18.IDE
19.Installer
20.IRC
21.Issue Tracker
22.Language Interface
23.Log
24.Math
25.Media Sound Audio
26.Mobile
27.Network
28.Parser
29.PDF
30.Project Management
31.RSS
32.Search
33.Security
34.Template Engines
35.Test
36.UML
37.USB Serial
38.Web Frameworks
39.Web Server
40.Web Services
41.Web Unit
42.Wiki
43.Windows
44.XML
Python Open Source » Windows » Python Extensions for Windows 
Python Extensions for Windows » pyexcelerator 0.6.4.1 » pyExcelerator » ExcelMagic.py
#!/usr/bin/env python
# -*- coding: windows-1251 -*-

#  Copyright (C) 2005 Roman V. Kiseliov
#  All rights reserved.
#
#  Redistribution and use in source and binary forms, with or without
#  modification, are permitted provided that the following conditions
#  are met:
#
#  1. Redistributions of source code must retain the above copyright
#     notice, this list of conditions and the following disclaimer.
#
#  2. Redistributions in binary form must reproduce the above copyright
#     notice, this list of conditions and the following disclaimer in
#     the documentation and/or other materials provided with the
#     distribution.
#
#  3. All advertising materials mentioning features or use of this
#     software must display the following acknowledgment:
#     "This product includes software developed by
#      Roman V. Kiseliov <roman@kiseliov.ru>."
#
#  4. Redistributions of any form whatsoever must retain the following
#     acknowledgment:
#     "This product includes software developed by
#      Roman V. Kiseliov <roman@kiseliov.ru>."
#
#  THIS SOFTWARE IS PROVIDED BY Roman V. Kiseliov ``AS IS'' AND ANY
#  EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
#  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
#  PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL Roman V. Kiseliov OR
#  ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
#  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
#  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
#  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
#  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
#  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
#  OF THE POSSIBILITY OF SUCH DAMAGE.


__rev_id__ = """$Id: ExcelMagic.py,v 1.2 2005/10/26 07:44:24 rvk Exp $"""


"""
lots of Excel Magic Numbers
"""

# Boundaries BIFF8+

MAX_ROW = 65536
MAX_COL = 256


biff_records = {
    0x0000: "DIMENSIONS",
    0x0001: "BLANK",
    0x0002: "INTEGER",
    0x0003: "NUMBER",
    0x0004: "LABEL",
    0x0005: "BOOLERR",
    0x0006: "FORMULA",
    0x0007: "STRING",
    0x0008: "ROW",
    0x0009: "BOF",
    0x000A: "EOF",
    0x000B: "INDEX",
    0x000C: "CALCCOUNT",
    0x000D: "CALCMODE",
    0x000E: "PRECISION",
    0x000F: "REFMODE",
    0x0010: "DELTA",
    0x0011: "ITERATION",
    0x0012: "PROTECT",
    0x0013: "PASSWORD",
    0x0014: "HEADER",
    0x0015: "FOOTER",
    0x0016: "EXTERNCOUNT",
    0x0017: "EXTERNSHEET",
    0x0018: "NAME",
    0x0019: "WINDOWPROTECT",
    0x001A: "VERTICALPAGEBREAKS",
    0x001B: "HORIZONTALPAGEBREAKS",
    0x001C: "NOTE",
    0x001D: "SELECTION",
    0x001E: "FORMAT",
    0x001F: "FORMATCOUNT",
    0x0020: "COLUMNDEFAULT",
    0x0021: "ARRAY",
    0x0022: "1904",
    0x0023: "EXTERNNAME",
    0x0024: "COLWIDTH",
    0x0025: "DEFAULTROWHEIGHT",
    0x0026: "LEFTMARGIN",
    0x0027: "RIGHTMARGIN",
    0x0028: "TOPMARGIN",
    0x0029: "BOTTOMMARGIN",
    0x002A: "PRINTHEADERS",
    0x002B: "PRINTGRIDLINES",
    0x002F: "FILEPASS",
    0x0031: "FONT",
    0x0036: "TABLE",
    0x003C: "CONTINUE",
    0x003D: "WINDOW1",
    0x003E: "WINDOW2",
    0x0040: "BACKUP",
    0x0041: "PANE",
    0x0042: "CODEPAGE",
    0x0043: "XF",
    0x0044: "IXFE",
    0x0045: "EFONT",
    0x004D: "PLS",
    0x0050: "DCON",
    0x0051: "DCONREF",
    0x0053: "DCONNAME",
    0x0055: "DEFCOLWIDTH",
    0x0056: "BUILTINFMTCNT",
    0x0059: "XCT",
    0x005A: "CRN",
    0x005B: "FILESHARING",
    0x005C: "WRITEACCESS",
    0x005D: "OBJ",
    0x005E: "UNCALCED",
    0x005F: "SAFERECALC",
    0x0060: "TEMPLATE",
    0x0063: "OBJPROTECT",
    0x007D: "COLINFO",
    0x007E: "RK",
    0x007F: "IMDATA",
    0x0080: "GUTS",
    0x0081: "WSBOOL",
    0x0082: "GRIDSET",
    0x0083: "HCENTER",
    0x0084: "VCENTER",
    0x0085: "BOUNDSHEET",
    0x0086: "WRITEPROT",
    0x0087: "ADDIN",
    0x0088: "EDG",
    0x0089: "PUB",
    0x008C: "COUNTRY",
    0x008D: "HIDEOBJ",
    0x008E: "BUNDLESOFFSET",
    0x008F: "BUNDLEHEADER",
    0x0090: "SORT",
    0x0091: "SUB",
    0x0092: "PALETTE",
    0x0093: "STYLE",
    0x0094: "LHRECORD",
    0x0095: "LHNGRAPH",
    0x0096: "SOUND",
    0x0098: "LPR",
    0x0099: "STANDARDWIDTH",
    0x009A: "FNGROUPNAME",
    0x009B: "FILTERMODE",
    0x009C: "FNGROUPCOUNT",
    0x009D: "AUTOFILTERINFO",
    0x009E: "AUTOFILTER",
    0x00A0: "SCL",
    0x00A1: "SETUP",
    0x00A9: "COORDLIST",
    0x00AB: "GCW",
    0x00AE: "SCENMAN",
    0x00AF: "SCENARIO",
    0x00B0: "SXVIEW",
    0x00B1: "SXVD",
    0x00B2: "SXVI",
    0x00B4: "SXIVD",
    0x00B5: "SXLI",
    0x00B6: "SXPI",
    0x00B8: "DOCROUTE",
    0x00B9: "RECIPNAME",
    0x00BC: "SHRFMLA",
    0x00BD: "MULRK",
    0x00BE: "MULBLANK",
    0x00C1: "MMS",
    0x00C2: "ADDMENU",
    0x00C3: "DELMENU",
    0x00C5: "SXDI",
    0x00C6: "SXDB",
    0x00C7: "SXFIELD",
    0x00C8: "SXINDEXLIST",
    0x00C9: "SXDOUBLE",
    0x00CD: "SXSTRING",
    0x00CE: "SXDATETIME",
    0x00D0: "SXTBL",
    0x00D1: "SXTBRGITEM",
    0x00D2: "SXTBPG",
    0x00D3: "OBPROJ",
    0x00D5: "SXIDSTM",
    0x00D6: "RSTRING",
    0x00D7: "DBCELL",
    0x00DA: "BOOKBOOL",
    0x00DC: "SXEXT|PARAMQRY",
    0x00DD: "SCENPROTECT",
    0x00DE: "OLESIZE",
    0x00DF: "UDDESC",
    0x00E0: "XF",
    0x00E1: "INTERFACEHDR",
    0x00E2: "INTERFACEEND",
    0x00E3: "SXVS",
    0x00E5: "MERGEDCELLS",
    0x00E9: "BITMAP",
    0x00EB: "MSODRAWINGGROUP",
    0x00EC: "MSODRAWING",
    0x00ED: "MSODRAWINGSELECTION",
    0x00F0: "SXRULE",
    0x00F1: "SXEX",
    0x00F2: "SXFILT",
    0x00F6: "SXNAME",
    0x00F7: "SXSELECT",
    0x00F8: "SXPAIR",
    0x00F9: "SXFMLA",
    0x00FB: "SXFORMAT",
    0x00FC: "SST",
    0x00FD: "LABELSST",
    0x00FF: "EXTSST",
    0x0100: "SXVDEX",
    0x0103: "SXFORMULA",
    0x0122: "SXDBEX",
    0x0137: "CHTRINSERT",
    0x0138: "CHTRINFO",
    0x013B: "CHTRCELLCONTENT",
    0x013D: "TABID",
    0x0140: "CHTRMOVERANGE",
    0x014D: "CHTRINSERTTAB",
    0x015F: "LABELRANGES",
    0x0160: "USESELFS",
    0x0161: "DSF",
    0x0162: "XL5MODIFY",
    0x0196: "CHTRHEADER",
    0x01A9: "USERBVIEW",
    0x01AA: "USERSVIEWBEGIN",
    0x01AB: "USERSVIEWEND",
    0x01AD: "QSI",
    0x01AE: "SUPBOOK",
    0x01AF: "PROT4REV",
    0x01B0: "CONDFMT",
    0x01B1: "CF",
    0x01B2: "DVAL",
    0x01B5: "DCONBIN",
    0x01B6: "TXO",
    0x01B7: "REFRESHALL",
    0x01B8: "HLINK",
    0x01BA: "CODENAME",
    0x01BB: "SXFDBTYPE",
    0x01BC: "PROT4REVPASS",
    0x01BE: "DV",
    0x01C0: "XL9FILE",
    0x01C1: "RECALCID",
    0x0200: "DIMENSIONS",
    0x0201: "BLANK",
    0x0203: "NUMBER",
    0x0204: "LABEL",
    0x0205: "BOOLERR",
    0x0206: "FORMULA",
    0x0207: "STRING",
    0x0208: "ROW",
    0x0209: "BOF",
    0x020B: "INDEX",
    0x0218: "NAME",
    0x0221: "ARRAY",
    0x0223: "EXTERNNAME",
    0x0225: "DEFAULTROWHEIGHT",
    0x0231: "FONT",
    0x0236: "TABLE",
    0x023E: "WINDOW2",
    0x0243: "XF",
    0x027E: "RK",
    0x0293: "STYLE",
    0x0406: "FORMULA",
    0x0409: "BOF",
    0x041E: "FORMAT",
    0x0443: "XF",
    0x04BC: "SHRFMLA",
    0x0800: "SCREENTIP",
    0x0803: "WEBQRYSETTINGS",
    0x0804: "WEBQRYTABLES",
    0x0809: "BOF",
    0x0862: "SHEETLAYOUT",
    0x0867: "SHEETPROTECTION",
    0x1001: "UNITS",
    0x1002: "ChartChart",
    0x1003: "ChartSeries",
    0x1006: "ChartDataformat",
    0x1007: "ChartLineformat",
    0x1009: "ChartMarkerformat",
    0x100A: "ChartAreaformat",
    0x100B: "ChartPieformat",
    0x100C: "ChartAttachedlabel",
    0x100D: "ChartSeriestext",
    0x1014: "ChartChartformat",
    0x1015: "ChartLegend",
    0x1016: "ChartSerieslist",
    0x1017: "ChartBar",
    0x1018: "ChartLine",
    0x1019: "ChartPie",
    0x101A: "ChartArea",
    0x101B: "ChartScatter",
    0x101C: "ChartChartline",
    0x101D: "ChartAxis",
    0x101E: "ChartTick",
    0x101F: "ChartValuerange",
    0x1020: "ChartCatserrange",
    0x1021: "ChartAxislineformat",
    0x1022: "ChartFormatlink",
    0x1024: "ChartDefaulttext",
    0x1025: "ChartText",
    0x1026: "ChartFontx",
    0x1027: "ChartObjectLink",
    0x1032: "ChartFrame",
    0x1033: "BEGIN",
    0x1034: "END",
    0x1035: "ChartPlotarea",
    0x103A: "Chart3D",
    0x103C: "ChartPicf",
    0x103D: "ChartDropbar",
    0x103E: "ChartRadar",
    0x103F: "ChartSurface",
    0x1040: "ChartRadararea",
    0x1041: "ChartAxisparent",
    0x1043: "ChartLegendxn",
    0x1044: "ChartShtprops",
    0x1045: "ChartSertocrt",
    0x1046: "ChartAxesused",
    0x1048: "ChartSbaseref",
    0x104A: "ChartSerparent",
    0x104B: "ChartSerauxtrend",
    0x104E: "ChartIfmt",
    0x104F: "ChartPos",
    0x1050: "ChartAlruns",
    0x1051: "ChartAI",
    0x105B: "ChartSerauxerrbar",
    0x105D: "ChartSerfmt",
    0x105F: "Chart3DDataFormat",
    0x1060: "ChartFbi",
    0x1061: "ChartBoppop",
    0x1062: "ChartAxcext",
    0x1063: "ChartDat",
    0x1064: "ChartPlotgrowth",
    0x1065: "ChartSiindex",
    0x1066: "ChartGelframe",
    0x1067: "ChartBoppcustom",
    0xFFFF: ""
}


std_func_by_name = {
             "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
}


std_func_by_num = {
    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
}


# Formulas Parse things

ptgExp          = 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"
}


error_msg_by_code = {
    0x00: u"#NULL!",  # intersection of two cell ranges is empty
    0x07: u"#DIV/0!", # division by zero
    0x0F: u"#VALUE!", # wrong type of operand
    0x17: u"#REF!",   # illegal or deleted cell reference
    0x1D: u"#NAME?",  # wrong function or range name
    0x24: u"#NUM!",   # value range overflow
    0x2A: u"#N/A!"    # argument or function not available
}
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.