- Fix ISFORMULA() function to work with a cell reference to another worksheet
 - Added calculation engine support for the new functions that were added in MS Excel 2013 and MS Excel 2016
   - Text Functions
     - CONCAT()     Synonym for CONCATENATE()
     - NUMBERVALUE()  Converts text to a number, in a locale-independent way
     - UNICHAR()    Synonym for CHAR() in PHPSpreadsheet, which has always used UTF-8 internally
     - UNIORD()     Synonym for ORD() in PHPSpreadsheet, which has always used UTF-8 internally
     - TEXTJOIN()   Joins together two or more text strings, separated by a delimiter
   - Logical Functions
     - XOR()        Returns a logical Exclusive Or of all arguments
   - Date/Time Functions
     - ISOWEEKNUM()  Returns the ISO 8601 week number of the year for a given date
   - Lookup and Reference Functions
     - FORMULATEXT()  Returns a formula as a string
   - Engineering Functions
     - ERF.PRECISE()   Returns the error function integrated between 0 and a supplied limit
     - ERFC.PRECISE()  Synonym for ERFC
   - Math and Trig Functions
     - SEC()          Returns the secant of an angle
     - SECH()         Returns the hyperbolic secant of an angle
     - CSC()          Returns the cosecant of an angle
     - CSCH()         Returns the hyperbolic cosecant of an angle
     - COT()          Returns the cotangent of an angle
     - COTH()         Returns the hyperbolic cotangent of an angle
     - ACOT()         Returns the cotangent of an angle
     - ACOTH()        Returns the hyperbolic cotangent of an angle
  - Financial Functions
    - PDURATION()    Calculates the number of periods required for an investment to reach a specified value
    - RRI()          Calculates the interest rate required for an investment to grow to a specified future value
		
	
			
		
			
				
	
	
		
			125 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			125 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
return [
 | 
						|
    // No arguments
 | 
						|
    [
 | 
						|
        '#VALUE!',
 | 
						|
    ],
 | 
						|
    // NULL
 | 
						|
    [
 | 
						|
        false,
 | 
						|
        null,
 | 
						|
    ],
 | 
						|
    // Boolean TRUE and NULL
 | 
						|
    [
 | 
						|
        true,
 | 
						|
        true,
 | 
						|
        null,
 | 
						|
    ],
 | 
						|
    // Boolean FALSE and NULL
 | 
						|
    [
 | 
						|
        false,
 | 
						|
        false,
 | 
						|
        null,
 | 
						|
    ],
 | 
						|
    // Both TRUE Booleans
 | 
						|
    [
 | 
						|
        true,
 | 
						|
        true,
 | 
						|
        true,
 | 
						|
    ],
 | 
						|
    // Mixed Booleans
 | 
						|
    [
 | 
						|
        false,
 | 
						|
        true,
 | 
						|
        false,
 | 
						|
    ],
 | 
						|
    // Mixed Booleans
 | 
						|
    [
 | 
						|
        false,
 | 
						|
        false,
 | 
						|
        true,
 | 
						|
    ],
 | 
						|
    // Both FALSE Booleans
 | 
						|
    [
 | 
						|
        false,
 | 
						|
        false,
 | 
						|
        false,
 | 
						|
    ],
 | 
						|
    // Multiple Mixed Booleans
 | 
						|
    [
 | 
						|
        false,
 | 
						|
        true,
 | 
						|
        true,
 | 
						|
        false,
 | 
						|
    ],
 | 
						|
    // Multiple TRUE Booleans
 | 
						|
    [
 | 
						|
        true,
 | 
						|
        true,
 | 
						|
        true,
 | 
						|
        true,
 | 
						|
    ],
 | 
						|
    // Multiple FALSE Booleans
 | 
						|
    [
 | 
						|
        false,
 | 
						|
        false,
 | 
						|
        false,
 | 
						|
        false,
 | 
						|
        false,
 | 
						|
    ],
 | 
						|
    [
 | 
						|
        true,
 | 
						|
        -1,
 | 
						|
        -2,
 | 
						|
    ],
 | 
						|
    [
 | 
						|
        false,
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
    ],
 | 
						|
    [
 | 
						|
        false,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
    ],
 | 
						|
    [
 | 
						|
        true,
 | 
						|
        1,
 | 
						|
        1,
 | 
						|
    ],
 | 
						|
    [
 | 
						|
        '#VALUE!',
 | 
						|
        '1',
 | 
						|
        1,
 | 
						|
    ],
 | 
						|
    // 'TRUE' String
 | 
						|
    [
 | 
						|
        true,
 | 
						|
        'TRUE',
 | 
						|
        1,
 | 
						|
    ],
 | 
						|
    // 'FALSE' String
 | 
						|
    [
 | 
						|
        false,
 | 
						|
        'FALSE',
 | 
						|
        true,
 | 
						|
    ],
 | 
						|
    // Non-numeric String
 | 
						|
    [
 | 
						|
        '#VALUE!',
 | 
						|
        'ABCD',
 | 
						|
        1,
 | 
						|
    ],
 | 
						|
    [
 | 
						|
        true,
 | 
						|
        -2,
 | 
						|
        1,
 | 
						|
    ],
 | 
						|
    [
 | 
						|
        false,
 | 
						|
        -2,
 | 
						|
        0,
 | 
						|
    ],
 | 
						|
];
 |