Search in sources :

Example 6 with FunctionMetadata

use of org.apache.poi.ss.formula.function.FunctionMetadata in project poi by apache.

the class FunctionEval method produceFunctions.

/**
     * See <a href="https://www.openoffice.org/sc/excelfileformat.pdf">Apache Open Office Excel File Format,
     * Section 3.11 Built-In Sheet Functions</a>
     */
private static Function[] produceFunctions() {
    Function[] retval = new Function[368];
    retval[0] = new Count();
    //nominally 1
    retval[FunctionID.IF] = new IfFunc();
    retval[2] = LogicalFunction.ISNA;
    retval[3] = LogicalFunction.ISERROR;
    //nominally 4
    retval[FunctionID.SUM] = AggregateFunction.SUM;
    retval[5] = AggregateFunction.AVERAGE;
    retval[6] = AggregateFunction.MIN;
    retval[7] = AggregateFunction.MAX;
    // ROW
    retval[8] = new RowFunc();
    retval[9] = new Column();
    retval[10] = new Na();
    retval[11] = new Npv();
    retval[12] = AggregateFunction.STDEV;
    retval[13] = NumericFunction.DOLLAR;
    retval[14] = new Fixed();
    retval[15] = NumericFunction.SIN;
    retval[16] = NumericFunction.COS;
    retval[17] = NumericFunction.TAN;
    retval[18] = NumericFunction.ATAN;
    retval[19] = NumericFunction.PI;
    retval[20] = NumericFunction.SQRT;
    retval[21] = NumericFunction.EXP;
    retval[22] = NumericFunction.LN;
    retval[23] = NumericFunction.LOG10;
    retval[24] = NumericFunction.ABS;
    retval[25] = NumericFunction.INT;
    retval[26] = NumericFunction.SIGN;
    retval[27] = NumericFunction.ROUND;
    retval[28] = new Lookup();
    retval[29] = new Index();
    retval[30] = new Rept();
    retval[31] = TextFunction.MID;
    retval[32] = TextFunction.LEN;
    retval[33] = new Value();
    retval[34] = BooleanFunction.TRUE;
    retval[35] = BooleanFunction.FALSE;
    retval[36] = BooleanFunction.AND;
    retval[37] = BooleanFunction.OR;
    retval[38] = BooleanFunction.NOT;
    retval[39] = NumericFunction.MOD;
    // 40: DCOUNT
    // 41: DSUM
    // 42: DAVERAGE
    retval[43] = new DStarRunner(DStarRunner.DStarAlgorithmEnum.DMIN);
    // 44: DMAX
    // 45: DSTDEV
    retval[46] = AggregateFunction.VAR;
    // 47: DVAR
    retval[48] = TextFunction.TEXT;
    // 49: LINEST
    // 50: TREND
    // 51: LOGEST
    // 52: GROWTH
    retval[56] = FinanceFunction.PV;
    retval[57] = FinanceFunction.FV;
    retval[58] = FinanceFunction.NPER;
    retval[59] = FinanceFunction.PMT;
    retval[60] = new Rate();
    retval[61] = new Mirr();
    retval[62] = new Irr();
    retval[63] = NumericFunction.RAND;
    retval[64] = new Match();
    retval[65] = DateFunc.instance;
    retval[66] = new TimeFunc();
    retval[67] = CalendarFieldFunction.DAY;
    retval[68] = CalendarFieldFunction.MONTH;
    retval[69] = CalendarFieldFunction.YEAR;
    retval[70] = WeekdayFunc.instance;
    retval[71] = CalendarFieldFunction.HOUR;
    retval[72] = CalendarFieldFunction.MINUTE;
    retval[73] = CalendarFieldFunction.SECOND;
    retval[74] = new Now();
    // 75: AREAS
    retval[76] = new Rows();
    retval[77] = new Columns();
    //nominally 78
    retval[FunctionID.OFFSET] = new Offset();
    retval[82] = TextFunction.SEARCH;
    // 83: TRANSPOSE
    // 86: TYPE
    retval[97] = NumericFunction.ATAN2;
    retval[98] = NumericFunction.ASIN;
    retval[99] = NumericFunction.ACOS;
    //nominally 100
    retval[FunctionID.CHOOSE] = new Choose();
    retval[101] = new Hlookup();
    retval[102] = new Vlookup();
    retval[105] = LogicalFunction.ISREF;
    retval[109] = NumericFunction.LOG;
    retval[111] = TextFunction.CHAR;
    retval[112] = TextFunction.LOWER;
    retval[113] = TextFunction.UPPER;
    retval[114] = TextFunction.PROPER;
    retval[115] = TextFunction.LEFT;
    retval[116] = TextFunction.RIGHT;
    retval[117] = TextFunction.EXACT;
    retval[118] = TextFunction.TRIM;
    retval[119] = new Replace();
    retval[120] = new Substitute();
    retval[121] = new Code();
    retval[124] = TextFunction.FIND;
    retval[126] = LogicalFunction.ISERR;
    retval[127] = LogicalFunction.ISTEXT;
    retval[128] = LogicalFunction.ISNUMBER;
    retval[129] = LogicalFunction.ISBLANK;
    retval[130] = new T();
    // Indirect.evaluate has different signature
    retval[FunctionID.INDIRECT] = null;
    retval[162] = TextFunction.CLEAN;
    retval[167] = new IPMT();
    retval[168] = new PPMT();
    retval[169] = new Counta();
    retval[183] = AggregateFunction.PRODUCT;
    retval[184] = NumericFunction.FACT;
    retval[190] = LogicalFunction.ISNONTEXT;
    retval[194] = AggregateFunction.VARP;
    retval[197] = NumericFunction.TRUNC;
    retval[198] = LogicalFunction.ISLOGICAL;
    //204: USDOLLAR (YEN in BIFF3)
    //205: FINDB
    //206: SEARCHB
    //207: REPLACEB
    //208: LEFTB
    //209: RIGHTB
    //210: MIDB
    //211: LENB
    retval[212] = NumericFunction.ROUNDUP;
    retval[213] = NumericFunction.ROUNDDOWN;
    //214: ASC
    //215: DBCS (JIS in BIFF3)
    retval[216] = new Rank();
    retval[219] = new Address();
    retval[220] = new Days360();
    retval[221] = new Today();
    //222: VBD
    retval[227] = AggregateFunction.MEDIAN;
    retval[228] = new Sumproduct();
    retval[229] = NumericFunction.SINH;
    retval[230] = NumericFunction.COSH;
    retval[231] = NumericFunction.TANH;
    retval[232] = NumericFunction.ASINH;
    retval[233] = NumericFunction.ACOSH;
    retval[234] = NumericFunction.ATANH;
    retval[235] = new DStarRunner(DStarRunner.DStarAlgorithmEnum.DGET);
    // 244: INFO
    // 247: DB
    // ExternalFunction is a FreeRefFunction, nominally 255
    retval[FunctionID.EXTERNAL_FUNC] = null;
    retval[261] = new Errortype();
    retval[269] = AggregateFunction.AVEDEV;
    // 270: BETADIST
    // 271: GAMMALN
    // 272: BETAINV
    // 273: BINOMDIST
    // 274: CHIDIST
    // 275: CHIINV
    retval[276] = NumericFunction.COMBIN;
    // 277: CONFIDENCE
    // 278:CRITBINOM
    retval[279] = new Even();
    // 280: EXPONDIST
    // 281: FDIST
    // 282: FINV
    // 283: FISHER
    // 284: FISHERINV
    retval[285] = NumericFunction.FLOOR;
    // 286: GAMMADIST
    // 287: GAMMAINV
    retval[288] = NumericFunction.CEILING;
    // 289: HYPGEOMDIST
    // 290: LOGNORMDIST
    // 291: LOGINV
    // 292: NEGBINOMDIST
    // 293: NORMDIST
    // 294: NORMSDIST
    // 295: NORMINV
    // 296: NORMSINV
    // 297: STANDARDIZE
    retval[298] = new Odd();
    // 299: PERMUT
    retval[300] = NumericFunction.POISSON;
    // 301: TDIST
    // 302: WEIBULL
    retval[303] = new Sumxmy2();
    retval[304] = new Sumx2my2();
    retval[305] = new Sumx2py2();
    // 306: CHITEST
    // 307: CORREL
    // 308: COVAR
    // 309: FORECAST
    // 310: FTEST
    retval[311] = new Intercept();
    // 312: PEARSON
    // 313: RSQ
    // 314: STEYX
    retval[315] = new Slope();
    // 316: TTEST
    // 317: PROB
    retval[318] = AggregateFunction.DEVSQ;
    // 319: GEOMEAN
    // 320: HARMEAN
    retval[321] = AggregateFunction.SUMSQ;
    // 322: KURT
    // 323: SKEW
    // 324: ZTEST
    retval[325] = AggregateFunction.LARGE;
    retval[326] = AggregateFunction.SMALL;
    // 327: QUARTILE
    retval[328] = AggregateFunction.PERCENTILE;
    // 329: PERCENTRANK
    retval[330] = new Mode();
    // 331: TRIMMEAN
    // 332: TINV
    retval[336] = TextFunction.CONCATENATE;
    retval[337] = NumericFunction.POWER;
    retval[342] = NumericFunction.RADIANS;
    retval[343] = NumericFunction.DEGREES;
    retval[344] = new Subtotal();
    retval[345] = new Sumif();
    retval[346] = new Countif();
    retval[347] = new Countblank();
    // 350: ISPMT
    // 351: DATEDIF
    // 352: DATESTRING
    // 353: NUMBERSTRING
    retval[354] = new Roman();
    // 358: GETPIVOTDATA
    retval[359] = new Hyperlink();
    // 360: PHONETIC
    // 361: AVERAGEA
    retval[362] = MinaMaxa.MAXA;
    retval[363] = MinaMaxa.MINA;
    for (int i = 0; i < retval.length; i++) {
        Function f = retval[i];
        if (f == null) {
            FunctionMetadata fm = FunctionMetadataRegistry.getFunctionByIndex(i);
            if (fm == null) {
                continue;
            }
            retval[i] = new NotImplementedFunction(fm.getName());
        }
    }
    return retval;
}
Also used : FunctionMetadata(org.apache.poi.ss.formula.function.FunctionMetadata)

Aggregations

FunctionMetadata (org.apache.poi.ss.formula.function.FunctionMetadata)6 TreeSet (java.util.TreeSet)2 FreeRefFunction (org.apache.poi.ss.formula.functions.FreeRefFunction)1 AbstractFunctionPtg (org.apache.poi.ss.formula.ptg.AbstractFunctionPtg)1