PHPExcel
[ class tree: PHPExcel ] [ index: PHPExcel ] [ all elements ]

Source for file Calculation.php

Documentation is available at Calculation.php

  1. <?php
  2. /**
  3.  * PHPExcel
  4.  *
  5.  * Copyright (c) 2006 - 2008 PHPExcel
  6.  *
  7.  * This library is free software; you can redistribute it and/or
  8.  * modify it under the terms of the GNU Lesser General Public
  9.  * License as published by the Free Software Foundation; either
  10.  * version 2.1 of the License, or (at your option) any later version.
  11.  *
  12.  * This library is distributed in the hope that it will be useful,
  13.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  15.  * Lesser General Public License for more details.
  16.  *
  17.  * You should have received a copy of the GNU Lesser General Public
  18.  * License along with this library; if not, write to the Free Software
  19.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  20.  *
  21.  * @category   PHPExcel
  22.  * @package    PHPExcel
  23.  * @copyright  Copyright (c) 2006 - 2008 PHPExcel (http://www.codeplex.com/PHPExcel)
  24.  * @license    http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt    LGPL
  25.  * @version    1.6.4, 2008-10-27
  26.  */
  27.  
  28. /** PHPExcel_Worksheet */
  29. require_once 'PHPExcel/Worksheet.php';
  30.  
  31. /** PHPExcel_Cell */
  32. require_once 'PHPExcel/Cell.php';
  33.  
  34. /** PHPExcel_Cell_DataType */
  35. require_once 'PHPExcel/Cell/DataType.php';
  36.  
  37. /** PHPExcel_RichText */
  38. require_once 'PHPExcel/RichText.php';
  39.  
  40. /** PHPExcel_NamedRange */
  41. require_once 'PHPExcel/NamedRange.php';
  42.  
  43. /** PHPExcel_Calculation_FormulaParser */
  44. require_once 'PHPExcel/Calculation/FormulaParser.php';
  45.  
  46. /** PHPExcel_Calculation_FormulaToken */
  47. require_once 'PHPExcel/Calculation/FormulaToken.php';
  48.  
  49. /** PHPExcel_Calculation_Functions */
  50. require_once 'PHPExcel/Calculation/Functions.php';
  51.  
  52. /** PHPExcel_Calculation_Function */
  53. require_once 'PHPExcel/Calculation/Function.php';
  54.  
  55. /**
  56.  * PHPExcel_Calculation (Singleton)
  57.  *
  58.  * @category   PHPExcel
  59.  * @package    PHPExcel
  60.  * @copyright  Copyright (c) 2006 - 2008 PHPExcel (http://www.codeplex.com/PHPExcel)
  61.  */
  62.     /**
  63.      * Function mappings (from Excel to PHPExcel)
  64.      *
  65.      * @var array 
  66.      */
  67.     private $_functionMappings = null;
  68.  
  69.     /**
  70.      * Calculation cache
  71.      *
  72.      * @var array 
  73.      */
  74.     private $_calculationCache = array );
  75.  
  76.     /**
  77.      * Calculation cache enabled
  78.      *
  79.      * @var boolean 
  80.      */
  81.     private $_calculationCacheEnabled = true;
  82.  
  83.     /**
  84.      * Calculation cache expiration time
  85.      *
  86.      * @var float 
  87.      */
  88.     private $_calculationCacheExpirationTime = 0.01;
  89.  
  90.     /**
  91.      * Instance of this class
  92.      *
  93.      * @var PHPExcel_Calculation 
  94.      */
  95.     private static $_instance;
  96.  
  97.     /**
  98.      * Get an instance of this class
  99.      *
  100.      * @return PHPExcel_Calculation 
  101.      */
  102.     public static function getInstance({
  103.         if (isset self::$_instance || is_null self::$_instance )) {
  104.             self::$_instance new PHPExcel_Calculation );
  105.         }
  106.  
  107.         return self::$_instance;
  108.     }
  109.  
  110.     /**
  111.      * Create a new PHPExcel_Calculation
  112.      */
  113.     protected function __construct({
  114.             // Assign function mappings
  115.         if (is_null($this->_functionMappings)) {
  116.             $this->_functionMappings = array(
  117.                 'ABS'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'ABS',                    'abs'),
  118.                 'ACCRINT'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'ACCRINT',                'PHPExcel_Calculation_Functions::DUMMY'),
  119.                 'ACCRINTM'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'ACCRINTM',                'PHPExcel_Calculation_Functions::DUMMY'),
  120.                 'ACOS'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'ACOS',                    'acos'),
  121.                 'ACOSH'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'ACOSH',                'acosh'),
  122.                 'ADDRESS'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE,    'ADDRESS',                'PHPExcel_Calculation_Functions::CELL_ADDRESS'),
  123.                 'AMORDEGRC'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'AMORDEGRC',            'PHPExcel_Calculation_Functions::DUMMY'),
  124.                 'AMORLINC'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'AMORLINC',                'PHPExcel_Calculation_Functions::DUMMY'),
  125.                 'AND'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_LOGICAL,                'AND',                    'PHPExcel_Calculation_Functions::LOGICAL_AND'),
  126.                 'AREAS'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE,    'AREAS',                'PHPExcel_Calculation_Functions::DUMMY'),
  127.                 'ASC'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,            'ASC',                    'PHPExcel_Calculation_Functions::DUMMY'),
  128.                 'ASIN'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'ASIN',                    'asin'),
  129.                 'ASINH'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'ASINH',                'asinh'),
  130.                 'ATAN'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'ATAN',                    'atan'),
  131.                 'ATAN2'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'ATAN2',                'PHPExcel_Calculation_Functions::REVERSE_ATAN2'),
  132.                 'ATANH'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'ATANH',                'atanh'),
  133.                 'AVEDEV'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'AVEDEV',                'PHPExcel_Calculation_Functions::AVEDEV'),
  134.                 'AVERAGE'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'AVERAGE',                'PHPExcel_Calculation_Functions::AVERAGE'),
  135.                 'AVERAGEA'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'AVERAGEA',                'PHPExcel_Calculation_Functions::AVERAGEA'),
  136.                 'AVERAGEIF'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'AVERAGEIF',            'PHPExcel_Calculation_Functions::DUMMY'),
  137.                 'AVERAGEIFS'            => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'AVERAGEIFS',            'PHPExcel_Calculation_Functions::DUMMY'),
  138.                 'BAHTTEXT'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,            'BAHTTEXT',                'PHPExcel_Calculation_Functions::DUMMY'),
  139.                 'BESSELI'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'BESSELI',                'PHPExcel_Calculation_Functions::BESSELI'),
  140.                 'BESSELJ'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'BESSELJ',                'PHPExcel_Calculation_Functions::BESSELJ'),
  141.                 'BESSELK'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'BESSELK',                'PHPExcel_Calculation_Functions::BESSELK'),
  142.                 'BESSELY'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'BESSELY',                'PHPExcel_Calculation_Functions::BESSELY'),
  143.                 'BETADIST'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'BETADIST',                'PHPExcel_Calculation_Functions::BETADIST'),
  144.                 'BETAINV'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'BETAINV',                'PHPExcel_Calculation_Functions::BETAINV'),
  145.                 'BIN2DEC'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'BIN2DEC',                'PHPExcel_Calculation_Functions::BINTODEC'),
  146.                 'BIN2HEX'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'BIN2HEX',                'PHPExcel_Calculation_Functions::BINTOHEX'),
  147.                 'BIN2OCT'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'BIN2OCT',                'PHPExcel_Calculation_Functions::BINTOOCT'),
  148.                 'BINOMDIST'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'BINOMDIST',            'PHPExcel_Calculation_Functions::BINOMDIST'),
  149.                 'CEILING'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'CEILING',                'PHPExcel_Calculation_Functions::CEILING'),
  150.                 'CELL'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_INFORMATION,            'CELL',                    'PHPExcel_Calculation_Functions::DUMMY'),
  151.                 'CHAR'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,            'CHAR',                    'chr'),
  152.                 'CHIDIST'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'CHIDIST',                'PHPExcel_Calculation_Functions::CHIDIST'),
  153.                 'CHIINV'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'CHIINV',                'PHPExcel_Calculation_Functions::CHIINV'),
  154.                 'CHITEST'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'CHITEST',                'PHPExcel_Calculation_Functions::DUMMY'),
  155.                 'CHOOSE'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE,    'CHOOSE',                'PHPExcel_Calculation_Functions::CHOOSE'),
  156.                 'CLEAN'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,            'CLEAN',                'PHPExcel_Calculation_Functions::TRIMNONPRINTABLE'),
  157.                 'CODE'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,            'CODE',                    'PHPExcel_Calculation_Functions::ASCIICODE'),
  158.                 'COLUMN'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE,    'COLUMN',                'PHPExcel_Calculation_Functions::COLUMN'),
  159.                 'COLUMNS'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE,    'COLUMNS',                'PHPExcel_Calculation_Functions::DUMMY'),
  160.                 'COMBIN'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'COMBIN',                'PHPExcel_Calculation_Functions::COMBIN'),
  161.                 'COMPLEX'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'COMPLEX',                'PHPExcel_Calculation_Functions::COMPLEX'),
  162.                 'CONCATENATE'            => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,            'CONCATENATE',            'PHPExcel_Calculation_Functions::CONCATENATE'),
  163.                 'CONFIDENCE'            => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'CONFIDENCE',            'PHPExcel_Calculation_Functions::CONFIDENCE'),
  164.                 'CONVERT'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'CONVERT',                'PHPExcel_Calculation_Functions::DUMMY'),
  165.                 'CORREL'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'CORREL',                'PHPExcel_Calculation_Functions::DUMMY'),
  166.                 'COS'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'COS',                    'cos'),
  167.                 'COSH'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'COSH',                    'cosh'),
  168.                 'COUNT'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'COUNT',                'PHPExcel_Calculation_Functions::COUNT'),
  169.                 'COUNTA'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'COUNTA',                'PHPExcel_Calculation_Functions::COUNTA'),
  170.                 'COUNTBLANK'            => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'COUNTBLANK',            'PHPExcel_Calculation_Functions::COUNTBLANK'),
  171.                 'COUNTIF'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'COUNTIF',                'PHPExcel_Calculation_Functions::DUMMY'),
  172.                 'COUNTIFS'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'COUNTIFS',                'PHPExcel_Calculation_Functions::DUMMY'),
  173.                 'COUPDAYBS'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'COUPDAYBS',            'PHPExcel_Calculation_Functions::DUMMY'),
  174.                 'COUPDAYSNC'            => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'COUPDAYSNC',            'PHPExcel_Calculation_Functions::DUMMY'),
  175.                 'COUPNCD'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'COUPNCD',                'PHPExcel_Calculation_Functions::DUMMY'),
  176.                 'COUPNUM'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'COUPNUM',                'PHPExcel_Calculation_Functions::DUMMY'),
  177.                 'COUPPCD'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'COUPPCD',                'PHPExcel_Calculation_Functions::DUMMY'),
  178.                 'COVAR'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'COVAR',                'PHPExcel_Calculation_Functions::DUMMY'),
  179.                 'CRITBINOM'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'CRITBINOM',            'PHPExcel_Calculation_Functions::CRITBINOM'),
  180.                 'CUBEKPIMEMBER'            => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_CUBE,                    'CUBEKPIMEMBER',        'PHPExcel_Calculation_Functions::DUMMY'),
  181.                 'CUBEMEMBER'            => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_CUBE,                    'CUBEMEMBER',            'PHPExcel_Calculation_Functions::DUMMY'),
  182.                 'CUBEMEMBERPROPERTY'    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_CUBE,                    'CUBEMEMBERPROPERTY',    'PHPExcel_Calculation_Functions::DUMMY'),
  183.                 'CUBERANKEDMEMBER'        => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_CUBE,                    'CUBERANKEDMEMBER',        'PHPExcel_Calculation_Functions::DUMMY'),
  184.                 'CUBESET'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_CUBE,                    'CUBESET',                'PHPExcel_Calculation_Functions::DUMMY'),
  185.                 'CUBESETCOUNT'            => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_CUBE,                    'CUBESETCOUNT',            'PHPExcel_Calculation_Functions::DUMMY'),
  186.                 'CUBEVALUE'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_CUBE,                    'CUBEVALUE',            'PHPExcel_Calculation_Functions::DUMMY'),
  187.                 'CUMIPMT'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'CUMIPMT',                'PHPExcel_Calculation_Functions::DUMMY'),
  188.                 'CUMPRINC'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'CUMPRINC',                'PHPExcel_Calculation_Functions::DUMMY'),
  189.                 'DATE'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,            'DATE',                    'PHPExcel_Calculation_Functions::DATE'),
  190.                 'DATEDIF'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,            'DATEDIF',                'PHPExcel_Calculation_Functions::DATEDIF'),
  191.                 'DATEVALUE'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,            'DATEVALUE',            'PHPExcel_Calculation_Functions::DATEVALUE'),
  192.                 'DAVERAGE'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_DATABASE,                'DAVERAGE',                'PHPExcel_Calculation_Functions::DUMMY'),
  193.                 'DAY'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,            'DAY',                    'PHPExcel_Calculation_Functions::DAYOFMONTH'),
  194.                 'DAYS360'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,            'DAYS360',                'PHPExcel_Calculation_Functions::DAYS360'),
  195.                 'DB'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'DB',                    'PHPExcel_Calculation_Functions::DUMMY'),
  196.                 'DCOUNT'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_DATABASE,                'DCOUNT',                'PHPExcel_Calculation_Functions::DUMMY'),
  197.                 'DCOUNTA'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_DATABASE,                'DCOUNTA',                'PHPExcel_Calculation_Functions::DUMMY'),
  198.                 'DDB'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'DDB',                    'PHPExcel_Calculation_Functions::DUMMY'),
  199.                 'DEC2BIN'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'DEC2BIN',                'PHPExcel_Calculation_Functions::DECTOBIN'),
  200.                 'DEC2HEX'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'DEC2HEX',                'PHPExcel_Calculation_Functions::DECTOHEX'),
  201.                 'DEC2OCT'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'DEC2OCT',                'PHPExcel_Calculation_Functions::DECTOOCT'),
  202.                 'DEGREES'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'DEGREES',                'rad2deg'),
  203.                 'DELTA'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'DELTA',                'PHPExcel_Calculation_Functions::DELTA'),
  204.                 'DEVSQ'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'DEVSQ',                'PHPExcel_Calculation_Functions::DEVSQ'),
  205.                 'DGET'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_DATABASE,                'DGET',                    'PHPExcel_Calculation_Functions::DUMMY'),
  206.                 'DISC'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'DISC',                    'PHPExcel_Calculation_Functions::DUMMY'),
  207.                 'DMAX'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_DATABASE,                'DMAX',                    'PHPExcel_Calculation_Functions::DUMMY'),
  208.                 'DMIN'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_DATABASE,                'DMIN',                    'PHPExcel_Calculation_Functions::DUMMY'),
  209.                 'DOLLAR'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,            'DOLLAR',                'PHPExcel_Calculation_Functions::DUMMY'),
  210.                 'DOLLARDE'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'DOLLARDE',                'PHPExcel_Calculation_Functions::DUMMY'),
  211.                 'DOLLARFR'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'DOLLARFR',                'PHPExcel_Calculation_Functions::DUMMY'),
  212.                 'DPRODUCT'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_DATABASE,                'DPRODUCT',                'PHPExcel_Calculation_Functions::DUMMY'),
  213.                 'DSTDEV'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_DATABASE,                'DSTDEV',                'PHPExcel_Calculation_Functions::DUMMY'),
  214.                 'DSTDEVP'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_DATABASE,                'DSTDEVP',                'PHPExcel_Calculation_Functions::DUMMY'),
  215.                 'DSUM'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_DATABASE,                'DSUM',                    'PHPExcel_Calculation_Functions::DUMMY'),
  216.                 'DURATION'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'DURATION',                'PHPExcel_Calculation_Functions::DUMMY'),
  217.                 'DVAR'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_DATABASE,                'DVAR',                    'PHPExcel_Calculation_Functions::DUMMY'),
  218.                 'DVARP'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_DATABASE,                'DVARP',                'PHPExcel_Calculation_Functions::DUMMY'),
  219.                 'EDATE'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,            'EDATE',                'PHPExcel_Calculation_Functions::EDATE'),
  220.                 'EFFECT'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'EFFECT',                'PHPExcel_Calculation_Functions::EFFECT'),
  221.                 'EOMONTH'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,            'EOMONTH',                'PHPExcel_Calculation_Functions::EOMONTH'),
  222.                 'ERF'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'ERF',                    'PHPExcel_Calculation_Functions::ERF'),
  223.                 'ERFC'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'ERFC',                    'PHPExcel_Calculation_Functions::ERFC'),
  224.                 'ERROR.TYPE'            => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_INFORMATION,            'ERROR.TYPE',            'PHPExcel_Calculation_Functions::DUMMY'),
  225.                 'EVEN'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'EVEN',                    'PHPExcel_Calculation_Functions::EVEN'),
  226.                 'EXACT'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,            'EXACT',                'PHPExcel_Calculation_Functions::DUMMY'),
  227.                 'EXP'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'EXP',                    'exp'),
  228.                 'EXPONDIST'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'EXPONDIST',            'PHPExcel_Calculation_Functions::EXPONDIST'),
  229.                 'FACT'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'FACT',                    'PHPExcel_Calculation_Functions::FACT'),
  230.                 'FACTDOUBLE'            => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'FACTDOUBLE',            'PHPExcel_Calculation_Functions::FACTDOUBLE'),
  231.                 'FALSE'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_LOGICAL,                'FALSE',                'PHPExcel_Calculation_Functions::LOGICAL_FALSE'),
  232.                 'FDIST'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'FDIST',                'PHPExcel_Calculation_Functions::DUMMY'),
  233.                 'FIND'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,            'FIND',                    'PHPExcel_Calculation_Functions::SEARCHSENSITIVE'),
  234.                 'FINDB'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,            'FINDB',                'PHPExcel_Calculation_Functions::DUMMY'),
  235.                 'FINV'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'FINV',                    'PHPExcel_Calculation_Functions::DUMMY'),
  236.                 'FISHER'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'FISHER',                'PHPExcel_Calculation_Functions::FISHER'),
  237.                 'FISHERINV'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'FISHERINV',            'PHPExcel_Calculation_Functions::FISHERINV'),
  238.                 'FIXED'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,            'FIXED',                'PHPExcel_Calculation_Functions::DUMMY'),
  239.                 'FLOOR'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'FLOOR',                'PHPExcel_Calculation_Functions::FLOOR'),
  240.                 'FORECAST'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'FORECAST',                'PHPExcel_Calculation_Functions::DUMMY'),
  241.                 'FREQUENCY'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'FREQUENCY',            'PHPExcel_Calculation_Functions::DUMMY'),
  242.                 'FTEST'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'FTEST',                'PHPExcel_Calculation_Functions::DUMMY'),
  243.                 'FV'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'FV',                    'PHPExcel_Calculation_Functions::FV'),
  244.                 'FVSCHEDULE'            => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'FVSCHEDULE',            'PHPExcel_Calculation_Functions::DUMMY'),
  245.                 'GAMMADIST'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'GAMMADIST',            'PHPExcel_Calculation_Functions::GAMMADIST'),
  246.                 'GAMMAINV'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'GAMMAINV',                'PHPExcel_Calculation_Functions::GAMMAINV'),
  247.                 'GAMMALN'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'GAMMALN',                'PHPExcel_Calculation_Functions::GAMMALN'),
  248.                 'GCD'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'GCD',                    'PHPExcel_Calculation_Functions::GCD'),
  249.                 'GEOMEAN'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'GEOMEAN',                'PHPExcel_Calculation_Functions::GEOMEAN'),
  250.                 'GESTEP'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'GESTEP',                'PHPExcel_Calculation_Functions::GESTEP'),
  251.                 'GETPIVOTDATA'            => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE,    'GETPIVOTDATA',            'PHPExcel_Calculation_Functions::DUMMY'),
  252.                 'GROWTH'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'GROWTH',                'PHPExcel_Calculation_Functions::DUMMY'),
  253.                 'HARMEAN'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'HARMEAN',                'PHPExcel_Calculation_Functions::HARMEAN'),
  254.                 'HEX2BIN'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'HEX2BIN',                'PHPExcel_Calculation_Functions::HEXTOBIN'),
  255.                 'HEX2DEC'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'HEX2DEC',                'PHPExcel_Calculation_Functions::HEXTODEC'),
  256.                 'HEX2OCT'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'HEX2OCT',                'PHPExcel_Calculation_Functions::HEXTOOCT'),
  257.                 'HLOOKUP'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE,    'HLOOKUP',                'PHPExcel_Calculation_Functions::DUMMY'),
  258.                 'HOUR'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,            'HOUR',                    'PHPExcel_Calculation_Functions::HOUROFDAY'),
  259.                 'HYPERLINK'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE,    'HYPERLINK',            'PHPExcel_Calculation_Functions::DUMMY'),
  260.                 'HYPGEOMDIST'            => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'HYPGEOMDIST',            'PHPExcel_Calculation_Functions::HYPGEOMDIST'),
  261.                 'IF'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_LOGICAL,                'IF',                    'PHPExcel_Calculation_Functions::STATEMENT_IF'),
  262.                 'IFERROR'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_LOGICAL,                'IFERROR',                'PHPExcel_Calculation_Functions::STATEMENT_IFERROR'),
  263.                 'IMABS'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'IMABS',                'PHPExcel_Calculation_Functions::IMABS'),
  264.                 'IMAGINARY'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'IMAGINARY',            'PHPExcel_Calculation_Functions::IMAGINARY'),
  265.                 'IMARGUMENT'            => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'IMARGUMENT',            'PHPExcel_Calculation_Functions::IMARGUMENT'),
  266.                 'IMCONJUGATE'            => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'IMCONJUGATE',            'PHPExcel_Calculation_Functions::IMCONJUGATE'),
  267.                 'IMCOS'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'IMCOS',                'PHPExcel_Calculation_Functions::IMCOS'),
  268.                 'IMDIV'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'IMDIV',                'PHPExcel_Calculation_Functions::IMDIV'),
  269.                 'IMEXP'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'IMEXP',                'PHPExcel_Calculation_Functions::IMEXP'),
  270.                 'IMLN'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'IMLN',                    'PHPExcel_Calculation_Functions::IMLN'),
  271.                 'IMLOG10'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'IMLOG10',                'PHPExcel_Calculation_Functions::IMLOG10'),
  272.                 'IMLOG2'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'IMLOG2',                'PHPExcel_Calculation_Functions::IMLOG2'),
  273.                 'IMPOWER'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'IMPOWER',                'PHPExcel_Calculation_Functions::IMPOWER'),
  274.                 'IMPRODUCT'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'IMPRODUCT',            'PHPExcel_Calculation_Functions::IMPRODUCT'),
  275.                 'IMREAL'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'IMREAL',                'PHPExcel_Calculation_Functions::IMREAL'),
  276.                 'IMSIN'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'IMSIN',                'PHPExcel_Calculation_Functions::IMSIN'),
  277.                 'IMSQRT'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'IMSQRT',                'PHPExcel_Calculation_Functions::IMSQRT'),
  278.                 'IMSUB'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'IMSUB',                'PHPExcel_Calculation_Functions::IMSUB'),
  279.                 'IMSUM'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'IMSUM',                'PHPExcel_Calculation_Functions::IMSUM'),
  280.                 'INDEX'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE,    'INDEX',                'PHPExcel_Calculation_Functions::INDEX'),
  281.                 'INDIRECT'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE,    'INDIRECT',                'PHPExcel_Calculation_Functions::DUMMY'),
  282.                 'INFO'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_INFORMATION,            'INFO',                    'PHPExcel_Calculation_Functions::DUMMY'),
  283.                 'INT'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'INT',                    'intval'),
  284.                 'INTERCEPT'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'INTERCEPT',            'PHPExcel_Calculation_Functions::DUMMY'),
  285.                 'INTRATE'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'INTRATE',                'PHPExcel_Calculation_Functions::DUMMY'),
  286.                 'IPMT'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'IPMT',                    'PHPExcel_Calculation_Functions::DUMMY'),
  287.                 'IRR'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'IRR',                    'PHPExcel_Calculation_Functions::DUMMY'),
  288.                 'ISBLANK'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_INFORMATION,            'ISBLANK',                'PHPExcel_Calculation_Functions::IS_BLANK'),
  289.                 'ISERR'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_INFORMATION,            'ISERR',                'PHPExcel_Calculation_Functions::IS_ERR'),
  290.                 'ISERROR'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_INFORMATION,            'ISERROR',                'PHPExcel_Calculation_Functions::IS_ERROR'),
  291.                 'ISEVEN'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_INFORMATION,            'ISEVEN',                'PHPExcel_Calculation_Functions::IS_EVEN'),
  292.                 'ISLOGICAL'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_INFORMATION,            'ISLOGICAL',            'PHPExcel_Calculation_Functions::IS_LOGICAL'),
  293.                 'ISNA'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_INFORMATION,            'ISNA',                    'PHPExcel_Calculation_Functions::IS_NA'),
  294.                 'ISNONTEXT'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_INFORMATION,            'ISNONTEXT',            '!PHPExcel_Calculation_Functions::IS_TEXT'),
  295.                 'ISNUMBER'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_INFORMATION,            'ISNUMBER',                'PHPExcel_Calculation_Functions::IS_NUMBER'),
  296.                 'ISODD'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_INFORMATION,            'ISODD',                '!PHPExcel_Calculation_Functions::IS_EVEN'),
  297.                 'ISPMT'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_INFORMATION,            'ISPMT',                'PHPExcel_Calculation_Functions::DUMMY'),
  298.                 'ISREF'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_INFORMATION,            'ISREF',                'PHPExcel_Calculation_Functions::DUMMY'),
  299.                 'ISTEXT'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_INFORMATION,            'ISTEXT',                'PHPExcel_Calculation_Functions::IS_TEXT'),
  300.                 'JIS'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,            'JIS',                    'PHPExcel_Calculation_Functions::DUMMY'),
  301.                 'KURT'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'KURT',                    'PHPExcel_Calculation_Functions::KURT'),
  302.                 'LARGE'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'LARGE',                'PHPExcel_Calculation_Functions::LARGE'),
  303.                 'LCM'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'LCM',                    'PHPExcel_Calculation_Functions::LCM'),
  304.                 'LEFT'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,            'LEFT',                    'PHPExcel_Calculation_Functions::LEFT'),
  305.                 'LEFTB'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,            'LEFTB',                'PHPExcel_Calculation_Functions::DUMMY'),
  306.                 'LEN'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,            'LEN',                    'strlen'),
  307.                 'LENB'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,            'LENB',                    'PHPExcel_Calculation_Functions::DUMMY'),
  308.                 'LINEST'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'LINEST',                'PHPExcel_Calculation_Functions::DUMMY'),
  309.                 'LN'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'LN',                    'log'),
  310.                 'LOG'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'LOG',                    'log'),
  311.                 'LOG10'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'LOG10',                'log10'),
  312.                 'LOGEST'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'LOGEST',                'PHPExcel_Calculation_Functions::DUMMY'),
  313.                 'LOGINV'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'LOGINV',                'PHPExcel_Calculation_Functions::LOGINV'),
  314.                 'LOGNORMDIST'            => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'LOGNORMDIST',            'PHPExcel_Calculation_Functions::LOGNORMDIST'),
  315.                 'LOOKUP'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE,    'LOOKUP',                'PHPExcel_Calculation_Functions::LOOKUP'),
  316.                 'LOWER'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,            'LOWER',                'strtolower'),
  317.                 'MATCH'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE,    'MATCH',                'PHPExcel_Calculation_Functions::MATCH'),
  318.                 'MAX'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'MAX',                    'PHPExcel_Calculation_Functions::MAX'),
  319.                 'MAXA'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'MAXA',                    'PHPExcel_Calculation_Functions::MAXA'),
  320.                 'MDETERM'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'MDETERM',                'PHPExcel_Calculation_Functions::DUMMY'),
  321.                 'MDURATION'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'MDURATION',            'PHPExcel_Calculation_Functions::DUMMY'),
  322.                 'MEDIAN'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'MEDIAN',                'PHPExcel_Calculation_Functions::MEDIAN'),
  323.                 'MID'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,            'MID',                    'PHPExcel_Calculation_Functions::MID'),
  324.                 'MIDB'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,            'MIDB',                    'PHPExcel_Calculation_Functions::DUMMY'),
  325.                 'MIN'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'MIN',                    'PHPExcel_Calculation_Functions::MIN'),
  326.                 'MINA'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'MINA',                    'PHPExcel_Calculation_Functions::MINA'),
  327.                 'MINUTE'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,            'MINUTE',                'PHPExcel_Calculation_Functions::MINUTEOFHOUR'),
  328.                 'MINVERSE'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'MINVERSE',                'PHPExcel_Calculation_Functions::DUMMY'),
  329.                 'MIRR'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'MIRR',                    'PHPExcel_Calculation_Functions::DUMMY'),
  330.                 'MMULT'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'MMULT',                'PHPExcel_Calculation_Functions::DUMMY'),
  331.                 'MOD'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'MOD',                    'PHPExcel_Calculation_Functions::MOD'),
  332.                 'MODE'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'MODE',                    'PHPExcel_Calculation_Functions::MODE'),
  333.                 'MONTH'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,            'MONTH',                'PHPExcel_Calculation_Functions::MONTHOFYEAR'),
  334.                 'MROUND'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'MROUND',                'PHPExcel_Calculation_Functions::MROUND'),
  335.                 'MULTINOMIAL'            => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'MULTINOMIAL',            'PHPExcel_Calculation_Functions::MULTINOMIAL'),
  336.                 'N'                        => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_INFORMATION,            'N',                    'PHPExcel_Calculation_Functions::DUMMY'),
  337.                 'NA'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_INFORMATION,            'NA',                    'PHPExcel_Calculation_Functions::NA'),
  338.                 'NEGBINOMDIST'            => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'NEGBINOMDIST',            'PHPExcel_Calculation_Functions::NEGBINOMDIST'),
  339.                 'NETWORKDAYS'            => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,            'NETWORKDAYS',            'PHPExcel_Calculation_Functions::NETWORKDAYS'),
  340.                 'NOMINAL'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'NOMINAL',                'PHPExcel_Calculation_Functions::NOMINAL'),
  341.                 'NORMDIST'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'NORMDIST',                'PHPExcel_Calculation_Functions::NORMDIST'),
  342.                 'NORMINV'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'NORMINV',                'PHPExcel_Calculation_Functions::NORMINV'),
  343.                 'NORMSDIST'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'NORMSDIST',            'PHPExcel_Calculation_Functions::NORMSDIST'),
  344.                 'NORMSINV'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'NORMSINV',                'PHPExcel_Calculation_Functions::NORMSINV'),
  345.                 'NOT'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_LOGICAL,                'NOT',                    '!'),
  346.                 'NOW'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,            'NOW',                    'PHPExcel_Calculation_Functions::DATETIMENOW'),
  347.                 'NPER'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'NPER',                    'PHPExcel_Calculation_Functions::NPER'),
  348.                 'NPV'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'NPV',                    'PHPExcel_Calculation_Functions::NPV'),
  349.                 'OCT2BIN'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'OCT2BIN',                'PHPExcel_Calculation_Functions::OCTTOBIN'),
  350.                 'OCT2DEC'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'OCT2DEC',                'PHPExcel_Calculation_Functions::OCTTODEC'),
  351.                 'OCT2HEX'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_ENGINEERING,            'OCT2HEX',                'PHPExcel_Calculation_Functions::OCTTOHEX'),
  352.                 'ODD'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'ODD',                    'PHPExcel_Calculation_Functions::ODD'),
  353.                 'ODDFPRICE'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'ODDFPRICE',            'PHPExcel_Calculation_Functions::DUMMY'),
  354.                 'ODDFYIELD'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'ODDFYIELD',            'PHPExcel_Calculation_Functions::DUMMY'),
  355.                 'ODDLPRICE'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'ODDLPRICE',            'PHPExcel_Calculation_Functions::DUMMY'),
  356.                 'ODDLYIELD'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'ODDLYIELD',            'PHPExcel_Calculation_Functions::DUMMY'),
  357.                 'OFFSET'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE,    'OFFSET',                'PHPExcel_Calculation_Functions::OFFSET'),
  358.                 'OR'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_LOGICAL,                'OR',                    'PHPExcel_Calculation_Functions::LOGICAL_OR'),
  359.                 'PEARSON'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'PEARSON',                'PHPExcel_Calculation_Functions::DUMMY'),
  360.                 'PERCENTILE'            => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'PERCENTILE',            'PHPExcel_Calculation_Functions::PERCENTILE'),
  361.                 'PERCENTRANK'            => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'PERCENTRANK',            'PHPExcel_Calculation_Functions::DUMMY'),
  362.                 'PERMUT'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'PERMUT',                'PHPExcel_Calculation_Functions::PERMUT'),
  363.                 'PHONETIC'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,            'PHONETIC',                'PHPExcel_Calculation_Functions::DUMMY'),
  364.                 'PI'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'PI',                    'pi'),
  365.                 'PMT'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'PMT',                    'PHPExcel_Calculation_Functions::PMT'),
  366.                 'POISSON'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'POISSON',                'PHPExcel_Calculation_Functions::POISSON'),
  367.                 'POWER'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'POWER',                'PHPExcel_Calculation_Functions::POWER'),
  368.                 'PPMT'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'PPMT',                    'PHPExcel_Calculation_Functions::DUMMY'),
  369.                 'PRICE'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'PRICE',                'PHPExcel_Calculation_Functions::DUMMY'),
  370.                 'PRICEDISC'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'PRICEDISC',            'PHPExcel_Calculation_Functions::DUMMY'),
  371.                 'PRICEMAT'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'PRICEMAT',                'PHPExcel_Calculation_Functions::DUMMY'),
  372.                 'PROB'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'PROB',                    'PHPExcel_Calculation_Functions::DUMMY'),
  373.                 'PRODUCT'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'PRODUCT',                'PHPExcel_Calculation_Functions::PRODUCT'),
  374.                 'PROPER'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,            'PROPER',                'ucwords'),
  375.                 'PV'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'PV',                    'PHPExcel_Calculation_Functions::PV'),
  376.                 'QUARTILE'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'QUARTILE',                'PHPExcel_Calculation_Functions::QUARTILE'),
  377.                 'QUOTIENT'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'QUOTIENT',                'PHPExcel_Calculation_Functions::QUOTIENT'),
  378.                 'RADIANS'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'RADIANS',                'deg2rad'),
  379.                 'RAND'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'RAND',                    'PHPExcel_Calculation_Functions::RAND'),
  380.                 'RANDBETWEEN'            => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'RANDBETWEEN',            'PHPExcel_Calculation_Functions::RAND'),
  381.                 'RANK'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'RANK',                    'PHPExcel_Calculation_Functions::DUMMY'),
  382.                 'RATE'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'RATE',                    'PHPExcel_Calculation_Functions::DUMMY'),
  383.                 'RECEIVED'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'RECEIVED',                'PHPExcel_Calculation_Functions::DUMMY'),
  384.                 'REPLACE'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,            'REPLACE',                'PHPExcel_Calculation_Functions::DUMMY'),
  385.                 'REPLACEB'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,            'REPLACEB',                'PHPExcel_Calculation_Functions::DUMMY'),
  386.                 'REPT'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,            'REPT',                    'str_repeat'),
  387.                 'RIGHT'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,            'RIGHT',                'PHPExcel_Calculation_Functions::RIGHT'),
  388.                 'RIGHTB'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,            'RIGHTB',                'PHPExcel_Calculation_Functions::DUMMY'),
  389.                 'ROMAN'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'ROMAN',                'PHPExcel_Calculation_Functions::DUMMY'),
  390.                 'ROUND'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'ROUND',                'round'),
  391.                 'ROUNDDOWN'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'ROUNDDOWN',            'PHPExcel_Calculation_Functions::ROUNDDOWN'),
  392.                 'ROUNDUP'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'ROUNDUP',                'PHPExcel_Calculation_Functions::ROUNDUP'),
  393.                 'ROW'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE,    'ROW',                    'PHPExcel_Calculation_Functions::ROW'),
  394.                 'ROWS'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE,    'ROWS',                    'PHPExcel_Calculation_Functions::DUMMY'),
  395.                 'RSQ'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'RSQ',                    'PHPExcel_Calculation_Functions::DUMMY'),
  396.                 'RTD'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE,    'RTD',                    'PHPExcel_Calculation_Functions::DUMMY'),
  397.                 'SEARCH'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,            'SEARCH',                'PHPExcel_Calculation_Functions::SEARCHINSENSITIVE'),
  398.                 'SEARCHB'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,            'SEARCHB',                'PHPExcel_Calculation_Functions::DUMMY'),
  399.                 'SECOND'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,            'SECOND',                'PHPExcel_Calculation_Functions::SECONDOFMINUTE'),
  400.                 'SERIESSUM'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'SERIESSUM',            'PHPExcel_Calculation_Functions::SERIESSUM'),
  401.                 'SIGN'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'SIGN',                    'PHPExcel_Calculation_Functions::SIGN'),
  402.                 'SIN'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'SIN',                    'sin'),
  403.                 'SINH'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'SINH',                    'sinh'),
  404.                 'SKEW'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'SKEW',                    'PHPExcel_Calculation_Functions::SKEW'),
  405.                 'SLN'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'SLN',                    'PHPExcel_Calculation_Functions::SLN'),
  406.                 'SLOPE'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'SLOPE',                'PHPExcel_Calculation_Functions::DUMMY'),
  407.                 'SMALL'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'SMALL',                'PHPExcel_Calculation_Functions::SMALL'),
  408.                 'SQRT'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'SQRT',                    'sqrt'),
  409.                 'SQRTPI'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'SQRTPI',                'PHPExcel_Calculation_Functions::SQRTPI'),
  410.                 'STANDARDIZE'            => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'STANDARDIZE',            'PHPExcel_Calculation_Functions::STANDARDIZE'),
  411.                 'STDEV'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'STDEV',                'PHPExcel_Calculation_Functions::STDEV'),
  412.                 'STDEVA'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'STDEVA',                'PHPExcel_Calculation_Functions::STDEVA'),
  413.                 'STDEVP'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'STDEVP',                'PHPExcel_Calculation_Functions::STDEVP'),
  414.                 'STDEVPA'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'STDEVPA',                'PHPExcel_Calculation_Functions::STDEVPA'),
  415.                 'STEYX'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'STEYX',                'PHPExcel_Calculation_Functions::DUMMY'),
  416.                 'SUBSTITUTE'            => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,            'SUBSTITUTE',            'PHPExcel_Calculation_Functions::DUMMY'),
  417.                 'SUBTOTAL'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'SUBTOTAL',                'PHPExcel_Calculation_Functions::SUBTOTAL'),
  418.                 'SUM'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'SUM',                    'PHPExcel_Calculation_Functions::SUM'),
  419.                 'SUMIF'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'SUMIF',                'PHPExcel_Calculation_Functions::DUMMY'),
  420.                 'SUMIFS'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'SUMIFS',                'PHPExcel_Calculation_Functions::DUMMY'),
  421.                 'SUMPRODUCT'            => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'SUMPRODUCT',            'PHPExcel_Calculation_Functions::DUMMY'),
  422.                 'SUMSQ'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'SUMSQ',                'PHPExcel_Calculation_Functions::SUMSQ'),
  423.                 'SUMX2MY2'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'SUMX2MY2',                'PHPExcel_Calculation_Functions::DUMMY'),
  424.                 'SUMX2PY2'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'SUMX2PY2',                'PHPExcel_Calculation_Functions::DUMMY'),
  425.                 'SUMXMY2'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'SUMXMY2',                'PHPExcel_Calculation_Functions::DUMMY'),
  426.                 'SYD'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'SYD',                    'PHPExcel_Calculation_Functions::SYD'),
  427.                 'T'                        => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,            'T',                    'PHPExcel_Calculation_Functions::RETURNSTRING'),
  428.                 'TAN'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'TAN',                    'tan'),
  429.                 'TANH'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'TANH',                    'tanh'),
  430.                 'TBILLEQ'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'TBILLEQ',                'PHPExcel_Calculation_Functions::DUMMY'),
  431.                 'TBILLPRICE'            => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'TBILLPRICE',            'PHPExcel_Calculation_Functions::DUMMY'),
  432.                 'TBILLYIELD'            => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'TBILLYIELD',            'PHPExcel_Calculation_Functions::DUMMY'),
  433.                 'TDIST'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'TDIST',                'PHPExcel_Calculation_Functions::TDIST'),
  434.                 'TEXT'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,            'TEXT',                    'PHPExcel_Calculation_Functions::DUMMY'),
  435.                 'TIME'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,            'TIME',                    'PHPExcel_Calculation_Functions::TIME'),
  436.                 'TIMEVALUE'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,            'TIMEVALUE',            'PHPExcel_Calculation_Functions::TIMEVALUE'),
  437.                 'TINV'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'TINV',                    'PHPExcel_Calculation_Functions::TINV'),
  438.                 'TODAY'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,            'TODAY',                'PHPExcel_Calculation_Functions::DATENOW'),
  439.                 'TRANSPOSE'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE,    'TRANSPOSE',            'PHPExcel_Calculation_Functions::DUMMY'),
  440.                 'TREND'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'TREND',                'PHPExcel_Calculation_Functions::DUMMY'),
  441.                 'TRIM'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,            'TRIM',                    'PHPExcel_Calculation_Functions::TRIMSPACES'),
  442.                 'TRIMMEAN'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'TRIMMEAN',                'PHPExcel_Calculation_Functions::TRIMMEAN'),
  443.                 'TRUE'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_LOGICAL,                'TRUE',                    'PHPExcel_Calculation_Functions::LOGICAL_TRUE'),
  444.                 'TRUNC'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG,            'TRUNC',                'PHPExcel_Calculation_Functions::TRUNC'),
  445.                 'TTEST'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'TTEST',                'PHPExcel_Calculation_Functions::DUMMY'),
  446.                 'TYPE'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_INFORMATION,            'TYPE',                    'PHPExcel_Calculation_Functions::DUMMY'),
  447.                 'UPPER'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,            'UPPER',                'strtoupper'),
  448.                 'USDOLLAR'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'USDOLLAR',                'PHPExcel_Calculation_Functions::DUMMY'),
  449.                 'VALUE'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA,            'VALUE',                'PHPExcel_Calculation_Functions::DUMMY'),
  450.                 'VAR'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'VAR',                    'PHPExcel_Calculation_Functions::VARFunc'),
  451.                 'VARA'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'VARA',                    'PHPExcel_Calculation_Functions::VARA'),
  452.                 'VARP'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'VARP',                    'PHPExcel_Calculation_Functions::VARP'),
  453.                 'VARPA'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'VARPA',                'PHPExcel_Calculation_Functions::VARPA'),
  454.                 'VDB'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'VDB',                    'PHPExcel_Calculation_Functions::DUMMY'),
  455.                 'VERSION'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_INFORMATION,            'VERSION',                'PHPExcel_Calculation_Functions::VERSION'),
  456.                 'VLOOKUP'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE,    'VLOOKUP',                'PHPExcel_Calculation_Functions::VLOOKUP'),
  457.                 'WEEKDAY'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,            'WEEKDAY',                'PHPExcel_Calculation_Functions::DAYOFWEEK'),
  458.                 'WEEKNUM'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,            'WEEKNUM',                'PHPExcel_Calculation_Functions::WEEKOFYEAR'),
  459.                 'WEIBULL'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'WEIBULL',                'PHPExcel_Calculation_Functions::WEIBULL'),
  460.                 'WORKDAY'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,            'WORKDAY',                'PHPExcel_Calculation_Functions::WORKDAY'),
  461.                 'XIRR'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'XIRR',                    'PHPExcel_Calculation_Functions::DUMMY'),
  462.                 'XNPV'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'XNPV',                    'PHPExcel_Calculation_Functions::DUMMY'),
  463.                 'YEAR'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,            'YEAR',                    'PHPExcel_Calculation_Functions::YEAR'),
  464.                 'YEARFRAC'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME,            'YEARFRAC',                'PHPExcel_Calculation_Functions::YEARFRAC'),
  465.                 'YIELD'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'YIELD',                'PHPExcel_Calculation_Functions::DUMMY'),
  466.                 'YIELDDISC'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'YIELDDISC',            'PHPExcel_Calculation_Functions::DUMMY'),
  467.                 'YIELDMAT'                => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_FINANCIAL,                'YIELDMAT',                'PHPExcel_Calculation_Functions::DUMMY'),
  468.                 'ZTEST'                    => new PHPExcel_Calculation_Function(PHPExcel_Calculation_Function::CATEGORY_STATISTICAL,            'ZTEST',                'PHPExcel_Calculation_Functions::DUMMY')
  469.             );
  470.         }
  471.     }
  472.  
  473.     /**
  474.      * Is calculation caching enabled?
  475.      *
  476.      * @return boolean 
  477.      */
  478.     public function getCalculationCacheEnabled({
  479.         return $this->_calculationCacheEnabled;
  480.     }
  481.  
  482.     /**
  483.      * Enable/disable calculation cache
  484.      *
  485.      * @param boolean $pValue 
  486.      */
  487.     public function setCalculationCacheEnabled($pValue{
  488.         $this->_calculationCacheEnabled = $pValue;
  489.         $this->clearCalculationCache();
  490.     }
  491.  
  492.     /**
  493.      * Clear calculation cache
  494.      */
  495.     public function clearCalculationCache({
  496.         $this->_calculationCache = array();
  497.     }
  498.  
  499.     /**
  500.      * Get calculation cache expiration time
  501.      *
  502.      * @return float 
  503.      */
  504.     public function getCalculationCacheExpirationTime({
  505.         return $this->_calculationCacheExpirationTime;
  506.     }
  507.  
  508.     /**
  509.      * Set calculation cache expiration time
  510.      *
  511.      * @param float $pValue 
  512.      */
  513.     public function setCalculationCacheExpirationTime($pValue 0.01{
  514.         $this->_calculationCacheExpirationTime = $pValue;
  515.     }
  516.  
  517.     /**
  518.      * Calculate cell value (using formula)
  519.      *
  520.      * @param    PHPExcel_Cell    $pCell    Cell to calculate
  521.      * @return    mixed 
  522.      * @throws    Exception
  523.      */
  524.     public function calculate(PHPExcel_Cell $pCell null{
  525.         // Return value
  526.         $returnValue '';
  527.  
  528.         // Is the value present in calculation cache?
  529.         if ($this->getCalculationCacheEnabled ()) {
  530.             if (isset $this->_calculationCache [$pCell->getParent ()->getTitle ()[$pCell->getCoordinate ())) {
  531.                 if ((time (microtime ()) $this->_calculationCache [$pCell->getParent ()->getTitle ()[$pCell->getCoordinate ()['time'$this->_calculationCacheExpirationTime{
  532.                     return $this->_calculationCache [$pCell->getParent ()->getTitle ()[$pCell->getCoordinate ()['data'];
  533.                 else {
  534.                     unset $this->_calculationCache [$pCell->getParent ()->getTitle ()[$pCell->getCoordinate ());
  535.                 }
  536.             }
  537.         }
  538.  
  539.         // Formula
  540.         $formula $pCell->getValue ();
  541.  
  542.         // Executable formula array
  543.         $executableFormulaArray array );
  544.  
  545.         // Parse formula into a tree of tokens
  546.         $objParser new PHPExcel_Calculation_FormulaParser $formula );
  547.  
  548.         // Loop trough parsed tokens and create an executable formula
  549.         $inFunction false;
  550.         $token null;
  551.         $tokenCount $objParser->getTokenCount();
  552.         for($i 0$i $tokenCount++$i{
  553.             $token $objParser->getToken $i );
  554.             $tokenType $token->getTokenType();
  555.             $tokenSubType $token->getTokenSubType();
  556.             $tokenValue $token->getValue();
  557.             // Is it a cell reference? Not in a function?
  558.             if (($tokenType == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND&& ($tokenSubType == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_RANGE&& (strpos ($tokenValue':' === false&& ($inFunction)) {
  559.                 // Adjust reference
  560.                 $reference str_replace '$'''$tokenValue);
  561.  
  562.                 // Get value
  563.                 $calculatedValue null;
  564.                 if ($pCell->getParent ()->getCell $reference )->getValue (instanceof PHPExcel_RichText{
  565.                     $calculatedValue $pCell->getParent ()->getCell $reference )->getValue ()->getPlainText ();
  566.                 else {
  567.                     $calculatedValue $pCell->getParent ()->getCell $reference )->getCalculatedValue ();
  568.                 }
  569.                 if (is_string $calculatedValue )) {
  570.                     $calculatedValue '"' $calculatedValue '"';
  571.                 }
  572.  
  573.                 // Add to executable formula array
  574.                 array_push $executableFormulaArray$calculatedValue );
  575.  
  576.                 continue;
  577.             }
  578.  
  579.             // Is it a cell reference? In a function?
  580.             if (($tokenType == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND&& ($tokenSubType == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_RANGE&& ($inFunction)) {
  581.                 // Adjust reference
  582.                 $reference str_replace '$'''$tokenValue );
  583.  
  584.                 // Add to executable formula array
  585.                 array_push $executableFormulaArray'$this->extractRange("' $reference '", $pCell->getParent())' );
  586.  
  587.                 continue;
  588.             }
  589.  
  590.             // Is it a concatenation operator?
  591.             if (($tokenType == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORINFIX&& ($tokenSubType == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_CONCATENATION)) {
  592.                 // Add to executable formula array
  593.                 array_push $executableFormulaArray'.' );
  594.  
  595.                 continue;
  596.             }
  597.  
  598.             // Is it a logical operator?
  599.             if (($tokenType == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORINFIX&& ($tokenSubType == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_LOGICAL)) {
  600.                 // Temporary variable
  601.                 $tmp '';
  602.                 switch ($tokenValue{
  603.                     case '=' :
  604.                         $tmp '==';
  605.                     break;
  606.                     case '<>' :
  607.                         $tmp '!=';
  608.                     break;
  609.                     default :
  610.                         $tmp $tokenValue;
  611.                 }
  612.  
  613.                 // Add to executable formula array
  614.                 array_push $executableFormulaArray$tmp );
  615.  
  616.                 continue;
  617.             }
  618.  
  619.             // Is it a subexpression?
  620.             if ($tokenType == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_SUBEXPRESSION{
  621.                 // Temporary variable
  622.                 $tmp '';
  623.                 switch ($tokenSubType{
  624.                     case PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_START :
  625.                         $tmp '(';
  626.                     break;
  627.                     case PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_STOP :
  628.                         $tmp ')';
  629.                     break;
  630.                 }
  631.  
  632.                 // Add to executable formula array
  633.                 array_push $executableFormulaArray$tmp );
  634.  
  635.                 continue;
  636.             }
  637.  
  638.             // Is it a function?
  639.             if ($tokenType == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_FUNCTION{
  640.                 // Temporary variable
  641.                 $tmp '';
  642.  
  643.                 // Check the function type
  644.                 if ($tokenValue == 'ARRAY' || $tokenValue == 'ARRAYROW'{
  645.                     // An array or an array row...
  646.                     $tmp 'array(';
  647.                 else {
  648.                     // A regular function call...
  649.                     switch ($tokenSubType{
  650.                         case PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_START :
  651.                             // Check if the function call is allowed...
  652.                             if (isset $this->_functionMappings [strtoupper ($tokenValue))) {
  653.                                 return '#NAME?';
  654.                             }
  655.  
  656.                             // Map the function call
  657.                             $tmp $this->_functionMappings [strtoupper ($tokenValue)]->getPHPExcelName ('(';
  658.                             $inFunction true;
  659.                         break;
  660.                         case PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_STOP :
  661.                             $tmp ')';
  662.                         break;
  663.                     }
  664.                 }
  665.  
  666.                 // Add to executable formula array
  667.                 array_push $executableFormulaArray$tmp );
  668.  
  669.                 continue;
  670.             }
  671.  
  672.             // Is it text?
  673.             if (($tokenType == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND&& ($tokenSubType == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_TEXT)) {
  674.                 // Temporary variable
  675.                 $tmp $tokenValue;
  676.                 $tmp str_replace('"''\"'$tmp);
  677.  
  678.                 // Add to executable formula array
  679.                 array_push $executableFormulaArray'"' $tmp '"' );
  680.  
  681.                 continue;
  682.             }
  683.  
  684.             // Is it a number?
  685.             if (($tokenType == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND&& ($tokenSubType == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_NUMBER)) {
  686.                 // Add to executable formula array
  687.                 array_push $executableFormulaArray$tokenValue );
  688.  
  689.                 continue;
  690.             }
  691.  
  692.             // Is it an error? Add it as text...
  693.             if (($tokenType == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND&& ($tokenSubType == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_ERROR)) {
  694.                 // Add to executable formula array
  695.                 array_push $executableFormulaArray'"' $tokenValue '"' );
  696.  
  697.                 continue;
  698.             }
  699.  
  700.             // Is it something else?
  701.             array_push $executableFormulaArray$tokenValue );
  702.         }
  703.  
  704.         $fromArray    array('(,',        ',,',        ',)',        '$this');
  705.         $toArray    array('(null,',    ',null,',    ',null)',    '$pThat');
  706.         // Evaluate formula
  707.         try {
  708.             $formula implode ' '$executableFormulaArray );
  709.             $formula str_replace $fromArray$toArray$formula );
  710.  
  711.             /*
  712.              * The following code block can cause an error like:
  713.              *      Fatal error: Unsupported operand types in ...: runtime-created function on line 1
  714.              *
  715.              * This is due to the fact that a FATAL error is an E_ERROR,
  716.              * and it can not be caught using try/catch or any other
  717.              * Exception/error handling feature in PHP.
  718.              *
  719.              * A feature request seems to be made once, but it has been
  720.              * closed without any deliverables:
  721.              *      http://bugs.php.net/bug.php?id=40014
  722.              */
  723.             $temporaryCalculationFunction @create_function '$pThat, $pCell'"return $formula;);
  724.             if ($temporaryCalculationFunction === FALSE{
  725.                 $returnValue '#N/A';
  726.             else {
  727.                 $returnValue @call_user_func_array $temporaryCalculationFunctionarray (&$this&$pCell ) );
  728.             }
  729.         catch Exception $ex {
  730.             $returnValue '#N/A';
  731.         }
  732.  
  733.         // Save to calculation cache
  734.         if ($this->getCalculationCacheEnabled ()) {
  735.             $this->_calculationCache [$pCell->getParent ()->getTitle ()[$pCell->getCoordinate ()['time'(time (microtime ());
  736.             $this->_calculationCache [$pCell->getParent ()->getTitle ()[$pCell->getCoordinate ()['data'$returnValue;
  737.         }
  738.  
  739.         // Return result
  740.         return $returnValue;
  741.     }
  742.  
  743.     /**
  744.      * __clone implementation. Cloning should not be allowed in a Singleton!
  745.      *
  746.      * @throws    Exception
  747.      */
  748.     public final function __clone({
  749.         throw new Exception "Cloning a Singleton is not allowed!" );
  750.     }
  751.  
  752.     /**
  753.      * Extract range values
  754.      *
  755.      * @param    string                $pRange        String based range representation
  756.      * @param    PHPExcel_Worksheet    $pSheet        Worksheet
  757.      * @return  mixed                Array of values in range if range contains more than one element. Otherwise, a single value is returned.
  758.      * @throws    Exception
  759.      */
  760.     public function extractRange($pRange 'A1'PHPExcel_Worksheet $pSheet null{
  761.         // Return value
  762.         $returnValue array );
  763.  
  764.         // Worksheet given?
  765.         if (is_null $pSheet )) {
  766.             // Worksheet reference?
  767.             if (strpos $pRange'!' !== false{
  768.                 $worksheetReference PHPExcel_Worksheet::extractSheetTitle $pRangetrue );
  769.                 $pSheet $pSheet->getParent ()->getSheetByName $worksheetReference [0);
  770.                 $pRange $worksheetReference [1];
  771.             }
  772.  
  773.             // Named range?
  774.             $namedRange PHPExcel_NamedRange::resolveRange $pRange$pSheet );
  775.             if (is_null $namedRange )) {
  776.                 $pRange $namedRange->getRange ();
  777.                 if ($pSheet->getHashCode (!= $namedRange->getWorksheet ()->getHashCode ()) {
  778.                     if ($namedRange->getLocalOnly ()) {
  779.                         $pSheet $namedRange->getWorksheet ();
  780.                     else {
  781.                         return '';
  782.                     }
  783.                 }
  784.             }
  785.  
  786.             // Extract range
  787.             $aReferences PHPExcel_Cell::extractAllCellReferencesInRange $pRange );
  788.  
  789.             // Extract cell data
  790.             foreach $aReferences as $reference {
  791.                 // Extract range
  792.                 $currentCol 0;
  793.                 $currentRow 0;
  794.                 list $currentCol$currentRow PHPExcel_Cell::coordinateFromString $reference );
  795.  
  796.                 $returnValue [$currentCol[$currentRow$pSheet->getCell $reference )->getCalculatedValue ();
  797.             }
  798.         }
  799.  
  800.         // Return
  801. //        if (strpos ( $pRange, ':' ) === false) {
  802. //            while ( is_array ( $returnValue ) ) {
  803. //                $returnValue = array_pop ( $returnValue );
  804. //            }
  805. //        }
  806.         return $returnValue;
  807.     }
  808.  
  809.     /**
  810.      * Is a specific function implemented?
  811.      *
  812.      * @param    string    $pFunction    Function
  813.      * @return    boolean 
  814.      */
  815.     public function isImplemented($pFunction ''{
  816.         $pFunction strtoupper $pFunction );
  817.         if (isset $this->_functionMappings [$pFunction)) {
  818.             return $this->_functionMappings [$pFunction]->getPHPExcelName (== 'PHPExcel_Calculation_Functions::DUMMY';
  819.         else {
  820.             return false;
  821.         }
  822.     }
  823.  
  824.     /**
  825.      * Get a list of implemented functions
  826.      *
  827.      * @return    array 
  828.      */
  829.     public function listFunctions({
  830.         // Return value
  831.         $returnValue array );
  832.  
  833.         // Loop functions
  834.         foreach $this->_functionMappings as $key => $value {
  835.             if ($value->getPHPExcelName (!= 'PHPExcel_Calculation_Functions::DUMMY'{
  836.                 $returnValue [$value;
  837.             }
  838.         }
  839.  
  840.         // Return
  841.         return $returnValue;
  842.     }
  843.  
  844.     /**
  845.      * Get a list of implemented Excel function names
  846.      *
  847.      * @return    array 
  848.      */
  849.     public function listFunctionNames({
  850.         // Return value
  851.         $returnValue array );
  852.  
  853.         // Function names
  854.         $aFunctions $this->listFunctions ();
  855.  
  856.         // Loop functions
  857.         foreach $aFunctions as $key => $value {
  858.             $returnValue [$value->getExcelName ();
  859.         }
  860.  
  861.         // Return
  862.         return $returnValue;
  863.     }
  864. }

Documentation generated on Mon, 27 Oct 2008 08:37:36 +0100 by phpDocumentor 1.4.1