forked from ScoDoc/ScoDoc
1062 lines
50 KiB
Python
Executable File
1062 lines
50 KiB
Python
Executable File
#!/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
|
|
}
|