Merge branch 'develop'
This commit is contained in:
		
						commit
						5e49a87746
					
				@ -23,6 +23,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
 | 
			
		||||
- Fix to getCell() method when cell reference includes a worksheet reference - @MarkBaker
 | 
			
		||||
- Ignore inlineStr type if formula element exists - @ncrypthic [#570](https://github.com/PHPOffice/PHPExcel/issues/570)
 | 
			
		||||
- Excel 2007 Reader freezes because of conditional formatting - @rentalhost [#575](https://github.com/PHPOffice/PHPExcel/issues/575)
 | 
			
		||||
- Readers will now parse files containing worksheet titles over 31 characters [#176](https://github.com/PHPOffice/PhpSpreadsheet/pull/176)
 | 
			
		||||
 | 
			
		||||
### General
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -6,7 +6,6 @@ error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -20,7 +19,6 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
        <h1>DAVERAGE</h1>
 | 
			
		||||
        <h2>Returns the average of selected database entries.</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        require_once __DIR__ . '/../../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
        // Create new PhpSpreadsheet object
 | 
			
		||||
@ -75,7 +73,6 @@ var_dump($criteriaData);
 | 
			
		||||
 | 
			
		||||
        echo $worksheet->getCell('A13')->getValue() . '<br />';
 | 
			
		||||
        echo 'DAVERAGE() Result is ' . $worksheet->getCell('B13')->getCalculatedValue();
 | 
			
		||||
 | 
			
		||||
        ?>
 | 
			
		||||
    <body>
 | 
			
		||||
</html>
 | 
			
		||||
@ -6,7 +6,6 @@ error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -20,7 +19,6 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
        <h1>DCOUNT</h1>
 | 
			
		||||
        <h2>Counts the cells that contain numbers in a database.</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        require_once __DIR__ . '/../../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
        // Create new PhpSpreadsheet object
 | 
			
		||||
@ -75,7 +73,6 @@ var_dump($criteriaData);
 | 
			
		||||
 | 
			
		||||
        echo $worksheet->getCell('A13')->getValue() . '<br />';
 | 
			
		||||
        echo 'DCOUNT() Result is ' . $worksheet->getCell('B13')->getCalculatedValue();
 | 
			
		||||
 | 
			
		||||
        ?>
 | 
			
		||||
    <body>
 | 
			
		||||
</html>
 | 
			
		||||
@ -6,7 +6,6 @@ error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -20,7 +19,6 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
        <h1>DGET</h1>
 | 
			
		||||
        <h2>Extracts a single value from a column of a list or database that matches conditions that you specify.</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        require_once __DIR__ . '/../../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
        // Create new PhpSpreadsheet object
 | 
			
		||||
@ -71,7 +69,6 @@ var_dump($criteriaData);
 | 
			
		||||
 | 
			
		||||
        echo $worksheet->getCell('A13')->getValue() . '<br />';
 | 
			
		||||
        echo 'DMAX() Result is ' . $worksheet->getCell('B13')->getCalculatedValue();
 | 
			
		||||
 | 
			
		||||
        ?>
 | 
			
		||||
    <body>
 | 
			
		||||
</html>
 | 
			
		||||
@ -6,7 +6,6 @@ error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -20,7 +19,6 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
        <h1>DMAX</h1>
 | 
			
		||||
        <h2>Returns the maximum value from selected database entries.</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        require_once __DIR__ . '/../../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
        // Create new PhpSpreadsheet object
 | 
			
		||||
@ -74,7 +72,6 @@ var_dump($criteriaData);
 | 
			
		||||
 | 
			
		||||
        echo $worksheet->getCell('A13')->getValue() . '<br />';
 | 
			
		||||
        echo 'DMAX() Result is ' . $worksheet->getCell('B13')->getCalculatedValue();
 | 
			
		||||
 | 
			
		||||
        ?>
 | 
			
		||||
    <body>
 | 
			
		||||
</html>
 | 
			
		||||
@ -6,7 +6,6 @@ error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -20,7 +19,6 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
        <h1>DMIN</h1>
 | 
			
		||||
        <h2>Returns the minimum value from selected database entries.</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        require_once __DIR__ . '/../../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
        // Create new PhpSpreadsheet object
 | 
			
		||||
@ -74,7 +72,6 @@ var_dump($criteriaData);
 | 
			
		||||
 | 
			
		||||
        echo $worksheet->getCell('A13')->getValue() . '<br />';
 | 
			
		||||
        echo 'DMIN() Result is ' . $worksheet->getCell('B13')->getCalculatedValue();
 | 
			
		||||
 | 
			
		||||
        ?>
 | 
			
		||||
    <body>
 | 
			
		||||
</html>
 | 
			
		||||
@ -6,7 +6,6 @@ error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -20,7 +19,6 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
        <h1>DPRODUCT</h1>
 | 
			
		||||
        <h2>Multiplies the values in a column of a list or database that match conditions that you specify.</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        require_once __DIR__ . '/../../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
        // Create new PhpSpreadsheet object
 | 
			
		||||
@ -71,7 +69,6 @@ var_dump($criteriaData);
 | 
			
		||||
 | 
			
		||||
        echo $worksheet->getCell('A13')->getValue() . '<br />';
 | 
			
		||||
        echo 'DMAX() Result is ' . $worksheet->getCell('B13')->getCalculatedValue();
 | 
			
		||||
 | 
			
		||||
        ?>
 | 
			
		||||
    <body>
 | 
			
		||||
</html>
 | 
			
		||||
@ -6,7 +6,6 @@ error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -20,7 +19,6 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
        <h1>DSTDEV</h1>
 | 
			
		||||
        <h2>Estimates the standard deviation based on a sample of selected database entries.</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        require_once __DIR__ . '/../../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
        // Create new PhpSpreadsheet object
 | 
			
		||||
@ -75,7 +73,6 @@ var_dump($criteriaData);
 | 
			
		||||
 | 
			
		||||
        echo $worksheet->getCell('A13')->getValue() . '<br />';
 | 
			
		||||
        echo 'DSTDEV() Result is ' . $worksheet->getCell('B13')->getCalculatedValue();
 | 
			
		||||
 | 
			
		||||
        ?>
 | 
			
		||||
    <body>
 | 
			
		||||
</html>
 | 
			
		||||
@ -6,7 +6,6 @@ error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -20,7 +19,6 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
        <h1>DSTDEVP</h1>
 | 
			
		||||
        <h2>Calculates the standard deviation based on the entire population of selected database entries.</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        require_once __DIR__ . '/../../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
        // Create new PhpSpreadsheet object
 | 
			
		||||
@ -75,7 +73,6 @@ var_dump($criteriaData);
 | 
			
		||||
 | 
			
		||||
        echo $worksheet->getCell('A13')->getValue() . '<br />';
 | 
			
		||||
        echo 'DSTDEVP() Result is ' . $worksheet->getCell('B13')->getCalculatedValue();
 | 
			
		||||
 | 
			
		||||
        ?>
 | 
			
		||||
    <body>
 | 
			
		||||
</html>
 | 
			
		||||
@ -6,7 +6,6 @@ error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -20,7 +19,6 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
        <h1>DVAR</h1>
 | 
			
		||||
        <h2>Estimates variance based on a sample from selected database entries.</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        require_once __DIR__ . '/../../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
        // Create new PhpSpreadsheet object
 | 
			
		||||
@ -75,7 +73,6 @@ var_dump($criteriaData);
 | 
			
		||||
 | 
			
		||||
        echo $worksheet->getCell('A13')->getValue() . '<br />';
 | 
			
		||||
        echo 'DVAR() Result is ' . $worksheet->getCell('B13')->getCalculatedValue();
 | 
			
		||||
 | 
			
		||||
        ?>
 | 
			
		||||
    <body>
 | 
			
		||||
</html>
 | 
			
		||||
@ -6,7 +6,6 @@ error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -20,7 +19,6 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
        <h1>DVARP</h1>
 | 
			
		||||
        <h2>Calculates variance based on the entire population of selected database entries,</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        require_once __DIR__ . '/../../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
        // Create new PhpSpreadsheet object
 | 
			
		||||
@ -75,7 +73,6 @@ var_dump($criteriaData);
 | 
			
		||||
 | 
			
		||||
        echo $worksheet->getCell('A13')->getValue() . '<br />';
 | 
			
		||||
        echo 'DVARP() Result is ' . $worksheet->getCell('B13')->getCalculatedValue();
 | 
			
		||||
 | 
			
		||||
        ?>
 | 
			
		||||
    <body>
 | 
			
		||||
</html>
 | 
			
		||||
@ -6,7 +6,6 @@ error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -20,7 +19,6 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
        <h1>DATE</h1>
 | 
			
		||||
        <h2>Returns the serial number of a particular date.</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        require_once __DIR__ . '/../../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
        // Create new PhpSpreadsheet object
 | 
			
		||||
 | 
			
		||||
@ -6,7 +6,6 @@ error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -20,7 +19,6 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
        <h1>DATEVALUE</h1>
 | 
			
		||||
        <h2>Converts a date in the form of text to a serial number.</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        require_once __DIR__ . '/../../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
        // Create new PhpSpreadsheet object
 | 
			
		||||
 | 
			
		||||
@ -6,7 +6,6 @@ error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -20,7 +19,6 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
        <h1>TIME</h1>
 | 
			
		||||
        <h2>Returns the serial number of a particular time.</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        require_once __DIR__ . '/../../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
        // Create new PhpSpreadsheet object
 | 
			
		||||
 | 
			
		||||
@ -6,7 +6,6 @@ error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -20,7 +19,6 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
        <h1>TIMEVALUE</h1>
 | 
			
		||||
        <h2>Converts a time in the form of text to a serial number.</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        require_once __DIR__ . '/../../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
        // Create new PhpSpreadsheet object
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,8 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -16,7 +14,6 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
    <body>
 | 
			
		||||
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        echo '<h1>PhpSpreadsheet Calculation Function Examples</h1>';
 | 
			
		||||
 | 
			
		||||
        $exampleTypeList = glob('./*', GLOB_ONLYDIR);
 | 
			
		||||
@ -43,7 +40,6 @@ foreach ($exampleTypeList as $exampleType) {
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        ?>
 | 
			
		||||
    <body>
 | 
			
		||||
</html>
 | 
			
		||||
@ -6,7 +6,6 @@ error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -20,7 +19,6 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
        <h1>PhpSpreadsheet Reader Example #01</h1>
 | 
			
		||||
        <h2>Simple File Reader using IOFactory::load()</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        require_once __DIR__ . '/../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
        $inputFileName = './sampleData/example1.xls';
 | 
			
		||||
@ -31,7 +29,6 @@ echo '<hr />';
 | 
			
		||||
 | 
			
		||||
        $sheetData = $spreadsheet->getActiveSheet()->toArray(null, true, true, true);
 | 
			
		||||
        var_dump($sheetData);
 | 
			
		||||
 | 
			
		||||
        ?>
 | 
			
		||||
    <body>
 | 
			
		||||
</html>
 | 
			
		||||
@ -8,7 +8,6 @@ set_time_limit(0);
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
require_once __DIR__ . '/../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -22,24 +21,16 @@ require_once __DIR__ . '/../../../src/Bootstrap.php';
 | 
			
		||||
        <h1>PhpSpreadsheet Reader Example #02</h1>
 | 
			
		||||
        <h2>Simple File Reader using a Specified Reader</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        $inputFileName = './sampleData/example1.xls';
 | 
			
		||||
 | 
			
		||||
        echo 'Loading file ', pathinfo($inputFileName, PATHINFO_BASENAME), ' using \PhpOffice\PhpSpreadsheet\Reader\Xls<br />';
 | 
			
		||||
        $reader = new Xls();
 | 
			
		||||
//	$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
 | 
			
		||||
//	$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xml();
 | 
			
		||||
//	$reader = new \PhpOffice\PhpSpreadsheet\Reader\Ods();
 | 
			
		||||
//	$reader = new \PhpOffice\PhpSpreadsheet\Reader\Slk();
 | 
			
		||||
//	$reader = new \PhpOffice\PhpSpreadsheet\Reader\Gnumeric();
 | 
			
		||||
//	$reader = new \PhpOffice\PhpSpreadsheet\Reader\Csv();
 | 
			
		||||
        $spreadsheet = $reader->load($inputFileName);
 | 
			
		||||
 | 
			
		||||
        echo '<hr />';
 | 
			
		||||
 | 
			
		||||
        $sheetData = $spreadsheet->getActiveSheet()->toArray(null, true, true, true);
 | 
			
		||||
        var_dump($sheetData);
 | 
			
		||||
 | 
			
		||||
        ?>
 | 
			
		||||
    <body>
 | 
			
		||||
</html>
 | 
			
		||||
@ -6,7 +6,6 @@ error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -20,16 +19,9 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
        <h1>PhpSpreadsheet Reader Example #03</h1>
 | 
			
		||||
        <h2>Simple File Reader using the IOFactory to Return a Reader</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        require_once __DIR__ . '/../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
        $inputFileType = 'Xls';
 | 
			
		||||
//	$inputFileType = 'Xlsx';
 | 
			
		||||
//	$inputFileType = 'Xml';
 | 
			
		||||
//	$inputFileType = 'Ods';
 | 
			
		||||
//	$inputFileType = 'Slk';
 | 
			
		||||
//	$inputFileType = 'Gnumeric';
 | 
			
		||||
//	$inputFileType = 'Csv';
 | 
			
		||||
        $inputFileName = './sampleData/example1.xls';
 | 
			
		||||
 | 
			
		||||
        echo 'Loading file ', pathinfo($inputFileName, PATHINFO_BASENAME), ' using IOFactory with a defined reader type of ', $inputFileType, '<br />';
 | 
			
		||||
@ -40,7 +32,6 @@ echo '<hr />';
 | 
			
		||||
 | 
			
		||||
        $sheetData = $spreadsheet->getActiveSheet()->toArray(null, true, true, true);
 | 
			
		||||
        var_dump($sheetData);
 | 
			
		||||
 | 
			
		||||
        ?>
 | 
			
		||||
    <body>
 | 
			
		||||
</html>
 | 
			
		||||
@ -6,7 +6,6 @@ error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -20,7 +19,6 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
        <h1>PhpSpreadsheet Reader Example #04</h1>
 | 
			
		||||
        <h2>Simple File Reader using the IOFactory to Identify a Reader to Use</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        require_once __DIR__ . '/../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
        $inputFileName = './sampleData/example1.xls';
 | 
			
		||||
@ -36,7 +34,6 @@ echo '<hr />';
 | 
			
		||||
 | 
			
		||||
        $sheetData = $spreadsheet->getActiveSheet()->toArray(null, true, true, true);
 | 
			
		||||
        var_dump($sheetData);
 | 
			
		||||
 | 
			
		||||
        ?>
 | 
			
		||||
    <body>
 | 
			
		||||
</html>
 | 
			
		||||
@ -6,7 +6,6 @@ error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -20,14 +19,9 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
        <h1>PhpSpreadsheet Reader Example #05</h1>
 | 
			
		||||
        <h2>Simple File Reader using the "Read Data Only" Option</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        require_once __DIR__ . '/../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
        $inputFileType = 'Xls';
 | 
			
		||||
//	$inputFileType = 'Xlsx';
 | 
			
		||||
//	$inputFileType = 'Xml';
 | 
			
		||||
//	$inputFileType = 'Ods';
 | 
			
		||||
//	$inputFileType = 'Gnumeric';
 | 
			
		||||
        $inputFileName = './sampleData/example1.xls';
 | 
			
		||||
 | 
			
		||||
        echo 'Loading file ', pathinfo($inputFileName, PATHINFO_BASENAME), ' using IOFactory with a defined reader type of ', $inputFileType, '<br />';
 | 
			
		||||
@ -40,7 +34,6 @@ echo '<hr />';
 | 
			
		||||
 | 
			
		||||
        $sheetData = $spreadsheet->getActiveSheet()->toArray(null, true, true, true);
 | 
			
		||||
        var_dump($sheetData);
 | 
			
		||||
 | 
			
		||||
        ?>
 | 
			
		||||
    <body>
 | 
			
		||||
</html>
 | 
			
		||||
@ -6,7 +6,6 @@ error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -20,14 +19,9 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
        <h1>PhpSpreadsheet Reader Example #06</h1>
 | 
			
		||||
        <h2>Simple File Reader Loading All WorkSheets</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        require_once __DIR__ . '/../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
        $inputFileType = 'Xls';
 | 
			
		||||
//	$inputFileType = 'Xlsx';
 | 
			
		||||
//	$inputFileType = 'Xml';
 | 
			
		||||
//	$inputFileType = 'Ods';
 | 
			
		||||
//	$inputFileType = 'Gnumeric';
 | 
			
		||||
        $inputFileName = './sampleData/example1.xls';
 | 
			
		||||
 | 
			
		||||
        echo 'Loading file ', pathinfo($inputFileName, PATHINFO_BASENAME), ' using IOFactory with a defined reader type of ', $inputFileType, '<br />';
 | 
			
		||||
@ -43,7 +37,6 @@ $loadedSheetNames = $spreadsheet->getSheetNames();
 | 
			
		||||
        foreach ($loadedSheetNames as $sheetIndex => $loadedSheetName) {
 | 
			
		||||
            echo $sheetIndex, ' -> ', $loadedSheetName, '<br />';
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        ?>
 | 
			
		||||
    <body>
 | 
			
		||||
</html>
 | 
			
		||||
@ -6,7 +6,6 @@ error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -20,14 +19,9 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
        <h1>PhpSpreadsheet Reader Example #07</h1>
 | 
			
		||||
        <h2>Simple File Reader Loading a Single Named WorkSheet</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        require_once __DIR__ . '/../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
        $inputFileType = 'Xls';
 | 
			
		||||
//	$inputFileType = 'Xlsx';
 | 
			
		||||
//	$inputFileType = 'Xml';
 | 
			
		||||
//	$inputFileType = 'Ods';
 | 
			
		||||
//	$inputFileType = 'Gnumeric';
 | 
			
		||||
        $inputFileName = './sampleData/example1.xls';
 | 
			
		||||
        $sheetname = 'Data Sheet #2';
 | 
			
		||||
 | 
			
		||||
@ -44,7 +38,6 @@ $loadedSheetNames = $spreadsheet->getSheetNames();
 | 
			
		||||
        foreach ($loadedSheetNames as $sheetIndex => $loadedSheetName) {
 | 
			
		||||
            echo $sheetIndex, ' -> ', $loadedSheetName, '<br />';
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        ?>
 | 
			
		||||
    <body>
 | 
			
		||||
</html>
 | 
			
		||||
@ -6,7 +6,6 @@ error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -20,14 +19,9 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
        <h1>PhpSpreadsheet Reader Example #08</h1>
 | 
			
		||||
        <h2>Simple File Reader Loading Several Named WorkSheets</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        require_once __DIR__ . '/../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
        $inputFileType = 'Xls';
 | 
			
		||||
//	$inputFileType = 'Xlsx';
 | 
			
		||||
//	$inputFileType = 'Xml';
 | 
			
		||||
//	$inputFileType = 'Ods';
 | 
			
		||||
//	$inputFileType = 'Gnumeric';
 | 
			
		||||
        $inputFileName = './sampleData/example1.xls';
 | 
			
		||||
        $sheetnames = ['Data Sheet #1', 'Data Sheet #3'];
 | 
			
		||||
 | 
			
		||||
@ -44,7 +38,6 @@ $loadedSheetNames = $spreadsheet->getSheetNames();
 | 
			
		||||
        foreach ($loadedSheetNames as $sheetIndex => $loadedSheetName) {
 | 
			
		||||
            echo $sheetIndex, ' -> ', $loadedSheetName, '<br />';
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        ?>
 | 
			
		||||
    <body>
 | 
			
		||||
</html>
 | 
			
		||||
@ -7,7 +7,6 @@ error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -21,14 +20,9 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
        <h1>PhpSpreadsheet Reader Example #09</h1>
 | 
			
		||||
        <h2>Simple File Reader Using a Read Filter</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        require_once __DIR__ . '/../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
        $inputFileType = 'Xls';
 | 
			
		||||
//	$inputFileType = 'Xlsx';
 | 
			
		||||
//	$inputFileType = 'Xml';
 | 
			
		||||
//	$inputFileType = 'Ods';
 | 
			
		||||
//	$inputFileType = 'Gnumeric';
 | 
			
		||||
        $inputFileName = './sampleData/example1.xls';
 | 
			
		||||
        $sheetname = 'Data Sheet #3';
 | 
			
		||||
 | 
			
		||||
@ -45,6 +39,7 @@ class MyReadFilter implements IReadFilter
 | 
			
		||||
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $filterSubset = new MyReadFilter();
 | 
			
		||||
@ -61,7 +56,6 @@ echo '<hr />';
 | 
			
		||||
 | 
			
		||||
        $sheetData = $spreadsheet->getActiveSheet()->toArray(null, true, true, true);
 | 
			
		||||
        var_dump($sheetData);
 | 
			
		||||
 | 
			
		||||
        ?>
 | 
			
		||||
    <body>
 | 
			
		||||
</html>
 | 
			
		||||
@ -7,7 +7,6 @@ error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -21,23 +20,17 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
        <h1>PhpSpreadsheet Reader Example #10</h1>
 | 
			
		||||
        <h2>Simple File Reader Using a Configurable Read Filter</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        require_once __DIR__ . '/../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
        $inputFileType = 'Xls';
 | 
			
		||||
//	$inputFileType = 'Xlsx';
 | 
			
		||||
//	$inputFileType = 'Xml';
 | 
			
		||||
//	$inputFileType = 'Ods';
 | 
			
		||||
//	$inputFileType = 'Gnumeric';
 | 
			
		||||
        $inputFileName = './sampleData/example1.xls';
 | 
			
		||||
        $sheetname = 'Data Sheet #3';
 | 
			
		||||
 | 
			
		||||
        class MyReadFilter implements IReadFilter
 | 
			
		||||
        {
 | 
			
		||||
 | 
			
		||||
            private $_startRow = 0;
 | 
			
		||||
 | 
			
		||||
            private $_endRow = 0;
 | 
			
		||||
 | 
			
		||||
            private $_columns = [];
 | 
			
		||||
 | 
			
		||||
            public function __construct($startRow, $endRow, $columns)
 | 
			
		||||
@ -57,6 +50,7 @@ class MyReadFilter implements IReadFilter
 | 
			
		||||
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $filterSubset = new MyReadFilter(9, 15, range('G', 'K'));
 | 
			
		||||
@ -73,7 +67,6 @@ echo '<hr />';
 | 
			
		||||
 | 
			
		||||
        $sheetData = $spreadsheet->getActiveSheet()->toArray(null, true, true, true);
 | 
			
		||||
        var_dump($sheetData);
 | 
			
		||||
 | 
			
		||||
        ?>
 | 
			
		||||
    <body>
 | 
			
		||||
</html>
 | 
			
		||||
@ -7,7 +7,6 @@ error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -21,21 +20,16 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
        <h1>PhpSpreadsheet Reader Example #11</h1>
 | 
			
		||||
        <h2>Reading a Workbook in "Chunks" Using a Configurable Read Filter (Version 1)</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        require_once __DIR__ . '/../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
        $inputFileType = 'Xls';
 | 
			
		||||
//	$inputFileType = 'Xlsx';
 | 
			
		||||
//	$inputFileType = 'Xml';
 | 
			
		||||
//	$inputFileType = 'Ods';
 | 
			
		||||
//	$inputFileType = 'Gnumeric';
 | 
			
		||||
        $inputFileName = './sampleData/example2.xls';
 | 
			
		||||
 | 
			
		||||
        /**  Define a Read Filter class implementing IReadFilter  */
 | 
			
		||||
        class chunkReadFilter implements IReadFilter
 | 
			
		||||
        {
 | 
			
		||||
    private $_startRow = 0;
 | 
			
		||||
 | 
			
		||||
            private $_startRow = 0;
 | 
			
		||||
            private $_endRow = 0;
 | 
			
		||||
 | 
			
		||||
            /**
 | 
			
		||||
@ -59,6 +53,7 @@ class chunkReadFilter implements IReadFilter
 | 
			
		||||
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        echo 'Loading file ', pathinfo($inputFileName, PATHINFO_BASENAME), ' using IOFactory with a defined reader type of ', $inputFileType, '<br />';
 | 
			
		||||
@ -86,7 +81,6 @@ for ($startRow = 2; $startRow <= 240; $startRow += $chunkSize) {
 | 
			
		||||
            var_dump($sheetData);
 | 
			
		||||
            echo '<br /><br />';
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        ?>
 | 
			
		||||
    <body>
 | 
			
		||||
</html>
 | 
			
		||||
@ -7,7 +7,6 @@ error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -21,21 +20,16 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
        <h1>PhpSpreadsheet Reader Example #12</h1>
 | 
			
		||||
        <h2>Reading a Workbook in "Chunks" Using a Configurable Read Filter (Version 2)</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        require_once __DIR__ . '/../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
        $inputFileType = 'Xls';
 | 
			
		||||
//	$inputFileType = 'Xlsx';
 | 
			
		||||
//	$inputFileType = 'Xml';
 | 
			
		||||
//	$inputFileType = 'Ods';
 | 
			
		||||
//	$inputFileType = 'Gnumeric';
 | 
			
		||||
        $inputFileName = './sampleData/example2.xls';
 | 
			
		||||
 | 
			
		||||
        /**  Define a Read Filter class implementing IReadFilter  */
 | 
			
		||||
        class chunkReadFilter implements IReadFilter
 | 
			
		||||
        {
 | 
			
		||||
    private $_startRow = 0;
 | 
			
		||||
 | 
			
		||||
            private $_startRow = 0;
 | 
			
		||||
            private $_endRow = 0;
 | 
			
		||||
 | 
			
		||||
            /**
 | 
			
		||||
@ -59,6 +53,7 @@ class chunkReadFilter implements IReadFilter
 | 
			
		||||
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        echo 'Loading file ', pathinfo($inputFileName, PATHINFO_BASENAME), ' using IOFactory with a defined reader type of ', $inputFileType, '<br />';
 | 
			
		||||
@ -89,7 +84,6 @@ for ($startRow = 2; $startRow <= 240; $startRow += $chunkSize) {
 | 
			
		||||
            var_dump($sheetData);
 | 
			
		||||
            echo '<br /><br />';
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        ?>
 | 
			
		||||
    <body>
 | 
			
		||||
</html>
 | 
			
		||||
@ -6,7 +6,6 @@ error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -20,7 +19,6 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
        <h1>PhpSpreadsheet Reader Example #13</h1>
 | 
			
		||||
        <h2>Simple File Reader for Multiple CSV Files</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        require_once __DIR__ . '/../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
        $inputFileType = 'Csv';
 | 
			
		||||
@ -49,7 +47,6 @@ foreach ($loadedSheetNames as $sheetIndex => $loadedSheetName) {
 | 
			
		||||
            var_dump($sheetData);
 | 
			
		||||
            echo '<br /><br />';
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        ?>
 | 
			
		||||
    <body>
 | 
			
		||||
</html>
 | 
			
		||||
@ -8,7 +8,6 @@ error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -22,7 +21,6 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
        <h1>PhpSpreadsheet Reader Example #14</h1>
 | 
			
		||||
        <h2>Reading a Large CSV file in "Chunks" to split across multiple Worksheets</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        require_once __DIR__ . '/../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
        $inputFileType = 'Csv';
 | 
			
		||||
@ -31,8 +29,8 @@ $inputFileName = './sampleData/example2.csv';
 | 
			
		||||
        /**  Define a Read Filter class implementing IReadFilter  */
 | 
			
		||||
        class chunkReadFilter implements IReadFilter
 | 
			
		||||
        {
 | 
			
		||||
    private $_startRow = 0;
 | 
			
		||||
 | 
			
		||||
            private $_startRow = 0;
 | 
			
		||||
            private $_endRow = 0;
 | 
			
		||||
 | 
			
		||||
            /**
 | 
			
		||||
@ -56,6 +54,7 @@ class chunkReadFilter implements IReadFilter
 | 
			
		||||
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        echo 'Loading file ', pathinfo($inputFileName, PATHINFO_BASENAME), ' using IOFactory with a defined reader type of ', $inputFileType, '<br />';
 | 
			
		||||
@ -106,7 +105,6 @@ foreach ($loadedSheetNames as $sheetIndex => $loadedSheetName) {
 | 
			
		||||
            var_dump($sheetData);
 | 
			
		||||
            echo '<br />';
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        ?>
 | 
			
		||||
    <body>
 | 
			
		||||
</html>
 | 
			
		||||
@ -7,7 +7,6 @@ error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -21,7 +20,6 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
        <h1>PhpSpreadsheet Reader Example #15</h1>
 | 
			
		||||
        <h2>Simple File Reader for Tab-Separated Value File using the Advanced Value Binder</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        require_once __DIR__ . '/../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
        Cell::setValueBinder(new Cell\AdvancedValueBinder());
 | 
			
		||||
@ -66,7 +64,6 @@ foreach ($loadedSheetNames as $sheetIndex => $loadedSheetName) {
 | 
			
		||||
            var_dump($sheetData);
 | 
			
		||||
            echo '<br />';
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        ?>
 | 
			
		||||
    <body>
 | 
			
		||||
</html>
 | 
			
		||||
@ -7,7 +7,6 @@ error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -21,7 +20,6 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
        <h1>PhpSpreadsheet Reader Example #16</h1>
 | 
			
		||||
        <h2>Handling Loader Exceptions using Try/Catch</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        require_once __DIR__ . '/../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
        $inputFileName = './sampleData/example_1.xls';
 | 
			
		||||
@ -36,7 +34,6 @@ echo '<hr />';
 | 
			
		||||
 | 
			
		||||
        $sheetData = $spreadsheet->getActiveSheet()->toArray(null, true, true, true);
 | 
			
		||||
        var_dump($sheetData);
 | 
			
		||||
 | 
			
		||||
        ?>
 | 
			
		||||
    <body>
 | 
			
		||||
</html>
 | 
			
		||||
@ -6,7 +6,6 @@ error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -20,14 +19,9 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
        <h1>PhpSpreadsheet Reader Example #17</h1>
 | 
			
		||||
        <h2>Simple File Reader Loading Several Named WorkSheets</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        require_once __DIR__ . '/../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
        $inputFileType = 'Xls';
 | 
			
		||||
//	$inputFileType = 'Xlsx';
 | 
			
		||||
//	$inputFileType = 'Xml';
 | 
			
		||||
//	$inputFileType = 'Ods';
 | 
			
		||||
//	$inputFileType = 'Gnumeric';
 | 
			
		||||
        $inputFileName = './sampleData/example1.xls';
 | 
			
		||||
 | 
			
		||||
        echo 'Loading file ', pathinfo($inputFileName, PATHINFO_BASENAME), ' using IOFactory with a defined reader type of ', $inputFileType, '<br />';
 | 
			
		||||
@ -41,7 +35,6 @@ echo 'There are ',count($worksheetNames),' worksheet',((count($worksheetNames) =
 | 
			
		||||
        foreach ($worksheetNames as $worksheetName) {
 | 
			
		||||
            echo $worksheetName, '<br />';
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        ?>
 | 
			
		||||
    <body>
 | 
			
		||||
</html>
 | 
			
		||||
@ -6,7 +6,6 @@ error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -20,14 +19,9 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
        <h1>PhpSpreadsheet Reader Example #18</h1>
 | 
			
		||||
        <h2>Reading list of WorkSheets without loading entire file</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        require_once __DIR__ . '/../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
        $inputFileType = 'Xls';
 | 
			
		||||
//	$inputFileType = 'Xlsx';
 | 
			
		||||
//	$inputFileType = 'Xml';
 | 
			
		||||
//	$inputFileType = 'Ods';
 | 
			
		||||
//	$inputFileType = 'Gnumeric';
 | 
			
		||||
        $inputFileName = './sampleData/example1.xls';
 | 
			
		||||
 | 
			
		||||
        echo 'Loading file ', pathinfo($inputFileName, PATHINFO_BASENAME), ' information using IOFactory with a defined reader type of ', $inputFileType, '<br />';
 | 
			
		||||
@ -41,7 +35,6 @@ foreach ($worksheetNames as $worksheetName) {
 | 
			
		||||
            echo '<li>', $worksheetName, '</li>';
 | 
			
		||||
        }
 | 
			
		||||
        echo '</ol>';
 | 
			
		||||
 | 
			
		||||
        ?>
 | 
			
		||||
    <body>
 | 
			
		||||
</html>
 | 
			
		||||
@ -6,7 +6,6 @@ error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -20,14 +19,9 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
        <h1>PhpSpreadsheet Reader Example #19</h1>
 | 
			
		||||
        <h2>Reading WorkSheet information without loading entire file</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        require_once __DIR__ . '/../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
        $inputFileType = 'Xls';
 | 
			
		||||
//	$inputFileType = 'Xlsx';
 | 
			
		||||
//	$inputFileType = 'Xml';
 | 
			
		||||
//	$inputFileType = 'Ods';
 | 
			
		||||
//	$inputFileType = 'Gnumeric';
 | 
			
		||||
        $inputFileName = './sampleData/example1.xls';
 | 
			
		||||
 | 
			
		||||
        echo 'Loading file ', pathinfo($inputFileName, PATHINFO_BASENAME), ' information using IOFactory with a defined reader type of ', $inputFileType, '<br />';
 | 
			
		||||
@ -44,7 +38,6 @@ foreach ($worksheetData as $worksheet) {
 | 
			
		||||
            echo '</li>';
 | 
			
		||||
        }
 | 
			
		||||
        echo '</ol>';
 | 
			
		||||
 | 
			
		||||
        ?>
 | 
			
		||||
    <body>
 | 
			
		||||
</html>
 | 
			
		||||
@ -6,7 +6,6 @@ error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -20,7 +19,6 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
        <h1>PhpSpreadsheet Reading WorkBook Data Example #01</h1>
 | 
			
		||||
        <h2>Read the WorkBook Properties</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        require_once __DIR__ . '/../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
        $inputFileType = 'Xls';
 | 
			
		||||
@ -82,7 +80,6 @@ echo '<b>Company: </b>',$company,'<br />';
 | 
			
		||||
        /*  Read the workbook manager property  * */
 | 
			
		||||
        $manager = $spreadsheet->getProperties()->getManager();
 | 
			
		||||
        echo '<b>Manager: </b>', $manager, '<br />';
 | 
			
		||||
 | 
			
		||||
        ?>
 | 
			
		||||
    <body>
 | 
			
		||||
</html>
 | 
			
		||||
 | 
			
		||||
@ -6,7 +6,6 @@ error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -20,7 +19,6 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
        <h1>PhpSpreadsheet Reading WorkBook Data Example #02</h1>
 | 
			
		||||
        <h2>Read a list of Custom Properties for a WorkBook</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        require_once __DIR__ . '/../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
        $inputFileType = 'Xlsx';
 | 
			
		||||
@ -40,7 +38,6 @@ echo '<b>Custom Property names: </b><br />';
 | 
			
		||||
        foreach ($customPropertyList as $customPropertyName) {
 | 
			
		||||
            echo $customPropertyName, '<br />';
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        ?>
 | 
			
		||||
    <body>
 | 
			
		||||
</html>
 | 
			
		||||
 | 
			
		||||
@ -6,7 +6,6 @@ error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -20,7 +19,6 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
        <h1>PhpSpreadsheet Reading WorkBook Data Example #03</h1>
 | 
			
		||||
        <h2>Read Custom Property Values for a WorkBook</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        require_once __DIR__ . '/../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
        $inputFileType = 'Xlsx';
 | 
			
		||||
@ -68,7 +66,6 @@ foreach ($customPropertyList as $customPropertyName) {
 | 
			
		||||
 | 
			
		||||
            echo $propertyValue, ' (', $propertyType, ')<br />';
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        ?>
 | 
			
		||||
    <body>
 | 
			
		||||
</html>
 | 
			
		||||
 | 
			
		||||
@ -6,7 +6,6 @@ error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -20,7 +19,6 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
        <h1>PhpSpreadsheet Reading WorkBook Data Example #04</h1>
 | 
			
		||||
        <h2>Get a List of the Worksheets in a WorkBook</h2>
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        require_once __DIR__ . '/../../../src/Bootstrap.php';
 | 
			
		||||
 | 
			
		||||
        $inputFileType = 'Xls';
 | 
			
		||||
@ -44,7 +42,6 @@ $sheetNames = $spreadsheet->getSheetNames();
 | 
			
		||||
        foreach ($sheetNames as $sheetIndex => $sheetName) {
 | 
			
		||||
            echo 'WorkSheet #', $sheetIndex, ' is named "', $sheetName, '"<br />';
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        ?>
 | 
			
		||||
    <body>
 | 
			
		||||
</html>
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,8 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
error_reporting(E_ALL);
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
date_default_timezone_set('Europe/London');
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
@ -16,7 +14,6 @@ date_default_timezone_set('Europe/London');
 | 
			
		||||
    <body>
 | 
			
		||||
 | 
			
		||||
        <?php
 | 
			
		||||
 | 
			
		||||
        $exampleTypeList = glob('./*', GLOB_ONLYDIR);
 | 
			
		||||
 | 
			
		||||
        foreach ($exampleTypeList as $exampleType) {
 | 
			
		||||
@ -42,7 +39,6 @@ foreach ($exampleTypeList as $exampleType) {
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        ?>
 | 
			
		||||
    <body>
 | 
			
		||||
</html>
 | 
			
		||||
@ -90,7 +90,7 @@ calculated values, or force recalculation in Excel2003.
 | 
			
		||||
### Excel functions that return a Date and Time value
 | 
			
		||||
 | 
			
		||||
Any of the Date and Time functions that return a date value in Excel can
 | 
			
		||||
return either an Excel timestamp or a PHP timestamp or date object.
 | 
			
		||||
return either an Excel timestamp or a PHP timestamp or `DateTime` object.
 | 
			
		||||
 | 
			
		||||
It is possible for scripts to change the data type used for returning
 | 
			
		||||
date values by calling the
 | 
			
		||||
@ -117,11 +117,11 @@ method can be used to determine the current value of this setting:
 | 
			
		||||
$returnDateType = \PhpOffice\PhpSpreadsheet\Calculation\Functions::getReturnDateType();
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
The default is RETURNDATE\_PHP\_NUMERIC.
 | 
			
		||||
The default is `RETURNDATE_PHP_NUMERIC`.
 | 
			
		||||
 | 
			
		||||
#### PHP Timestamps
 | 
			
		||||
 | 
			
		||||
If RETURNDATE\_PHP\_NUMERIC is set for the Return Date Type, then any
 | 
			
		||||
If `RETURNDATE_PHP_NUMERIC` is set for the Return Date Type, then any
 | 
			
		||||
date value returned to the calling script by any access to the Date and
 | 
			
		||||
Time functions in Excel will be an integer value that represents the
 | 
			
		||||
number of seconds from the PHP/Unix base date. The PHP/Unix base date
 | 
			
		||||
@ -131,15 +131,15 @@ while a value of +3600 would be 01:00 hrs on 1st January 1970. This
 | 
			
		||||
gives PHP a date range of between 14th December 1901 and 19th January
 | 
			
		||||
2038.
 | 
			
		||||
 | 
			
		||||
#### PHP DateTime Objects
 | 
			
		||||
#### PHP `DateTime` Objects
 | 
			
		||||
 | 
			
		||||
If the Return Date Type is set for RETURNDATE\_PHP\_NUMERIC, then any
 | 
			
		||||
If the Return Date Type is set for `RETURNDATE_PHP_OBJECT`, then any
 | 
			
		||||
date value returned to the calling script by any access to the Date and
 | 
			
		||||
Time functions in Excel will be a PHP date/time object.
 | 
			
		||||
Time functions in Excel will be a PHP `DateTime` object.
 | 
			
		||||
 | 
			
		||||
#### Excel Timestamps
 | 
			
		||||
 | 
			
		||||
If RETURNDATE\_EXCEL is set for the Return Date Type, then the returned
 | 
			
		||||
If `RETURNDATE_EXCEL` is set for the Return Date Type, then the returned
 | 
			
		||||
date value by any access to the Date and Time functions in Excel will be
 | 
			
		||||
a floating point value that represents a number of days from the Excel
 | 
			
		||||
base date. The Excel base date is determined by which calendar Excel
 | 
			
		||||
@ -157,8 +157,8 @@ Excel date values by calling the
 | 
			
		||||
 | 
			
		||||
where the following constants can be used for `$baseDate`:
 | 
			
		||||
 | 
			
		||||
-   \PhpOffice\PhpSpreadsheet\Shared\Date::CALENDAR\_WINDOWS\_1900
 | 
			
		||||
-   \PhpOffice\PhpSpreadsheet\Shared\Date::CALENDAR\_MAC\_1904
 | 
			
		||||
- `\PhpOffice\PhpSpreadsheet\Shared\Date::CALENDAR_WINDOWS_1900`
 | 
			
		||||
- `\PhpOffice\PhpSpreadsheet\Shared\Date::CALENDAR_MAC_1904`
 | 
			
		||||
 | 
			
		||||
The method will return a Boolean True on success, False on failure (e.g.
 | 
			
		||||
if an invalid value is passed in).
 | 
			
		||||
@ -170,7 +170,7 @@ be used to determine the current value of this setting:
 | 
			
		||||
$baseDate = \PhpOffice\PhpSpreadsheet\Shared\Date::getExcelCalendar();
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
The default is CALENDAR\_WINDOWS\_1900.
 | 
			
		||||
The default is `CALENDAR_WINDOWS_1900`.
 | 
			
		||||
 | 
			
		||||
#### Functions that return a Date/Time Value
 | 
			
		||||
 | 
			
		||||
@ -186,15 +186,15 @@ The default is CALENDAR\_WINDOWS\_1900.
 | 
			
		||||
### Excel functions that accept Date and Time values as parameters
 | 
			
		||||
 | 
			
		||||
Date values passed in as parameters to a function can be an Excel
 | 
			
		||||
timestamp or a PHP timestamp; or date object; or a string containing a
 | 
			
		||||
timestamp or a PHP timestamp; or `DateTime` object; or a string containing a
 | 
			
		||||
date value (e.g. '1-Jan-2009'). PhpSpreadsheet will attempt to identify
 | 
			
		||||
their type based on the PHP datatype:
 | 
			
		||||
 | 
			
		||||
An integer numeric value will be treated as a PHP/Unix timestamp. A real
 | 
			
		||||
(floating point) numeric value will be treated as an Excel
 | 
			
		||||
date/timestamp. Any PHP DateTime object will be treated as a DateTime
 | 
			
		||||
date/timestamp. Any PHP `DateTime` object will be treated as a `DateTime`
 | 
			
		||||
object. Any string value (even one containing straight numeric data)
 | 
			
		||||
will be converted to a date/time object for validation as a date value
 | 
			
		||||
will be converted to a `DateTime` object for validation as a date value
 | 
			
		||||
based on the server locale settings, so passing through an ambiguous
 | 
			
		||||
value of '07/08/2008' will be treated as 7th August 2008 if your server
 | 
			
		||||
settings are UK, but as 8th July 2008 if your server settings are US.
 | 
			
		||||
@ -202,7 +202,7 @@ However, if you pass through a value such as '31/12/2008' that would be
 | 
			
		||||
considered an error by a US-based server, but which is not ambiguous,
 | 
			
		||||
then PhpSpreadsheet will attempt to correct this to 31st December 2008.
 | 
			
		||||
If the content of the string doesn’t match any of the formats recognised
 | 
			
		||||
by the php date/time object implementation of `strtotime()` (which can
 | 
			
		||||
by the php `DateTime` object implementation of `strtotime()` (which can
 | 
			
		||||
handle a wider range of formats than the normal `strtotime()` function),
 | 
			
		||||
then the function will return a `#VALUE` error. However, Excel
 | 
			
		||||
recommends that you should always use date/timestamps for your date
 | 
			
		||||
@ -213,7 +213,7 @@ The same principle applies when data is being written to Excel. Cells
 | 
			
		||||
containing date actual values (rather than Excel functions that return a
 | 
			
		||||
date value) are always written as Excel dates, converting where
 | 
			
		||||
necessary. If a cell formatted as a date contains an integer or
 | 
			
		||||
date/time object value, then it is converted to an Excel value for
 | 
			
		||||
`DateTime` object value, then it is converted to an Excel value for
 | 
			
		||||
writing: if a cell formatted as a date contains a real value, then no
 | 
			
		||||
conversion is required. Note that string values are written as strings
 | 
			
		||||
rather than converted to Excel date timestamp values.
 | 
			
		||||
@ -243,7 +243,7 @@ number of other methods are available in the
 | 
			
		||||
\PhpOffice\PhpSpreadsheet\Shared\Date class that can help when working
 | 
			
		||||
with dates:
 | 
			
		||||
 | 
			
		||||
#### \PhpOffice\PhpSpreadsheet\Shared\Date::ExcelToPHP($excelDate)
 | 
			
		||||
#### \PhpOffice\PhpSpreadsheet\Shared\Date::excelToTimestamp($excelDate)
 | 
			
		||||
 | 
			
		||||
Converts a date/time from an Excel date timestamp to return a PHP
 | 
			
		||||
serialized date/timestamp.
 | 
			
		||||
@ -251,17 +251,17 @@ serialized date/timestamp.
 | 
			
		||||
Note that this method does not trap for Excel dates that fall outside of
 | 
			
		||||
the valid range for a PHP date timestamp.
 | 
			
		||||
 | 
			
		||||
#### \PhpOffice\PhpSpreadsheet\Shared\Date::ExcelToPHPObject($excelDate)
 | 
			
		||||
#### \PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($excelDate)
 | 
			
		||||
 | 
			
		||||
Converts a date from an Excel date/timestamp to return a PHP DateTime
 | 
			
		||||
Converts a date from an Excel date/timestamp to return a PHP `DateTime`
 | 
			
		||||
object.
 | 
			
		||||
 | 
			
		||||
#### \PhpOffice\PhpSpreadsheet\Shared\Date::PHPToExcel($PHPDate)
 | 
			
		||||
 | 
			
		||||
Converts a PHP serialized date/timestamp or a PHP DateTime object to
 | 
			
		||||
Converts a PHP serialized date/timestamp or a PHP `DateTime` object to
 | 
			
		||||
return an Excel date timestamp.
 | 
			
		||||
 | 
			
		||||
#### \PhpOffice\PhpSpreadsheet\Shared\Date::FormattedPHPToExcel($year, $month, $day, $hours=0, $minutes=0, $seconds=0)
 | 
			
		||||
#### \PhpOffice\PhpSpreadsheet\Shared\Date::formattedPHPToExcel($year, $month, $day, $hours=0, $minutes=0, $seconds=0)
 | 
			
		||||
 | 
			
		||||
Takes year, month and day values (and optional hour, minute and second
 | 
			
		||||
values) and returns an Excel date timestamp value.
 | 
			
		||||
@ -979,7 +979,7 @@ Excel and in PHP.
 | 
			
		||||
 | 
			
		||||
#### DATE
 | 
			
		||||
 | 
			
		||||
The DATE function returns an Excel timestamp or a PHP timestamp or date
 | 
			
		||||
The DATE function returns an Excel timestamp or a PHP timestamp or `DateTime`
 | 
			
		||||
object representing the date that is referenced by the parameters.
 | 
			
		||||
 | 
			
		||||
##### Syntax
 | 
			
		||||
@ -1025,7 +1025,7 @@ February 27, 2008.
 | 
			
		||||
 | 
			
		||||
**mixed** A date/time stamp that corresponds to the given date.
 | 
			
		||||
 | 
			
		||||
This could be a PHP timestamp value (integer), a PHP date/time object,
 | 
			
		||||
This could be a PHP timestamp value (integer), a PHP `DateTime` object,
 | 
			
		||||
or an Excel timestamp value (real), depending on the value of
 | 
			
		||||
\PhpOffice\PhpSpreadsheet\Calculation\Functions::getReturnDateType().
 | 
			
		||||
 | 
			
		||||
@ -1093,12 +1093,12 @@ variety of different intervals, such number of years, months, or days.
 | 
			
		||||
 | 
			
		||||
**date1** First Date.
 | 
			
		||||
 | 
			
		||||
An Excel date value, PHP date timestamp, PHP date object, or a date
 | 
			
		||||
An Excel date value, PHP date timestamp, PHP `DateTime` object, or a date
 | 
			
		||||
represented as a string.
 | 
			
		||||
 | 
			
		||||
**date2** Second Date.
 | 
			
		||||
 | 
			
		||||
An Excel date value, PHP date timestamp, PHP date object, or a date
 | 
			
		||||
An Excel date value, PHP date timestamp, PHP `DateTime` object, or a date
 | 
			
		||||
represented as a string.
 | 
			
		||||
 | 
			
		||||
**unit** The interval type to use for the calculation
 | 
			
		||||
@ -1230,7 +1230,7 @@ A string, representing a date value.
 | 
			
		||||
 | 
			
		||||
**mixed** A date/time stamp that corresponds to the given date.
 | 
			
		||||
 | 
			
		||||
This could be a PHP timestamp value (integer), a PHP date/time object,
 | 
			
		||||
This could be a PHP timestamp value (integer), a PHP `DateTime` object,
 | 
			
		||||
or an Excel timestamp value (real), depending on the value of
 | 
			
		||||
\PhpOffice\PhpSpreadsheet\Calculation\Functions::getReturnDateType().
 | 
			
		||||
 | 
			
		||||
@ -1290,7 +1290,7 @@ $retVal = call_user_func_array(
 | 
			
		||||
 | 
			
		||||
##### Notes
 | 
			
		||||
 | 
			
		||||
DATEVALUE uses the php date/time object implementation of `strtotime()`
 | 
			
		||||
DATEVALUE uses the php `DateTime` object implementation of `strtotime()`
 | 
			
		||||
(which can handle a wider range of formats than the normal `strtotime()`
 | 
			
		||||
function), and it is also called for any date parameter passed to other
 | 
			
		||||
date functions (such as DATEDIF) when the parameter value is a string.
 | 
			
		||||
@ -1317,7 +1317,7 @@ integer ranging from 1 to 31.
 | 
			
		||||
 | 
			
		||||
**datetime** Date.
 | 
			
		||||
 | 
			
		||||
An Excel date value, PHP date timestamp, PHP date object, or a date
 | 
			
		||||
An Excel date value, PHP date timestamp, PHP `DateTime` object, or a date
 | 
			
		||||
represented as a string.
 | 
			
		||||
 | 
			
		||||
##### Return Value
 | 
			
		||||
@ -1371,12 +1371,12 @@ accounting systems.
 | 
			
		||||
 | 
			
		||||
**date1** First Date.
 | 
			
		||||
 | 
			
		||||
An Excel date value, PHP date timestamp, PHP date object, or a date
 | 
			
		||||
An Excel date value, PHP date timestamp, PHP `DateTime` object, or a date
 | 
			
		||||
represented as a string.
 | 
			
		||||
 | 
			
		||||
**date2** Second Date.
 | 
			
		||||
 | 
			
		||||
An Excel date value, PHP date timestamp, PHP date object, or a date
 | 
			
		||||
An Excel date value, PHP date timestamp, PHP `DateTime` object, or a date
 | 
			
		||||
represented as a string.
 | 
			
		||||
 | 
			
		||||
**method** A boolean flag (TRUE or FALSE)
 | 
			
		||||
@ -1453,7 +1453,7 @@ Excel `TRUE()` and `FALSE()` functions are used instead.
 | 
			
		||||
 | 
			
		||||
#### EDATE
 | 
			
		||||
 | 
			
		||||
The EDATE function returns an Excel timestamp or a PHP timestamp or date
 | 
			
		||||
The EDATE function returns an Excel timestamp or a PHP timestamp or `DateTime`
 | 
			
		||||
object representing the date that is the indicated number of months
 | 
			
		||||
before or after a specified date (the start\_date). Use EDATE to
 | 
			
		||||
calculate maturity dates or due dates that fall on the same day of the
 | 
			
		||||
@ -1467,7 +1467,7 @@ month as the date of issue.
 | 
			
		||||
 | 
			
		||||
**baseDate** Start Date.
 | 
			
		||||
 | 
			
		||||
An Excel date value, PHP date timestamp, PHP date object, or a date
 | 
			
		||||
An Excel date value, PHP date timestamp, PHP `DateTime` object, or a date
 | 
			
		||||
represented as a string.
 | 
			
		||||
 | 
			
		||||
**months** Number of months to add.
 | 
			
		||||
@ -1480,7 +1480,7 @@ value yields a past date.
 | 
			
		||||
 | 
			
		||||
**mixed** A date/time stamp that corresponds to the basedate + months.
 | 
			
		||||
 | 
			
		||||
This could be a PHP timestamp value (integer), a PHP date/time object,
 | 
			
		||||
This could be a PHP timestamp value (integer), a PHP `DateTime` object,
 | 
			
		||||
or an Excel timestamp value (real), depending on the value of
 | 
			
		||||
\PhpOffice\PhpSpreadsheet\Calculation\Functions::getReturnDateType().
 | 
			
		||||
 | 
			
		||||
@ -1526,7 +1526,7 @@ the Analysis ToolPak.
 | 
			
		||||
#### EOMONTH
 | 
			
		||||
 | 
			
		||||
The EOMONTH function returns an Excel timestamp or a PHP timestamp or
 | 
			
		||||
date object representing the date of the last day of the month that is
 | 
			
		||||
`DateTime` object representing the date of the last day of the month that is
 | 
			
		||||
the indicated number of months before or after a specified date (the
 | 
			
		||||
start\_date). Use EOMONTH to calculate maturity dates or due dates that
 | 
			
		||||
fall on the last day of the month.
 | 
			
		||||
@ -1539,7 +1539,7 @@ fall on the last day of the month.
 | 
			
		||||
 | 
			
		||||
**baseDate** Start Date.
 | 
			
		||||
 | 
			
		||||
An Excel date value, PHP date timestamp, PHP date object, or a date
 | 
			
		||||
An Excel date value, PHP date timestamp, PHP `DateTime` object, or a date
 | 
			
		||||
represented as a string.
 | 
			
		||||
 | 
			
		||||
**months** Number of months to add.
 | 
			
		||||
@ -1553,7 +1553,7 @@ value yields a past date.
 | 
			
		||||
**mixed** A date/time stamp that corresponds to the last day of basedate
 | 
			
		||||
+ months.
 | 
			
		||||
 | 
			
		||||
This could be a PHP timestamp value (integer), a PHP date/time object,
 | 
			
		||||
This could be a PHP timestamp value (integer), a PHP `DateTime` object,
 | 
			
		||||
or an Excel timestamp value (real), depending on the value of
 | 
			
		||||
\PhpOffice\PhpSpreadsheet\Calculation\Functions::getReturnDateType().
 | 
			
		||||
 | 
			
		||||
@ -1607,7 +1607,7 @@ an integer, ranging from 0 (12:00 A.M.) to 23 (11:00 P.M.).
 | 
			
		||||
 | 
			
		||||
**datetime** Time.
 | 
			
		||||
 | 
			
		||||
An Excel date/time value, PHP date timestamp, PHP date object, or a
 | 
			
		||||
An Excel date/time value, PHP date timestamp, PHP `DateTime` object, or a
 | 
			
		||||
date/time represented as a string.
 | 
			
		||||
 | 
			
		||||
##### Return Value
 | 
			
		||||
@ -1665,7 +1665,7 @@ given as an integer, ranging from 0 to 59.
 | 
			
		||||
 | 
			
		||||
**datetime** Time.
 | 
			
		||||
 | 
			
		||||
An Excel date/time value, PHP date timestamp, PHP date object, or a
 | 
			
		||||
An Excel date/time value, PHP date timestamp, PHP `DateTime` object, or a
 | 
			
		||||
date/time represented as a string.
 | 
			
		||||
 | 
			
		||||
##### Return Value
 | 
			
		||||
@ -1723,7 +1723,7 @@ integer ranging from 1 to 12.
 | 
			
		||||
 | 
			
		||||
**datetime** Date.
 | 
			
		||||
 | 
			
		||||
An Excel date value, PHP date timestamp, PHP date object, or a date
 | 
			
		||||
An Excel date value, PHP date timestamp, PHP `DateTime` object, or a date
 | 
			
		||||
represented as a string.
 | 
			
		||||
 | 
			
		||||
##### Return Value
 | 
			
		||||
@ -1779,12 +1779,12 @@ a specific term.
 | 
			
		||||
 | 
			
		||||
**startDate** Start Date of the period.
 | 
			
		||||
 | 
			
		||||
An Excel date value, PHP date timestamp, PHP date object, or a date
 | 
			
		||||
An Excel date value, PHP date timestamp, PHP `DateTime` object, or a date
 | 
			
		||||
represented as a string.
 | 
			
		||||
 | 
			
		||||
**endDate** End Date of the period.
 | 
			
		||||
 | 
			
		||||
An Excel date value, PHP date timestamp, PHP date object, or a date
 | 
			
		||||
An Excel date value, PHP date timestamp, PHP `DateTime` object, or a date
 | 
			
		||||
represented as a string.
 | 
			
		||||
 | 
			
		||||
**holidays** Optional array of Holiday dates.
 | 
			
		||||
@ -1831,7 +1831,7 @@ There are no parameters for the `NOW()` function.
 | 
			
		||||
**mixed** A date/time stamp that corresponds to the current date and
 | 
			
		||||
time.
 | 
			
		||||
 | 
			
		||||
This could be a PHP timestamp value (integer), a PHP date/time object,
 | 
			
		||||
This could be a PHP timestamp value (integer), a PHP `DateTime` object,
 | 
			
		||||
or an Excel timestamp value (real), depending on the value of
 | 
			
		||||
\PhpOffice\PhpSpreadsheet\Calculation\Functions::getReturnDateType().
 | 
			
		||||
 | 
			
		||||
@ -1862,7 +1862,7 @@ given as an integer, ranging from 0 to 59.
 | 
			
		||||
 | 
			
		||||
**datetime** Time.
 | 
			
		||||
 | 
			
		||||
An Excel date/time value, PHP date timestamp, PHP date object, or a
 | 
			
		||||
An Excel date/time value, PHP date timestamp, PHP `DateTime` object, or a
 | 
			
		||||
date/time represented as a string.
 | 
			
		||||
 | 
			
		||||
##### Return Value
 | 
			
		||||
@ -1934,7 +1934,7 @@ modified to return a value between 0 and 6.
 | 
			
		||||
 | 
			
		||||
**datetime** Date.
 | 
			
		||||
 | 
			
		||||
An Excel date value, PHP date timestamp, PHP date object, or a date
 | 
			
		||||
An Excel date value, PHP date timestamp, PHP `DateTime` object, or a date
 | 
			
		||||
represented as a string.
 | 
			
		||||
 | 
			
		||||
**method** An integer flag (values 0, 1 or 2)
 | 
			
		||||
@ -2012,7 +2012,7 @@ The YEAR function returns the year of a date.
 | 
			
		||||
 | 
			
		||||
**datetime** Date.
 | 
			
		||||
 | 
			
		||||
An Excel date value, PHP date timestamp, PHP date object, or a date
 | 
			
		||||
An Excel date value, PHP date timestamp, PHP `DateTime` object, or a date
 | 
			
		||||
represented as a string.
 | 
			
		||||
 | 
			
		||||
##### Return Value
 | 
			
		||||
 | 
			
		||||
@ -13,6 +13,7 @@ use PhpOffice\PhpSpreadsheet\Calculation\LookupRef;
 | 
			
		||||
use PhpOffice\PhpSpreadsheet\Calculation\MathTrig;
 | 
			
		||||
use PhpOffice\PhpSpreadsheet\Calculation\Statistical;
 | 
			
		||||
use PhpOffice\PhpSpreadsheet\Calculation\TextData;
 | 
			
		||||
use PhpOffice\PhpSpreadsheet\Calculation\Token\Stack;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Copyright (c) 2006 - 2016 PhpSpreadsheet.
 | 
			
		||||
@ -2059,8 +2060,6 @@ class Calculation
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Unset an instance of this class.
 | 
			
		||||
     *
 | 
			
		||||
     * @param Spreadsheet $spreadsheet Injected spreadsheet identifying the instance to unset
 | 
			
		||||
     */
 | 
			
		||||
    public function __destruct()
 | 
			
		||||
    {
 | 
			
		||||
@ -2314,6 +2313,14 @@ class Calculation
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param string $fromSeparator
 | 
			
		||||
     * @param string $toSeparator
 | 
			
		||||
     * @param string $formula
 | 
			
		||||
     * @param bool $inBraces
 | 
			
		||||
     *
 | 
			
		||||
     * @return string
 | 
			
		||||
     */
 | 
			
		||||
    public static function translateSeparator($fromSeparator, $toSeparator, $formula, &$inBraces)
 | 
			
		||||
    {
 | 
			
		||||
        $strlen = mb_strlen($formula);
 | 
			
		||||
@ -2657,6 +2664,12 @@ class Calculation
 | 
			
		||||
        return $result;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param string $cellReference
 | 
			
		||||
     * @param mixed $cellValue
 | 
			
		||||
     *
 | 
			
		||||
     * @return bool
 | 
			
		||||
     */
 | 
			
		||||
    public function getValueFromCache($cellReference, &$cellValue)
 | 
			
		||||
    {
 | 
			
		||||
        // Is calculation cacheing enabled?
 | 
			
		||||
@ -2985,6 +2998,11 @@ class Calculation
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param string $formula
 | 
			
		||||
     *
 | 
			
		||||
     * @return string
 | 
			
		||||
     */
 | 
			
		||||
    private function convertMatrixReferences($formula)
 | 
			
		||||
    {
 | 
			
		||||
        static $matrixReplaceFrom = ['{', ';', '}'];
 | 
			
		||||
@ -3073,6 +3091,13 @@ class Calculation
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    // Convert infix to postfix notation
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param string $formula
 | 
			
		||||
     * @param Cell|null $pCell
 | 
			
		||||
     *
 | 
			
		||||
     * @return bool
 | 
			
		||||
     */
 | 
			
		||||
    private function _parseFormula($formula, Cell $pCell = null)
 | 
			
		||||
    {
 | 
			
		||||
        if (($formula = $this->convertMatrixReferences(trim($formula))) === false) {
 | 
			
		||||
@ -3094,7 +3119,7 @@ class Calculation
 | 
			
		||||
 | 
			
		||||
        //    Start with initialisation
 | 
			
		||||
        $index = 0;
 | 
			
		||||
        $stack = new Calculation\Token\Stack();
 | 
			
		||||
        $stack = new Stack();
 | 
			
		||||
        $output = [];
 | 
			
		||||
        $expectingOperator = false; //    We use this test in syntax-checking the expression to determine when a
 | 
			
		||||
                                                    //        - is a negation or + is a positive operator rather than an operation
 | 
			
		||||
@ -3401,8 +3426,11 @@ class Calculation
 | 
			
		||||
    // evaluate postfix notation
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param string $cellID
 | 
			
		||||
     * @param mixed $tokens
 | 
			
		||||
     * @param string|null $cellID
 | 
			
		||||
     * @param Cell|null $pCell
 | 
			
		||||
     *
 | 
			
		||||
     * @return bool
 | 
			
		||||
     */
 | 
			
		||||
    private function processTokenStack($tokens, $cellID = null, Cell $pCell = null)
 | 
			
		||||
    {
 | 
			
		||||
@ -3414,7 +3442,7 @@ class Calculation
 | 
			
		||||
        //        so we store the parent cell collection so that we can re-attach it when necessary
 | 
			
		||||
        $pCellWorksheet = ($pCell !== null) ? $pCell->getWorksheet() : null;
 | 
			
		||||
        $pCellParent = ($pCell !== null) ? $pCell->getParent() : null;
 | 
			
		||||
        $stack = new Calculation\Token\Stack();
 | 
			
		||||
        $stack = new Stack();
 | 
			
		||||
 | 
			
		||||
        //    Loop through each token in turn
 | 
			
		||||
        foreach ($tokens as $tokenData) {
 | 
			
		||||
@ -3770,9 +3798,6 @@ class Calculation
 | 
			
		||||
        $output = $stack->pop();
 | 
			
		||||
        $output = $output['value'];
 | 
			
		||||
 | 
			
		||||
//        if ((is_array($output)) && (self::$returnArrayAsType != self::RETURN_ARRAY_AS_ARRAY)) {
 | 
			
		||||
//            return array_shift(Calculation\Functions::flattenArray($output));
 | 
			
		||||
//        }
 | 
			
		||||
        return $output;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -3814,7 +3839,17 @@ class Calculation
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private function executeBinaryComparisonOperation($cellID, $operand1, $operand2, $operation, &$stack, $recursingArrays = false)
 | 
			
		||||
    /**
 | 
			
		||||
     * @param string|null $cellID
 | 
			
		||||
     * @param mixed $operand1
 | 
			
		||||
     * @param mixed $operand2
 | 
			
		||||
     * @param string $operation
 | 
			
		||||
     * @param Stack $stack
 | 
			
		||||
     * @param bool $recursingArrays
 | 
			
		||||
     *
 | 
			
		||||
     * @return bool
 | 
			
		||||
     */
 | 
			
		||||
    private function executeBinaryComparisonOperation($cellID, $operand1, $operand2, $operation, Stack &$stack, $recursingArrays = false)
 | 
			
		||||
    {
 | 
			
		||||
        //    If we're dealing with matrix operations, we want a matrix result
 | 
			
		||||
        if ((is_array($operand1)) || (is_array($operand2))) {
 | 
			
		||||
@ -3954,7 +3989,7 @@ class Calculation
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param string $matrixFunction
 | 
			
		||||
     * @param mixed $cellID
 | 
			
		||||
     * @param string|null $cellID
 | 
			
		||||
     * @param mixed $operand1
 | 
			
		||||
     * @param mixed $operand2
 | 
			
		||||
     * @param mixed $operation
 | 
			
		||||
 | 
			
		||||
@ -2293,7 +2293,7 @@ class Engineering
 | 
			
		||||
     * Excel Function:
 | 
			
		||||
     *        IMSUM(complexNumber[,complexNumber[,...]])
 | 
			
		||||
     *
 | 
			
		||||
     * @param string $complexNumbers Series of complex numbers to add
 | 
			
		||||
     * @param string ...$complexNumbers Series of complex numbers to add
 | 
			
		||||
     *
 | 
			
		||||
     * @return string
 | 
			
		||||
     */
 | 
			
		||||
@ -2333,7 +2333,7 @@ class Engineering
 | 
			
		||||
     * Excel Function:
 | 
			
		||||
     *        IMPRODUCT(complexNumber[,complexNumber[,...]])
 | 
			
		||||
     *
 | 
			
		||||
     * @param string $complexNumbers Series of complex numbers to multiply
 | 
			
		||||
     * @param string ...$complexNumbers Series of complex numbers to multiply
 | 
			
		||||
     *
 | 
			
		||||
     * @return string
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
@ -80,7 +80,7 @@ class Logical
 | 
			
		||||
     *
 | 
			
		||||
     * @category Logical Functions
 | 
			
		||||
     *
 | 
			
		||||
     * @param mixed $args Data values
 | 
			
		||||
     * @param mixed ...$args Data values
 | 
			
		||||
     *
 | 
			
		||||
     * @return string|bool the logical AND of the arguments
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
@ -347,7 +347,7 @@ class MathTrig
 | 
			
		||||
     *
 | 
			
		||||
     * @category Mathematical and Trigonometric Functions
 | 
			
		||||
     *
 | 
			
		||||
     * @param mixed $args Data values
 | 
			
		||||
     * @param mixed ...$args Data values
 | 
			
		||||
     *
 | 
			
		||||
     * @return int Greatest Common Divisor
 | 
			
		||||
     */
 | 
			
		||||
@ -456,7 +456,7 @@ class MathTrig
 | 
			
		||||
     *
 | 
			
		||||
     * @category Mathematical and Trigonometric Functions
 | 
			
		||||
     *
 | 
			
		||||
     * @param mixed $args Data values
 | 
			
		||||
     * @param mixed ...$args Data values
 | 
			
		||||
     *
 | 
			
		||||
     * @return int Lowest Common Multiplier
 | 
			
		||||
     */
 | 
			
		||||
@ -859,7 +859,7 @@ class MathTrig
 | 
			
		||||
     *
 | 
			
		||||
     * @category Mathematical and Trigonometric Functions
 | 
			
		||||
     *
 | 
			
		||||
     * @param mixed $args Data values
 | 
			
		||||
     * @param mixed ...$args Data values
 | 
			
		||||
     *
 | 
			
		||||
     * @return float
 | 
			
		||||
     */
 | 
			
		||||
@ -899,7 +899,7 @@ class MathTrig
 | 
			
		||||
     *
 | 
			
		||||
     * @category Mathematical and Trigonometric Functions
 | 
			
		||||
     *
 | 
			
		||||
     * @param mixed $args Data values
 | 
			
		||||
     * @param mixed ...$args Data values
 | 
			
		||||
     *
 | 
			
		||||
     * @return float
 | 
			
		||||
     */
 | 
			
		||||
@ -1185,7 +1185,7 @@ class MathTrig
 | 
			
		||||
     *
 | 
			
		||||
     * @category Mathematical and Trigonometric Functions
 | 
			
		||||
     *
 | 
			
		||||
     * @param mixed $args Data values
 | 
			
		||||
     * @param mixed ...$args Data values
 | 
			
		||||
     *
 | 
			
		||||
     * @return float
 | 
			
		||||
     */
 | 
			
		||||
@ -1306,7 +1306,7 @@ class MathTrig
 | 
			
		||||
     *
 | 
			
		||||
     * @category Mathematical and Trigonometric Functions
 | 
			
		||||
     *
 | 
			
		||||
     * @param mixed $args Data values
 | 
			
		||||
     * @param mixed ...$args Data values
 | 
			
		||||
     *
 | 
			
		||||
     * @return float
 | 
			
		||||
     */
 | 
			
		||||
@ -1351,7 +1351,7 @@ class MathTrig
 | 
			
		||||
     *
 | 
			
		||||
     * @category Mathematical and Trigonometric Functions
 | 
			
		||||
     *
 | 
			
		||||
     * @param mixed $args Data values
 | 
			
		||||
     * @param mixed ...$args Data values
 | 
			
		||||
     *
 | 
			
		||||
     * @return float
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
@ -720,7 +720,7 @@ class Statistical
 | 
			
		||||
     *
 | 
			
		||||
     * @category Statistical Functions
 | 
			
		||||
     *
 | 
			
		||||
     * @param mixed $args Data values
 | 
			
		||||
     * @param mixed ...$args Data values
 | 
			
		||||
     *
 | 
			
		||||
     * @return float
 | 
			
		||||
     */
 | 
			
		||||
@ -771,7 +771,7 @@ class Statistical
 | 
			
		||||
     *
 | 
			
		||||
     * @category Statistical Functions
 | 
			
		||||
     *
 | 
			
		||||
     * @param mixed $args Data values
 | 
			
		||||
     * @param mixed ...$args Data values
 | 
			
		||||
     *
 | 
			
		||||
     * @return float
 | 
			
		||||
     */
 | 
			
		||||
@ -814,7 +814,7 @@ class Statistical
 | 
			
		||||
     *
 | 
			
		||||
     * @category Statistical Functions
 | 
			
		||||
     *
 | 
			
		||||
     * @param mixed $args Data values
 | 
			
		||||
     * @param mixed ...$args Data values
 | 
			
		||||
     *
 | 
			
		||||
     * @return float
 | 
			
		||||
     */
 | 
			
		||||
@ -1207,7 +1207,7 @@ class Statistical
 | 
			
		||||
     *
 | 
			
		||||
     * @category Statistical Functions
 | 
			
		||||
     *
 | 
			
		||||
     * @param mixed $args Data values
 | 
			
		||||
     * @param mixed ...$args Data values
 | 
			
		||||
     *
 | 
			
		||||
     * @return int
 | 
			
		||||
     */
 | 
			
		||||
@ -1241,7 +1241,7 @@ class Statistical
 | 
			
		||||
     *
 | 
			
		||||
     * @category Statistical Functions
 | 
			
		||||
     *
 | 
			
		||||
     * @param mixed $args Data values
 | 
			
		||||
     * @param mixed ...$args Data values
 | 
			
		||||
     *
 | 
			
		||||
     * @return int
 | 
			
		||||
     */
 | 
			
		||||
@ -1271,7 +1271,7 @@ class Statistical
 | 
			
		||||
     *
 | 
			
		||||
     * @category Statistical Functions
 | 
			
		||||
     *
 | 
			
		||||
     * @param mixed $args Data values
 | 
			
		||||
     * @param mixed ...$args Data values
 | 
			
		||||
     *
 | 
			
		||||
     * @return int
 | 
			
		||||
     */
 | 
			
		||||
@ -1491,7 +1491,7 @@ class Statistical
 | 
			
		||||
     *
 | 
			
		||||
     * @category Statistical Functions
 | 
			
		||||
     *
 | 
			
		||||
     * @param mixed $args Data values
 | 
			
		||||
     * @param mixed ...$args Data values
 | 
			
		||||
     *
 | 
			
		||||
     * @return float
 | 
			
		||||
     */
 | 
			
		||||
@ -1785,7 +1785,7 @@ class Statistical
 | 
			
		||||
     *
 | 
			
		||||
     * @category Statistical Functions
 | 
			
		||||
     *
 | 
			
		||||
     * @param mixed $args Data values
 | 
			
		||||
     * @param mixed ...$args Data values
 | 
			
		||||
     *
 | 
			
		||||
     * @return float
 | 
			
		||||
     */
 | 
			
		||||
@ -1851,7 +1851,7 @@ class Statistical
 | 
			
		||||
     *
 | 
			
		||||
     * @category Statistical Functions
 | 
			
		||||
     *
 | 
			
		||||
     * @param mixed $args Data values
 | 
			
		||||
     * @param mixed ...$args Data values
 | 
			
		||||
     *
 | 
			
		||||
     * @return float
 | 
			
		||||
     */
 | 
			
		||||
@ -1967,7 +1967,7 @@ class Statistical
 | 
			
		||||
     * kurtosis indicates a relatively peaked distribution. Negative kurtosis indicates a
 | 
			
		||||
     * relatively flat distribution.
 | 
			
		||||
     *
 | 
			
		||||
     * @param array Data Series
 | 
			
		||||
     * @param array ...$args Data Series
 | 
			
		||||
     *
 | 
			
		||||
     * @return float
 | 
			
		||||
     */
 | 
			
		||||
@ -2249,7 +2249,7 @@ class Statistical
 | 
			
		||||
     *
 | 
			
		||||
     * @category Statistical Functions
 | 
			
		||||
     *
 | 
			
		||||
     * @param mixed $args Data values
 | 
			
		||||
     * @param mixed ...$args Data values
 | 
			
		||||
     *
 | 
			
		||||
     * @return float
 | 
			
		||||
     */
 | 
			
		||||
@ -2285,7 +2285,7 @@ class Statistical
 | 
			
		||||
     *
 | 
			
		||||
     * @category Statistical Functions
 | 
			
		||||
     *
 | 
			
		||||
     * @param mixed $args Data values
 | 
			
		||||
     * @param mixed ...$args Data values
 | 
			
		||||
     *
 | 
			
		||||
     * @return float
 | 
			
		||||
     */
 | 
			
		||||
@ -2368,7 +2368,7 @@ class Statistical
 | 
			
		||||
     *
 | 
			
		||||
     * @category Statistical Functions
 | 
			
		||||
     *
 | 
			
		||||
     * @param mixed $args Data values
 | 
			
		||||
     * @param mixed ...$args Data values
 | 
			
		||||
     *
 | 
			
		||||
     * @return float
 | 
			
		||||
     */
 | 
			
		||||
@ -2412,7 +2412,7 @@ class Statistical
 | 
			
		||||
     *
 | 
			
		||||
     * @category Statistical Functions
 | 
			
		||||
     *
 | 
			
		||||
     * @param mixed $args Data values
 | 
			
		||||
     * @param mixed ...$args Data values
 | 
			
		||||
     *
 | 
			
		||||
     * @return float
 | 
			
		||||
     */
 | 
			
		||||
@ -2448,7 +2448,7 @@ class Statistical
 | 
			
		||||
     *
 | 
			
		||||
     * @category Statistical Functions
 | 
			
		||||
     *
 | 
			
		||||
     * @param mixed $args Data values
 | 
			
		||||
     * @param mixed ...$args Data values
 | 
			
		||||
     *
 | 
			
		||||
     * @return float
 | 
			
		||||
     */
 | 
			
		||||
@ -2568,7 +2568,7 @@ class Statistical
 | 
			
		||||
     *
 | 
			
		||||
     * @category Statistical Functions
 | 
			
		||||
     *
 | 
			
		||||
     * @param mixed $args Data values
 | 
			
		||||
     * @param mixed ...$args Data values
 | 
			
		||||
     *
 | 
			
		||||
     * @return float
 | 
			
		||||
     */
 | 
			
		||||
@ -3016,7 +3016,7 @@ class Statistical
 | 
			
		||||
     * asymmetric tail extending toward more positive values. Negative skewness indicates a
 | 
			
		||||
     * distribution with an asymmetric tail extending toward more negative values.
 | 
			
		||||
     *
 | 
			
		||||
     * @param array Data Series
 | 
			
		||||
     * @param array ...$args Data Series
 | 
			
		||||
     *
 | 
			
		||||
     * @return float
 | 
			
		||||
     */
 | 
			
		||||
@ -3161,7 +3161,7 @@ class Statistical
 | 
			
		||||
     *
 | 
			
		||||
     * @category Statistical Functions
 | 
			
		||||
     *
 | 
			
		||||
     * @param mixed $args Data values
 | 
			
		||||
     * @param mixed ...$args Data values
 | 
			
		||||
     *
 | 
			
		||||
     * @return float
 | 
			
		||||
     */
 | 
			
		||||
@ -3210,7 +3210,7 @@ class Statistical
 | 
			
		||||
     *
 | 
			
		||||
     * @category Statistical Functions
 | 
			
		||||
     *
 | 
			
		||||
     * @param mixed $args Data values
 | 
			
		||||
     * @param mixed ...$args Data values
 | 
			
		||||
     *
 | 
			
		||||
     * @return float
 | 
			
		||||
     */
 | 
			
		||||
@ -3262,7 +3262,7 @@ class Statistical
 | 
			
		||||
     *
 | 
			
		||||
     * @category Statistical Functions
 | 
			
		||||
     *
 | 
			
		||||
     * @param mixed $args Data values
 | 
			
		||||
     * @param mixed ...$args Data values
 | 
			
		||||
     *
 | 
			
		||||
     * @return float
 | 
			
		||||
     */
 | 
			
		||||
@ -3309,7 +3309,7 @@ class Statistical
 | 
			
		||||
     *
 | 
			
		||||
     * @category Statistical Functions
 | 
			
		||||
     *
 | 
			
		||||
     * @param mixed $args Data values
 | 
			
		||||
     * @param mixed ...$args Data values
 | 
			
		||||
     *
 | 
			
		||||
     * @return float
 | 
			
		||||
     */
 | 
			
		||||
@ -3599,7 +3599,7 @@ class Statistical
 | 
			
		||||
     *
 | 
			
		||||
     * @category Statistical Functions
 | 
			
		||||
     *
 | 
			
		||||
     * @param mixed $args Data values
 | 
			
		||||
     * @param mixed ...$args Data values
 | 
			
		||||
     *
 | 
			
		||||
     * @return float
 | 
			
		||||
     */
 | 
			
		||||
@ -3643,7 +3643,7 @@ class Statistical
 | 
			
		||||
     *
 | 
			
		||||
     * @category Statistical Functions
 | 
			
		||||
     *
 | 
			
		||||
     * @param mixed $args Data values
 | 
			
		||||
     * @param mixed ...$args Data values
 | 
			
		||||
     *
 | 
			
		||||
     * @return float
 | 
			
		||||
     */
 | 
			
		||||
@ -3696,7 +3696,7 @@ class Statistical
 | 
			
		||||
     *
 | 
			
		||||
     * @category Statistical Functions
 | 
			
		||||
     *
 | 
			
		||||
     * @param mixed $args Data values
 | 
			
		||||
     * @param mixed ...$args Data values
 | 
			
		||||
     *
 | 
			
		||||
     * @return float
 | 
			
		||||
     */
 | 
			
		||||
@ -3741,7 +3741,7 @@ class Statistical
 | 
			
		||||
     *
 | 
			
		||||
     * @category Statistical Functions
 | 
			
		||||
     *
 | 
			
		||||
     * @param mixed $args Data values
 | 
			
		||||
     * @param mixed ...$args Data values
 | 
			
		||||
     *
 | 
			
		||||
     * @return float
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
@ -351,7 +351,7 @@ class Gnumeric extends BaseReader implements IReader
 | 
			
		||||
            //    Use false for $updateFormulaCellReferences to prevent adjustment of worksheet references in formula
 | 
			
		||||
            //        cells... during the load, all formulae should be correct, and we're simply bringing the worksheet
 | 
			
		||||
            //        name in line with the formula, not the reverse
 | 
			
		||||
            $spreadsheet->getActiveSheet()->setTitle($worksheetName, false);
 | 
			
		||||
            $spreadsheet->getActiveSheet()->setTitle($worksheetName, false, false);
 | 
			
		||||
 | 
			
		||||
            if ((!$this->readDataOnly) && (isset($sheet->PrintInformation))) {
 | 
			
		||||
                if (isset($sheet->PrintInformation->Margins)) {
 | 
			
		||||
 | 
			
		||||
@ -317,7 +317,7 @@ class Html extends BaseReader implements IReader
 | 
			
		||||
                        break;
 | 
			
		||||
                    case 'title':
 | 
			
		||||
                        $this->processDomElement($child, $sheet, $row, $column, $cellContent);
 | 
			
		||||
                        $sheet->setTitle($cellContent);
 | 
			
		||||
                        $sheet->setTitle($cellContent, true, false);
 | 
			
		||||
                        $cellContent = '';
 | 
			
		||||
                        break;
 | 
			
		||||
                    case 'span':
 | 
			
		||||
 | 
			
		||||
@ -440,7 +440,7 @@ class Ods extends BaseReader implements IReader
 | 
			
		||||
                    // Use false for $updateFormulaCellReferences to prevent adjustment of worksheet references in
 | 
			
		||||
                    // formula cells... during the load, all formulae should be correct, and we're simply
 | 
			
		||||
                    // bringing the worksheet name in line with the formula, not the reverse
 | 
			
		||||
                    $spreadsheet->getActiveSheet()->setTitle($worksheetName, false);
 | 
			
		||||
                    $spreadsheet->getActiveSheet()->setTitle($worksheetName, false, false);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                // Go through every child of table element
 | 
			
		||||
 | 
			
		||||
@ -808,7 +808,7 @@ class Xls extends BaseReader implements IReader
 | 
			
		||||
            //    Use false for $updateFormulaCellReferences to prevent adjustment of worksheet references in formula
 | 
			
		||||
            //        cells... during the load, all formulae should be correct, and we're simply bringing the worksheet
 | 
			
		||||
            //        name in line with the formula, not the reverse
 | 
			
		||||
            $this->phpSheet->setTitle($sheet['name'], false);
 | 
			
		||||
            $this->phpSheet->setTitle($sheet['name'], false, false);
 | 
			
		||||
            $this->phpSheet->setSheetState($sheet['sheetState']);
 | 
			
		||||
 | 
			
		||||
            $this->pos = $sheet['offset'];
 | 
			
		||||
 | 
			
		||||
@ -697,7 +697,7 @@ class Xlsx extends BaseReader implements IReader
 | 
			
		||||
                            //        references in formula cells... during the load, all formulae should be correct,
 | 
			
		||||
                            //        and we're simply bringing the worksheet name in line with the formula, not the
 | 
			
		||||
                            //        reverse
 | 
			
		||||
                            $docSheet->setTitle((string) $eleSheet['name'], false);
 | 
			
		||||
                            $docSheet->setTitle((string) $eleSheet['name'], false, false);
 | 
			
		||||
                            $fileWorksheet = $worksheets[(string) self::getArrayItem($eleSheet->attributes('http://schemas.openxmlformats.org/officeDocument/2006/relationships'), 'id')];
 | 
			
		||||
                            $xmlSheet = simplexml_load_string(
 | 
			
		||||
                                //~ http://schemas.openxmlformats.org/spreadsheetml/2006/main"
 | 
			
		||||
@ -766,7 +766,7 @@ class Xlsx extends BaseReader implements IReader
 | 
			
		||||
                                }
 | 
			
		||||
                            }
 | 
			
		||||
                            if (isset($xmlSheet->sheetPr) && isset($xmlSheet->sheetPr['codeName'])) {
 | 
			
		||||
                                $docSheet->setCodeName((string) $xmlSheet->sheetPr['codeName']);
 | 
			
		||||
                                $docSheet->setCodeName((string) $xmlSheet->sheetPr['codeName'], false);
 | 
			
		||||
                            }
 | 
			
		||||
                            if (isset($xmlSheet->sheetPr) && isset($xmlSheet->sheetPr->outlinePr)) {
 | 
			
		||||
                                if (isset($xmlSheet->sheetPr->outlinePr['summaryRight']) &&
 | 
			
		||||
 | 
			
		||||
@ -552,7 +552,7 @@ class Xml extends BaseReader implements IReader
 | 
			
		||||
                //    Use false for $updateFormulaCellReferences to prevent adjustment of worksheet references in
 | 
			
		||||
                //        formula cells... during the load, all formulae should be correct, and we're simply bringing
 | 
			
		||||
                //        the worksheet name in line with the formula, not the reverse
 | 
			
		||||
                $spreadsheet->getActiveSheet()->setTitle($worksheetName, false);
 | 
			
		||||
                $spreadsheet->getActiveSheet()->setTitle($worksheetName, false, false);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            $columnID = 'A';
 | 
			
		||||
 | 
			
		||||
@ -436,8 +436,6 @@ class SingularValueDecomposition
 | 
			
		||||
        } // end while
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 // end constructor
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Return the left singular vectors.
 | 
			
		||||
     *
 | 
			
		||||
 | 
			
		||||
@ -825,27 +825,30 @@ class Worksheet implements IComparable
 | 
			
		||||
     * Set title.
 | 
			
		||||
     *
 | 
			
		||||
     * @param string $pValue String containing the dimension of this worksheet
 | 
			
		||||
     * @param string $updateFormulaCellReferences boolean Flag indicating whether cell references in formulae should
 | 
			
		||||
     * @param bool $updateFormulaCellReferences Flag indicating whether cell references in formulae should
 | 
			
		||||
     *            be updated to reflect the new sheet name.
 | 
			
		||||
     *          This should be left as the default true, unless you are
 | 
			
		||||
     *          certain that no formula cells on any worksheet contain
 | 
			
		||||
     *          references to this worksheet
 | 
			
		||||
     * @param bool $validate False to skip validation of new title. WARNING: This should only be set
 | 
			
		||||
     *                       at parse time (by Readers), where titles can be assumed to be valid.
 | 
			
		||||
     *
 | 
			
		||||
     * @return Worksheet
 | 
			
		||||
     */
 | 
			
		||||
    public function setTitle($pValue, $updateFormulaCellReferences = true)
 | 
			
		||||
    public function setTitle($pValue, $updateFormulaCellReferences = true, $validate = true)
 | 
			
		||||
    {
 | 
			
		||||
        // Is this a 'rename' or not?
 | 
			
		||||
        if ($this->getTitle() == $pValue) {
 | 
			
		||||
            return $this;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Syntax check
 | 
			
		||||
        self::checkSheetTitle($pValue);
 | 
			
		||||
 | 
			
		||||
        // Old title
 | 
			
		||||
        $oldTitle = $this->getTitle();
 | 
			
		||||
 | 
			
		||||
        if ($validate) {
 | 
			
		||||
            // Syntax check
 | 
			
		||||
            self::checkSheetTitle($pValue);
 | 
			
		||||
 | 
			
		||||
            if ($this->parent) {
 | 
			
		||||
                // Is there already such sheet name?
 | 
			
		||||
                if ($this->parent->sheetNameExists($pValue)) {
 | 
			
		||||
@ -868,9 +871,8 @@ class Worksheet implements IComparable
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                $altTitle = $pValue . ' ' . $i;
 | 
			
		||||
 | 
			
		||||
                return $this->setTitle($altTitle, $updateFormulaCellReferences);
 | 
			
		||||
                    $pValue .= " $i";
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -1161,7 +1163,6 @@ class Worksheet implements IComparable
 | 
			
		||||
     * @param int $pRow Numeric row coordinate of the cell
 | 
			
		||||
     * @param mixed $pValue Value of the cell
 | 
			
		||||
     * @param string $pDataType Explicit data type, see Cell\DataType::TYPE_*
 | 
			
		||||
     * @param bool $returnCell Return the worksheet (false, default) or the cell (true)
 | 
			
		||||
     *
 | 
			
		||||
     * @return Worksheet
 | 
			
		||||
     */
 | 
			
		||||
@ -2976,20 +2977,25 @@ class Worksheet implements IComparable
 | 
			
		||||
    /**
 | 
			
		||||
     * Define the code name of the sheet.
 | 
			
		||||
     *
 | 
			
		||||
     * @param null|string Same rule as Title minus space not allowed (but, like Excel, change silently space to underscore)
 | 
			
		||||
     * @param null|mixed $pValue
 | 
			
		||||
     * @param string $pValue Same rule as Title minus space not allowed (but, like Excel, change
 | 
			
		||||
     *                       silently space to underscore)
 | 
			
		||||
     * @param bool $validate False to skip validation of new title. WARNING: This should only be set
 | 
			
		||||
     *                       at parse time (by Readers), where titles can be assumed to be valid.
 | 
			
		||||
     *
 | 
			
		||||
     * @throws Exception
 | 
			
		||||
     *
 | 
			
		||||
     * @return objWorksheet
 | 
			
		||||
     */
 | 
			
		||||
    public function setCodeName($pValue)
 | 
			
		||||
    public function setCodeName($pValue, $validate = true)
 | 
			
		||||
    {
 | 
			
		||||
        // Is this a 'rename' or not?
 | 
			
		||||
        if ($this->getCodeName() == $pValue) {
 | 
			
		||||
            return $this;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if ($validate) {
 | 
			
		||||
            $pValue = str_replace(' ', '_', $pValue); //Excel does this automatically without flinching, we are doing the same
 | 
			
		||||
 | 
			
		||||
            // Syntax check
 | 
			
		||||
            // throw an exception if not valid
 | 
			
		||||
            self::checkSheetCodeName($pValue);
 | 
			
		||||
@ -3019,8 +3025,7 @@ class Worksheet implements IComparable
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    $pValue = $pValue . '_' . $i; // ok, we have a valid name
 | 
			
		||||
                //codeName is'nt used in formula : no need to call for an update
 | 
			
		||||
                //return $this->setTitle($altTitle, $updateFormulaCellReferences);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -629,6 +629,7 @@ class AutoFilter
 | 
			
		||||
            $rules = $filterColumn->getRules();
 | 
			
		||||
            switch ($filterColumn->getFilterType()) {
 | 
			
		||||
                case AutoFilter\Column::AUTOFILTER_FILTERTYPE_FILTER:
 | 
			
		||||
                    $ruleType = null;
 | 
			
		||||
                    $ruleValues = [];
 | 
			
		||||
                    //    Build a list of the filter value selections
 | 
			
		||||
                    foreach ($rules as $rule) {
 | 
			
		||||
@ -700,7 +701,6 @@ class AutoFilter
 | 
			
		||||
                    $ruleValues = [];
 | 
			
		||||
                    //    Build a list of the filter value selections
 | 
			
		||||
                    foreach ($rules as $rule) {
 | 
			
		||||
                        $ruleType = $rule->getRuleType();
 | 
			
		||||
                        $ruleValue = $rule->getValue();
 | 
			
		||||
                        if (!is_numeric($ruleValue)) {
 | 
			
		||||
                            //    Convert to a regexp allowing for regexp reserved characters, wildcards and escaped wildcards
 | 
			
		||||
 | 
			
		||||
@ -306,7 +306,6 @@ class Worksheet extends WriterPart
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Selection
 | 
			
		||||
//      if ($pane != '') {
 | 
			
		||||
        // Only need to write selection element if we have a split pane
 | 
			
		||||
        // We cheat a little by over-riding the active cell selection, setting it to the split cell
 | 
			
		||||
        $objWriter->startElement('selection');
 | 
			
		||||
@ -316,7 +315,6 @@ class Worksheet extends WriterPart
 | 
			
		||||
        $objWriter->writeAttribute('activeCell', $activeCell);
 | 
			
		||||
        $objWriter->writeAttribute('sqref', $activeCell);
 | 
			
		||||
        $objWriter->endElement();
 | 
			
		||||
//      }
 | 
			
		||||
 | 
			
		||||
        $objWriter->endElement();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -10,11 +10,7 @@ class HTMLTest extends PHPUnit_Framework_TestCase
 | 
			
		||||
    public function testCsvWithAngleBracket()
 | 
			
		||||
    {
 | 
			
		||||
        $filename = __DIR__ . '/../../data/Reader/HTML/csv_with_angle_bracket.csv';
 | 
			
		||||
        $this->assertFalse($this->getInstance()->canRead($filename));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private function getInstance()
 | 
			
		||||
    {
 | 
			
		||||
        return new HTML();
 | 
			
		||||
        $reader = new Html();
 | 
			
		||||
        $this->assertFalse($reader->canRead($filename));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										126
									
								
								tests/PhpSpreadsheetTests/WorksheetTest.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										126
									
								
								tests/PhpSpreadsheetTests/WorksheetTest.php
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,126 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace PhpOffice\PhpSpreadsheetTests;
 | 
			
		||||
 | 
			
		||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
 | 
			
		||||
use PhpOffice\PhpSpreadsheet\Worksheet;
 | 
			
		||||
use PHPUnit_Framework_TestCase;
 | 
			
		||||
 | 
			
		||||
class WorksheetTest extends PHPUnit_Framework_TestCase
 | 
			
		||||
{
 | 
			
		||||
    public function testSetTitle()
 | 
			
		||||
    {
 | 
			
		||||
        $testTitle = str_repeat('a', 31);
 | 
			
		||||
 | 
			
		||||
        $worksheet = new Worksheet();
 | 
			
		||||
        $worksheet->setTitle($testTitle);
 | 
			
		||||
        $this->assertSame($testTitle, $worksheet->getTitle());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function setTitleInvalidProvider()
 | 
			
		||||
    {
 | 
			
		||||
        return [
 | 
			
		||||
            [str_repeat('a', 32), 'Maximum 31 characters allowed in sheet title.'],
 | 
			
		||||
            ['invalid*title', 'Invalid character found in sheet title'],
 | 
			
		||||
        ];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param string $title
 | 
			
		||||
     * @param string $expectMessage
 | 
			
		||||
     * @dataProvider setTitleInvalidProvider
 | 
			
		||||
     */
 | 
			
		||||
    public function testSetTitleInvalid($title, $expectMessage)
 | 
			
		||||
    {
 | 
			
		||||
        // First, test setting title with validation disabled -- should be successful
 | 
			
		||||
        $worksheet = new Worksheet();
 | 
			
		||||
        $worksheet->setTitle($title, true, false);
 | 
			
		||||
 | 
			
		||||
        // Next, test again with validation enabled -- this time we should fail
 | 
			
		||||
        $worksheet = new Worksheet();
 | 
			
		||||
        $this->expectException(\Exception::class);
 | 
			
		||||
        $this->expectExceptionMessage($expectMessage);
 | 
			
		||||
        $worksheet->setTitle($title);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testSetTitleDuplicate()
 | 
			
		||||
    {
 | 
			
		||||
        // Create a Spreadsheet with three Worksheets (the first is created automatically)
 | 
			
		||||
        $spreadsheet = new Spreadsheet();
 | 
			
		||||
        $spreadsheet->createSheet();
 | 
			
		||||
        $spreadsheet->createSheet();
 | 
			
		||||
 | 
			
		||||
        // Set unique title -- should be unchanged
 | 
			
		||||
        $sheet = $spreadsheet->getSheet(0);
 | 
			
		||||
        $sheet->setTitle('Test Title');
 | 
			
		||||
        $this->assertSame('Test Title', $sheet->getTitle());
 | 
			
		||||
 | 
			
		||||
        // Set duplicate title -- should have numeric suffix appended
 | 
			
		||||
        $sheet = $spreadsheet->getSheet(1);
 | 
			
		||||
        $sheet->setTitle('Test Title');
 | 
			
		||||
        $this->assertSame('Test Title 1', $sheet->getTitle());
 | 
			
		||||
 | 
			
		||||
        // Set duplicate title with validation disabled -- should be unchanged
 | 
			
		||||
        $sheet = $spreadsheet->getSheet(2);
 | 
			
		||||
        $sheet->setTitle('Test Title', true, false);
 | 
			
		||||
        $this->assertSame('Test Title', $sheet->getTitle());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testSetCodeName()
 | 
			
		||||
    {
 | 
			
		||||
        $testCodeName = str_repeat('a', 31);
 | 
			
		||||
 | 
			
		||||
        $worksheet = new Worksheet();
 | 
			
		||||
        $worksheet->setCodeName($testCodeName);
 | 
			
		||||
        $this->assertSame($testCodeName, $worksheet->getCodeName());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function setCodeNameInvalidProvider()
 | 
			
		||||
    {
 | 
			
		||||
        return [
 | 
			
		||||
            [str_repeat('a', 32), 'Maximum 31 characters allowed in sheet code name.'],
 | 
			
		||||
            ['invalid*code*name', 'Invalid character found in sheet code name'],
 | 
			
		||||
        ];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param string $codeName
 | 
			
		||||
     * @param string $expectMessage
 | 
			
		||||
     * @dataProvider setCodeNameInvalidProvider
 | 
			
		||||
     */
 | 
			
		||||
    public function testSetCodeNameInvalid($codeName, $expectMessage)
 | 
			
		||||
    {
 | 
			
		||||
        // First, test setting code name with validation disabled -- should be successful
 | 
			
		||||
        $worksheet = new Worksheet();
 | 
			
		||||
        $worksheet->setCodeName($codeName, false);
 | 
			
		||||
 | 
			
		||||
        // Next, test again with validation enabled -- this time we should fail
 | 
			
		||||
        $worksheet = new Worksheet();
 | 
			
		||||
        $this->expectException(\Exception::class);
 | 
			
		||||
        $this->expectExceptionMessage($expectMessage);
 | 
			
		||||
        $worksheet->setCodeName($codeName);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testSetCodeNameDuplicate()
 | 
			
		||||
    {
 | 
			
		||||
        // Create a Spreadsheet with three Worksheets (the first is created automatically)
 | 
			
		||||
        $spreadsheet = new Spreadsheet();
 | 
			
		||||
        $spreadsheet->createSheet();
 | 
			
		||||
        $spreadsheet->createSheet();
 | 
			
		||||
 | 
			
		||||
        // Set unique code name -- should be massaged to Snake_Case
 | 
			
		||||
        $sheet = $spreadsheet->getSheet(0);
 | 
			
		||||
        $sheet->setCodeName('Test Code Name');
 | 
			
		||||
        $this->assertSame('Test_Code_Name', $sheet->getCodeName());
 | 
			
		||||
 | 
			
		||||
        // Set duplicate code name -- should be massaged and have numeric suffix appended
 | 
			
		||||
        $sheet = $spreadsheet->getSheet(1);
 | 
			
		||||
        $sheet->setCodeName('Test Code Name');
 | 
			
		||||
        $this->assertSame('Test_Code_Name_1', $sheet->getCodeName());
 | 
			
		||||
 | 
			
		||||
        // Set duplicate code name with validation disabled -- should be unchanged, and unmassaged
 | 
			
		||||
        $sheet = $spreadsheet->getSheet(2);
 | 
			
		||||
        $sheet->setCodeName('Test Code Name', false);
 | 
			
		||||
        $this->assertSame('Test Code Name', $sheet->getCodeName());
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user