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));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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