• 中书写具体的公式即可,如:支持公式如下:
    1. private static Function[] produceFunctions() {
    2. Function[] retval = new Function[368];
    3.  
    4. retval[0] = new Count();
    5. retval[FunctionID.IF] = new IfFunc(); //nominally 1
    6. retval[2] = LogicalFunction.ISNA;
    7. retval[3] = LogicalFunction.ISERROR;
    8. retval[FunctionID.SUM] = AggregateFunction.SUM; //nominally 4
    9. retval[5] = AggregateFunction.AVERAGE;
    10. retval[6] = AggregateFunction.MIN;
    11. retval[7] = AggregateFunction.MAX;
    12. retval[8] = new RowFunc(); // ROW
    13. retval[9] = new Column();
    14. retval[10] = new Na();
    15. retval[11] = new Npv();
    16. retval[12] = AggregateFunction.STDEV;
    17. retval[13] = NumericFunction.DOLLAR;
    18. retval[14] = new Fixed();
    19. retval[15] = NumericFunction.SIN;
    20. retval[16] = NumericFunction.COS;
    21. retval[17] = NumericFunction.TAN;
    22. retval[18] = NumericFunction.ATAN;
    23. retval[19] = NumericFunction.PI;
    24. retval[20] = NumericFunction.SQRT;
    25. retval[21] = NumericFunction.EXP;
    26. retval[22] = NumericFunction.LN;
    27. retval[23] = NumericFunction.LOG10;
    28. retval[24] = NumericFunction.ABS;
    29. retval[25] = NumericFunction.INT;
    30. retval[26] = NumericFunction.SIGN;
    31. retval[27] = NumericFunction.ROUND;
    32. retval[28] = new Lookup();
    33. retval[29] = new Index();
    34. retval[30] = new Rept();
    35. retval[31] = TextFunction.MID;
    36. retval[32] = TextFunction.LEN;
    37. retval[33] = new Value();
    38. retval[34] = BooleanFunction.TRUE;
    39. retval[35] = BooleanFunction.FALSE;
    40. retval[36] = BooleanFunction.AND;
    41. retval[37] = BooleanFunction.OR;
    42. retval[38] = BooleanFunction.NOT;
    43. retval[39] = NumericFunction.MOD;
    44. // 40: DCOUNT
    45. retval[41] = new DStarRunner(DStarRunner.DStarAlgorithmEnum.DSUM);
    46. // 42: DAVERAGE
    47. retval[43] = new DStarRunner(DStarRunner.DStarAlgorithmEnum.DMIN);
    48. retval[44] = new DStarRunner(DStarRunner.DStarAlgorithmEnum.DMAX);
    49. // 45: DSTDEV
    50. retval[46] = AggregateFunction.VAR;
    51. // 47: DVAR
    52. retval[48] = TextFunction.TEXT;
    53. // 49: LINEST
    54. retval[50] = new Trend();
    55. // 51: LOGEST
    56. // 52: GROWTH
    57.  
    58. retval[56] = FinanceFunction.PV;
    59. retval[57] = FinanceFunction.FV;
    60. retval[58] = FinanceFunction.NPER;
    61. retval[59] = FinanceFunction.PMT;
    62. retval[60] = new Rate();
    63. retval[61] = new Mirr();
    64. retval[62] = new Irr();
    65. retval[63] = NumericFunction.RAND;
    66. retval[64] = new Match();
    67. retval[65] = DateFunc.instance;
    68. retval[66] = new TimeFunc();
    69. retval[67] = CalendarFieldFunction.DAY;
    70. retval[68] = CalendarFieldFunction.MONTH;
    71. retval[69] = CalendarFieldFunction.YEAR;
    72. retval[70] = WeekdayFunc.instance;
    73. retval[71] = CalendarFieldFunction.HOUR;
    74. retval[72] = CalendarFieldFunction.MINUTE;
    75. retval[73] = CalendarFieldFunction.SECOND;
    76. retval[74] = new Now();
    77. retval[75] = new Areas();
    78. retval[76] = new Rows();
    79. retval[77] = new Columns();
    80. retval[FunctionID.OFFSET] = new Offset(); //nominally 78
    81.  
    82. retval[82] = TextFunction.SEARCH;
    83. retval[83] = MatrixFunction.TRANSPOSE;
    84.  
    85. // 86: TYPE
    86.  
    87. retval[97] = NumericFunction.ATAN2;
    88. retval[98] = NumericFunction.ASIN;
    89. retval[99] = NumericFunction.ACOS;
    90. retval[FunctionID.CHOOSE] = new Choose(); //nominally 100
    91. retval[101] = new Hlookup();
    92.  
    93. retval[105] = LogicalFunction.ISREF;
    94.  
    95. retval[109] = NumericFunction.LOG;
    96.  
    97. retval[111] = TextFunction.CHAR;
    98. retval[112] = TextFunction.LOWER;
    99. retval[113] = TextFunction.UPPER;
    100. retval[114] = TextFunction.PROPER;
    101. retval[115] = TextFunction.LEFT;
    102. retval[116] = TextFunction.RIGHT;
    103. retval[117] = TextFunction.EXACT;
    104. retval[118] = TextFunction.TRIM;
    105. retval[119] = new Replace();
    106. retval[120] = new Substitute();
    107. retval[121] = new Code();
    108.  
    109. retval[124] = TextFunction.FIND;
    110. // 125: CELL
    111.  
    112. retval[126] = LogicalFunction.ISERR;
    113. retval[127] = LogicalFunction.ISTEXT;
    114. retval[128] = LogicalFunction.ISNUMBER;
    115. retval[129] = LogicalFunction.ISBLANK;
    116. retval[130] = new T();
    117. // 131: N
    118. // 140: DATEVALUE
    119. // 141: TIMEVALUE
    120. // 142: SLN
    121. // 143: SYD
    122. // 144: DDB
    123.  
    124. retval[FunctionID.INDIRECT] = null; // Indirect.evaluate has different signature
    125.  
    126. retval[162] = TextFunction.CLEAN;
    127.  
    128. retval[163] = MatrixFunction.MDETERM;
    129. retval[164] = MatrixFunction.MINVERSE;
    130. retval[165] = MatrixFunction.MMULT;
    131.  
    132. retval[167] = new IPMT();
    133. retval[168] = new PPMT();
    134. retval[169] = new Counta();
    135.  
    136. retval[183] = AggregateFunction.PRODUCT;
    137. retval[184] = NumericFunction.FACT;
    138.  
    139. // 189: DPRODUCT
    140. retval[190] = LogicalFunction.ISNONTEXT;
    141.  
    142. retval[194] = AggregateFunction.VARP;
    143. // 195: DSTDEVP
    144. // 196: DVARP
    145. retval[197] = NumericFunction.TRUNC;
    146. retval[198] = LogicalFunction.ISLOGICAL;
    147. // 199: DCOUNTA
    148.  
    149. //204: USDOLLAR (YEN in BIFF3)
    150. //205: FINDB
    151. //206: SEARCHB
    152. //207: REPLACEB
    153. //208: LEFTB
    154. //209: RIGHTB
    155. //210: MIDB
    156. //211: LENB
    157. retval[212] = NumericFunction.ROUNDUP;
    158. retval[213] = NumericFunction.ROUNDDOWN;
    159. //214: ASC
    160. //215: DBCS (JIS in BIFF3)
    161. retval[216] = new Rank();
    162. retval[219] = new Address();
    163. retval[220] = new Days360();
    164. retval[221] = new Today();
    165. //222: VBD
    166.  
    167. retval[227] = AggregateFunction.MEDIAN;
    168. retval[228] = new Sumproduct();
    169. retval[229] = NumericFunction.SINH;
    170. retval[230] = NumericFunction.COSH;
    171. retval[231] = NumericFunction.TANH;
    172. retval[232] = NumericFunction.ASINH;
    173. retval[233] = NumericFunction.ACOSH;
    174. retval[234] = NumericFunction.ATANH;
    175. retval[235] = new DStarRunner(DStarRunner.DStarAlgorithmEnum.DGET);
    176.  
    177. // 244: INFO
    178.  
    179. // 247: DB
    180. // 252: FEQUENCY
    181. retval[252] = Frequency.instance;
    182.  
    183. retval[FunctionID.EXTERNAL_FUNC] = null; // ExternalFunction is a FreeRefFunction, nominally 255
    184. retval[261] = new Errortype();
    185.  
    186. retval[269] = AggregateFunction.AVEDEV;
    187. // 270: BETADIST
    188. // 271: GAMMALN
    189. // 272: BETAINV
    190. // 273: BINOMDIST
    191. // 274: CHIDIST
    192. // 275: CHIINV
    193. retval[276] = NumericFunction.COMBIN;
    194. // 277: CONFIDENCE
    195. // 278:CRITBINOM
    196. retval[279] = new Even();
    197. // 280: EXPONDIST
    198. // 281: FDIST
    199. // 282: FINV
    200. // 283: FISHER
    201. // 284: FISHERINV
    202. retval[285] = NumericFunction.FLOOR;
    203. // 286: GAMMADIST
    204. // 287: GAMMAINV
    205. retval[288] = NumericFunction.CEILING;
    206. // 289: HYPGEOMDIST
    207. // 290: LOGNORMDIST
    208. // 291: LOGINV
    209. // 292: NEGBINOMDIST
    210. // 293: NORMDIST
    211. // 294: NORMSDIST
    212. // 295: NORMINV
    213. // 296: NORMSINV
    214. // 297: STANDARDIZE
    215. retval[298] = new Odd();
    216. // 299: PERMUT
    217. retval[300] = NumericFunction.POISSON;
    218. // 301: TDIST
    219. // 302: WEIBULL
    220. retval[303] = new Sumxmy2();
    221. retval[304] = new Sumx2my2();
    222. retval[305] = new Sumx2py2();
    223. // 306: CHITEST
    224. // 307: CORREL
    225. // 308: COVAR
    226. // 309: FORECAST
    227. // 310: FTEST
    228. retval[311] = new Intercept();
    229. // 312: PEARSON
    230. // 313: RSQ
    231. // 314: STEYX
    232. retval[315] = new Slope();
    233. // 316: TTEST
    234. // 317: PROB
    235. retval[318] = AggregateFunction.DEVSQ;
    236. retval[319] = AggregateFunction.GEOMEAN;
    237. // 320: HARMEAN
    238. retval[321] = AggregateFunction.SUMSQ;
    239. // 322: KURT
    240. // 323: SKEW
    241. // 324: ZTEST
    242. retval[325] = AggregateFunction.LARGE;
    243. retval[326] = AggregateFunction.SMALL;
    244. // 327: QUARTILE
    245. retval[328] = AggregateFunction.PERCENTILE;
    246. // 329: PERCENTRANK
    247. retval[330] = new Mode();
    248. // 331: TRIMMEAN
    249. // 332: TINV
    250.  
    251. retval[336] = TextFunction.CONCATENATE;
    252. retval[337] = NumericFunction.POWER;
    253.  
    254. retval[342] = NumericFunction.RADIANS;
    255. retval[343] = NumericFunction.DEGREES;
    256. retval[344] = new Subtotal();
    257. retval[345] = new Sumif();
    258. retval[346] = new Countif();
    259. retval[347] = new Countblank();
    260.  
    261. // 350: ISPMT
    262. // 351: DATEDIF
    263. // 352: DATESTRING
    264. // 353: NUMBERSTRING
    265. retval[354] = new Roman();
    266.  
    267. // 358: GETPIVOTDATA
    268. retval[359] = new Hyperlink();
    269. // 360: PHONETIC
    270. // 361: AVERAGEA
    271. retval[362] = MinaMaxa.MAXA;
    272. retval[363] = MinaMaxa.MINA;
    273. // 364: STDEVPA
    274. // 365: VARPA
    275. // 366: STDEVA
    276. }