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

Source for file Calculation.php

Documentation is available at Calculation.php

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

Documentation generated on Wed, 22 Apr 2009 08:56:27 +0200 by phpDocumentor 1.4.1