diff --git a/samples/Header.php b/samples/Header.php
index bb14f520..fb8bd986 100644
--- a/samples/Header.php
+++ b/samples/Header.php
@@ -15,15 +15,17 @@ if ($helper->isCli()) {
return;
}
?>
-
getPageTitle(); ?>
-
-
-
-
-
-
-
-
+
+
+ getPageTitle(); ?>
+
+
+
+
+
+
+
+
diff --git a/src/PhpSpreadsheet/Calculation.php b/src/PhpSpreadsheet/Calculation.php
index f41c1489..b755667a 100644
--- a/src/PhpSpreadsheet/Calculation.php
+++ b/src/PhpSpreadsheet/Calculation.php
@@ -3800,7 +3800,7 @@ class Calculation
return $output;
}
- private function validateBinaryOperand($cellID, &$operand, &$stack)
+ private function validateBinaryOperand(&$operand, &$stack)
{
if (is_array($operand)) {
if ((count($operand, COUNT_RECURSIVE) - count($operand)) == 1) {
@@ -4002,10 +4002,10 @@ class Calculation
private function executeNumericBinaryOperation($cellID, $operand1, $operand2, $operation, $matrixFunction, &$stack)
{
// Validate the two operands
- if (!$this->validateBinaryOperand($cellID, $operand1, $stack)) {
+ if (!$this->validateBinaryOperand($operand1, $stack)) {
return false;
}
- if (!$this->validateBinaryOperand($cellID, $operand2, $stack)) {
+ if (!$this->validateBinaryOperand($operand2, $stack)) {
return false;
}
diff --git a/src/PhpSpreadsheet/Calculation/ExceptionHandler.php b/src/PhpSpreadsheet/Calculation/ExceptionHandler.php
index 34986765..41e51d4a 100644
--- a/src/PhpSpreadsheet/Calculation/ExceptionHandler.php
+++ b/src/PhpSpreadsheet/Calculation/ExceptionHandler.php
@@ -2,8 +2,6 @@
namespace PhpOffice\PhpSpreadsheet\Calculation;
-use PhpOffice\PhpSpreadsheet\Calculation\Exception as CalculationException;
-
class ExceptionHandler
{
/**
@@ -11,7 +9,7 @@ class ExceptionHandler
*/
public function __construct()
{
- set_error_handler([CalculationException::class, 'errorHandlerCallback'], E_ALL);
+ set_error_handler([Exception::class, 'errorHandlerCallback'], E_ALL);
}
/**
diff --git a/src/PhpSpreadsheet/Calculation/Financial.php b/src/PhpSpreadsheet/Calculation/Financial.php
index 91890c22..27fcd616 100644
--- a/src/PhpSpreadsheet/Calculation/Financial.php
+++ b/src/PhpSpreadsheet/Calculation/Financial.php
@@ -24,20 +24,6 @@ class Financial
return $testDate->format('d') == $testDate->format('t');
}
- /**
- * isFirstDayOfMonth.
- *
- * Returns a boolean TRUE/FALSE indicating if this date is the first date of the month
- *
- * @param DateTime $testDate The date for testing
- *
- * @return bool
- */
- private static function isFirstDayOfMonth($testDate)
- {
- return $testDate->format('d') == 1;
- }
-
private static function couponFirstPeriodDate($settlement, $maturity, $frequency, $next)
{
$months = 12 / $frequency;
@@ -542,8 +528,6 @@ class Financial
// US (NASD) 30/360, Actual/360 or European 30/360
return 360 / $frequency;
}
-
- return Functions::VALUE();
}
/**
diff --git a/src/PhpSpreadsheet/Calculation/Statistical.php b/src/PhpSpreadsheet/Calculation/Statistical.php
index 50631b5c..9e0fe1cb 100644
--- a/src/PhpSpreadsheet/Calculation/Statistical.php
+++ b/src/PhpSpreadsheet/Calculation/Statistical.php
@@ -41,27 +41,6 @@ class Statistical
return true;
}
- /**
- * Beta function.
- *
- * @author Jaco van Kooten
- *
- * @param p require p>0
- * @param q require q>0
- * @param mixed $p
- * @param mixed $q
- *
- * @return 0 if p<=0, q<=0 or p+q>2.55E305 to avoid errors and over/underflow
- */
- private static function beta($p, $q)
- {
- if ($p <= 0.0 || $q <= 0.0 || ($p + $q) > self::LOG_GAMMA_X_MAX_VALUE) {
- return 0.0;
- }
-
- return exp(self::logBeta($p, $q));
- }
-
/**
* Incomplete beta function.
*
@@ -540,153 +519,6 @@ class Statistical
return Functions::NULL();
}
- private static function inverseNcdf2($prob)
- {
- // Approximation of inverse standard normal CDF developed by
- // B. Moro, "The Full Monte," Risk 8(2), Feb 1995, 57-58.
-
- $a1 = 2.50662823884;
- $a2 = -18.61500062529;
- $a3 = 41.39119773534;
- $a4 = -25.44106049637;
-
- $b1 = -8.4735109309;
- $b2 = 23.08336743743;
- $b3 = -21.06224101826;
- $b4 = 3.13082909833;
-
- $c1 = 0.337475482272615;
- $c2 = 0.976169019091719;
- $c3 = 0.160797971491821;
- $c4 = 2.76438810333863E-02;
- $c5 = 3.8405729373609E-03;
- $c6 = 3.951896511919E-04;
- $c7 = 3.21767881768E-05;
- $c8 = 2.888167364E-07;
- $c9 = 3.960315187E-07;
-
- $y = $prob - 0.5;
- if (abs($y) < 0.42) {
- $z = ($y * $y);
- $z = $y * ((($a4 * $z + $a3) * $z + $a2) * $z + $a1) / (((($b4 * $z + $b3) * $z + $b2) * $z + $b1) * $z + 1);
- } else {
- if ($y > 0) {
- $z = log(-log(1 - $prob));
- } else {
- $z = log(-log($prob));
- }
- $z = $c1 + $z * ($c2 + $z * ($c3 + $z * ($c4 + $z * ($c5 + $z * ($c6 + $z * ($c7 + $z * ($c8 + $z * $c9)))))));
- if ($y < 0) {
- $z = -$z;
- }
- }
-
- return $z;
- }
-
- // function inverseNcdf2()
-
- private static function inverseNcdf3($p)
- {
- // ALGORITHM AS241 APPL. STATIST. (1988) VOL. 37, NO. 3.
- // Produces the normal deviate Z corresponding to a given lower
- // tail area of P; Z is accurate to about 1 part in 10**16.
- //
- // This is a PHP version of the original FORTRAN code that can
- // be found at http://lib.stat.cmu.edu/apstat/
- $split1 = 0.425;
- $split2 = 5;
- $const1 = 0.180625;
- $const2 = 1.6;
-
- // coefficients for p close to 0.5
- $a0 = 3.3871328727963666080;
- $a1 = 1.3314166789178437745E+2;
- $a2 = 1.9715909503065514427E+3;
- $a3 = 1.3731693765509461125E+4;
- $a4 = 4.5921953931549871457E+4;
- $a5 = 6.7265770927008700853E+4;
- $a6 = 3.3430575583588128105E+4;
- $a7 = 2.5090809287301226727E+3;
-
- $b1 = 4.2313330701600911252E+1;
- $b2 = 6.8718700749205790830E+2;
- $b3 = 5.3941960214247511077E+3;
- $b4 = 2.1213794301586595867E+4;
- $b5 = 3.9307895800092710610E+4;
- $b6 = 2.8729085735721942674E+4;
- $b7 = 5.2264952788528545610E+3;
-
- // coefficients for p not close to 0, 0.5 or 1.
- $c0 = 1.42343711074968357734;
- $c1 = 4.63033784615654529590;
- $c2 = 5.76949722146069140550;
- $c3 = 3.64784832476320460504;
- $c4 = 1.27045825245236838258;
- $c5 = 2.41780725177450611770E-1;
- $c6 = 2.27238449892691845833E-2;
- $c7 = 7.74545014278341407640E-4;
-
- $d1 = 2.05319162663775882187;
- $d2 = 1.67638483018380384940;
- $d3 = 6.89767334985100004550E-1;
- $d4 = 1.48103976427480074590E-1;
- $d5 = 1.51986665636164571966E-2;
- $d6 = 5.47593808499534494600E-4;
- $d7 = 1.05075007164441684324E-9;
-
- // coefficients for p near 0 or 1.
- $e0 = 6.65790464350110377720;
- $e1 = 5.46378491116411436990;
- $e2 = 1.78482653991729133580;
- $e3 = 2.96560571828504891230E-1;
- $e4 = 2.65321895265761230930E-2;
- $e5 = 1.24266094738807843860E-3;
- $e6 = 2.71155556874348757815E-5;
- $e7 = 2.01033439929228813265E-7;
-
- $f1 = 5.99832206555887937690E-1;
- $f2 = 1.36929880922735805310E-1;
- $f3 = 1.48753612908506148525E-2;
- $f4 = 7.86869131145613259100E-4;
- $f5 = 1.84631831751005468180E-5;
- $f6 = 1.42151175831644588870E-7;
- $f7 = 2.04426310338993978564E-15;
-
- $q = $p - 0.5;
-
- // computation for p close to 0.5
- if (abs($q) <= split1) {
- $R = $const1 - $q * $q;
- $z = $q * ((((((($a7 * $R + $a6) * $R + $a5) * $R + $a4) * $R + $a3) * $R + $a2) * $R + $a1) * $R + $a0) /
- ((((((($b7 * $R + $b6) * $R + $b5) * $R + $b4) * $R + $b3) * $R + $b2) * $R + $b1) * $R + 1);
- } else {
- if ($q < 0) {
- $R = $p;
- } else {
- $R = 1 - $p;
- }
- $R = pow(-log($R), 2);
-
- // computation for p not close to 0, 0.5 or 1.
- if ($R <= $split2) {
- $R = $R - $const2;
- $z = ((((((($c7 * $R + $c6) * $R + $c5) * $R + $c4) * $R + $c3) * $R + $c2) * $R + $c1) * $R + $c0) /
- ((((((($d7 * $R + $d6) * $R + $d5) * $R + $d4) * $R + $d3) * $R + $d2) * $R + $d1) * $R + 1);
- } else {
- // computation for p near 0 or 1.
- $R = $R - $split2;
- $z = ((((((($e7 * $R + $e6) * $R + $e5) * $R + $e4) * $R + $e3) * $R + $e2) * $R + $e1) * $R + $e0) /
- ((((((($f7 * $R + $f6) * $R + $f5) * $R + $f4) * $R + $f3) * $R + $f2) * $R + $f1) * $R + 1);
- }
- if ($q < 0) {
- $z = -$z;
- }
- }
-
- return $z;
- }
-
/**
* AVEDEV.
*
diff --git a/src/PhpSpreadsheet/Chart/Exception.php b/src/PhpSpreadsheet/Chart/Exception.php
index 8947b728..3f95b599 100644
--- a/src/PhpSpreadsheet/Chart/Exception.php
+++ b/src/PhpSpreadsheet/Chart/Exception.php
@@ -6,21 +6,4 @@ use PhpOffice\PhpSpreadsheet\Exception as PhpSpreadsheetException;
class Exception extends PhpSpreadsheetException
{
- /**
- * Error handler callback.
- *
- * @param mixed $code
- * @param mixed $string
- * @param mixed $file
- * @param mixed $line
- * @param mixed $context
- */
- public static function errorHandlerCallback($code, $string, $file, $line, $context)
- {
- $e = new self($string, $code);
- $e->line = $line;
- $e->file = $file;
-
- throw $e;
- }
}
diff --git a/src/PhpSpreadsheet/Chart/Properties.php b/src/PhpSpreadsheet/Chart/Properties.php
index 2a3c03d8..07b8cf52 100644
--- a/src/PhpSpreadsheet/Chart/Properties.php
+++ b/src/PhpSpreadsheet/Chart/Properties.php
@@ -355,11 +355,11 @@ abstract class Properties
if (!is_array($elements)) {
return $reference[$elements];
}
+
foreach ($elements as $keys) {
$reference = &$reference[$keys];
}
return $reference;
- return $this;
}
}
diff --git a/src/PhpSpreadsheet/Exception.php b/src/PhpSpreadsheet/Exception.php
index 1c8be172..9c5ab30e 100644
--- a/src/PhpSpreadsheet/Exception.php
+++ b/src/PhpSpreadsheet/Exception.php
@@ -4,21 +4,4 @@ namespace PhpOffice\PhpSpreadsheet;
class Exception extends \Exception
{
- /**
- * Error handler callback.
- *
- * @param mixed $code
- * @param mixed $string
- * @param mixed $file
- * @param mixed $line
- * @param mixed $context
- */
- public static function errorHandlerCallback($code, $string, $file, $line, $context)
- {
- $e = new self($string, $code);
- $e->line = $line;
- $e->file = $file;
-
- throw $e;
- }
}
diff --git a/src/PhpSpreadsheet/Reader/Exception.php b/src/PhpSpreadsheet/Reader/Exception.php
index 54004132..ddbc9b51 100644
--- a/src/PhpSpreadsheet/Reader/Exception.php
+++ b/src/PhpSpreadsheet/Reader/Exception.php
@@ -6,21 +6,4 @@ use PhpOffice\PhpSpreadsheet\Exception as PhpSpreadsheetException;
class Exception extends PhpSpreadsheetException
{
- /**
- * Error handler callback.
- *
- * @param mixed $code
- * @param mixed $string
- * @param mixed $file
- * @param mixed $line
- * @param mixed $context
- */
- public static function errorHandlerCallback($code, $string, $file, $line, $context)
- {
- $e = new self($string, $code);
- $e->line = $line;
- $e->file = $file;
-
- throw $e;
- }
}
diff --git a/src/PhpSpreadsheet/Reader/Gnumeric.php b/src/PhpSpreadsheet/Reader/Gnumeric.php
index c766f400..2baf292c 100644
--- a/src/PhpSpreadsheet/Reader/Gnumeric.php
+++ b/src/PhpSpreadsheet/Reader/Gnumeric.php
@@ -20,13 +20,6 @@ use XMLReader;
class Gnumeric extends BaseReader implements IReader
{
- /**
- * Formats.
- *
- * @var array
- */
- private $styles = [];
-
/**
* Shared Expressions.
*
diff --git a/src/PhpSpreadsheet/Reader/Ods.php b/src/PhpSpreadsheet/Reader/Ods.php
index 39bba5f0..48edc43d 100644
--- a/src/PhpSpreadsheet/Reader/Ods.php
+++ b/src/PhpSpreadsheet/Reader/Ods.php
@@ -19,13 +19,6 @@ use ZipArchive;
class Ods extends BaseReader implements IReader
{
- /**
- * Formats.
- *
- * @var array
- */
- private $styles = [];
-
/**
* Create a new Ods Reader instance.
*/
@@ -213,7 +206,7 @@ class Ods extends BaseReader implements IReader
}
} elseif ($xml->name == 'table:covered-table-cell' && $xml->nodeType == XMLReader::ELEMENT) {
$mergeSize = $xml->getAttribute('table:number-columns-repeated');
- $currCells += $mergeSize;
+ $currCells += (int) $mergeSize;
$xml->read();
}
} while ($xml->name != 'table:table-row');
@@ -249,20 +242,6 @@ class Ods extends BaseReader implements IReader
return $this->loadIntoExisting($pFilename, $spreadsheet);
}
- private static function identifyFixedStyleValue($styleList, &$styleAttributeValue)
- {
- $styleAttributeValue = strtolower($styleAttributeValue);
- foreach ($styleList as $style) {
- if ($styleAttributeValue == strtolower($style)) {
- $styleAttributeValue = $style;
-
- return true;
- }
- }
-
- return false;
- }
-
/**
* Loads PhpSpreadsheet from file into PhpSpreadsheet instance.
*
diff --git a/src/PhpSpreadsheet/Reader/Xls.php b/src/PhpSpreadsheet/Reader/Xls.php
index 624ed1e4..fbb248da 100644
--- a/src/PhpSpreadsheet/Reader/Xls.php
+++ b/src/PhpSpreadsheet/Reader/Xls.php
@@ -164,13 +164,6 @@ class Xls extends BaseReader implements IReader
*/
private $documentSummaryInformation;
- /**
- * User-Defined Properties stream data.
- *
- * @var string
- */
- private $userDefinedProperties;
-
/**
* Workbook stream data. (Includes workbook globals substream as well as sheet substreams).
*
@@ -1043,7 +1036,6 @@ class Xls extends BaseReader implements IReader
$this->readNote();
break;
- //case self::XLS_TYPE_IMDATA: $this->readImData(); break;
case self::XLS_TYPE_TXO:
$this->readTextObject();
@@ -5187,80 +5179,6 @@ class Xls extends BaseReader implements IReader
}
}
- /**
- * Read IMDATA record.
- */
- private function readImData()
- {
- $length = self::getUInt2d($this->data, $this->pos + 2);
-
- // get spliced record data
- $splicedRecordData = $this->getSplicedRecordData();
- $recordData = $splicedRecordData['recordData'];
-
- // UNDER CONSTRUCTION
-
- // offset: 0; size: 2; image format
- $cf = self::getUInt2d($recordData, 0);
-
- // offset: 2; size: 2; environment from which the file was written
- $env = self::getUInt2d($recordData, 2);
-
- // offset: 4; size: 4; length of the image data
- $lcb = self::getInt4d($recordData, 4);
-
- // offset: 8; size: var; image data
- $iData = substr($recordData, 8);
-
- switch ($cf) {
- case 0x09: // Windows bitmap format
- // BITMAPCOREINFO
- // 1. BITMAPCOREHEADER
- // offset: 0; size: 4; bcSize, Specifies the number of bytes required by the structure
- $bcSize = self::getInt4d($iData, 0);
-
- // offset: 4; size: 2; bcWidth, specifies the width of the bitmap, in pixels
- $bcWidth = self::getUInt2d($iData, 4);
-
- // offset: 6; size: 2; bcHeight, specifies the height of the bitmap, in pixels.
- $bcHeight = self::getUInt2d($iData, 6);
- $ih = imagecreatetruecolor($bcWidth, $bcHeight);
-
- // offset: 8; size: 2; bcPlanes, specifies the number of planes for the target device. This value must be 1
-
- // offset: 10; size: 2; bcBitCount specifies the number of bits-per-pixel. This value must be 1, 4, 8, or 24
- $bcBitCount = self::getUInt2d($iData, 10);
-
- $rgbString = substr($iData, 12);
- $rgbTriples = [];
- while (strlen($rgbString) > 0) {
- $rgbTriples[] = unpack('Cb/Cg/Cr', $rgbString);
- $rgbString = substr($rgbString, 3);
- }
- $x = 0;
- $y = 0;
- foreach ($rgbTriples as $i => $rgbTriple) {
- $color = imagecolorallocate($ih, $rgbTriple['r'], $rgbTriple['g'], $rgbTriple['b']);
- imagesetpixel($ih, $x, $bcHeight - 1 - $y, $color);
- $x = ($x + 1) % $bcWidth;
- $y = $y + floor(($x + 1) / $bcWidth);
- }
- //imagepng($ih, 'image.png');
-
- $drawing = new Drawing();
- $drawing->setPath($filename);
- $drawing->setWorksheet($this->phpSheet);
-
- break;
- case 0x02: // Windows metafile or Macintosh PICT format
- case 0x0e: // native format
- default:
- break;
- }
-
- // getSplicedRecordData() takes care of moving current position in data stream
- }
-
/**
* Read a free CONTINUE record. Free CONTINUE record may be a camouflaged MSODRAWING record
* When MSODRAWING data on a sheet exceeds 8224 bytes, CONTINUE records are used instead. Undocumented.
diff --git a/src/PhpSpreadsheet/Reader/Xlsx.php b/src/PhpSpreadsheet/Reader/Xlsx.php
index 000f0424..ece5d1e6 100644
--- a/src/PhpSpreadsheet/Reader/Xlsx.php
+++ b/src/PhpSpreadsheet/Reader/Xlsx.php
@@ -247,7 +247,6 @@ class Xlsx extends BaseReader implements IReader
}
return (bool) $c->v;
- return $value;
}
private static function castToError($c)
diff --git a/src/PhpSpreadsheet/Reader/Xlsx/Theme.php b/src/PhpSpreadsheet/Reader/Xlsx/Theme.php
index 0892a862..c105f3c1 100644
--- a/src/PhpSpreadsheet/Reader/Xlsx/Theme.php
+++ b/src/PhpSpreadsheet/Reader/Xlsx/Theme.php
@@ -18,13 +18,6 @@ class Theme
*/
private $colourSchemeName;
- /**
- * Colour Map indexed by position.
- *
- * @var array of string
- */
- private $colourMapValues;
-
/**
* Colour Map.
*
diff --git a/src/PhpSpreadsheet/Reader/Xml.php b/src/PhpSpreadsheet/Reader/Xml.php
index 7773e7ac..cfd18388 100644
--- a/src/PhpSpreadsheet/Reader/Xml.php
+++ b/src/PhpSpreadsheet/Reader/Xml.php
@@ -236,7 +236,7 @@ class Xml extends BaseReader implements IReader
return $this->loadIntoExisting($pFilename, $spreadsheet);
}
- protected static function identifyFixedStyleValue($styleList, &$styleAttributeValue)
+ private static function identifyFixedStyleValue($styleList, &$styleAttributeValue)
{
$styleAttributeValue = strtolower($styleAttributeValue);
foreach ($styleList as $style) {
diff --git a/src/PhpSpreadsheet/Shared/JAMA/EigenvalueDecomposition.php b/src/PhpSpreadsheet/Shared/JAMA/EigenvalueDecomposition.php
index 00842c79..3e59bddd 100644
--- a/src/PhpSpreadsheet/Shared/JAMA/EigenvalueDecomposition.php
+++ b/src/PhpSpreadsheet/Shared/JAMA/EigenvalueDecomposition.php
@@ -31,13 +31,6 @@ class EigenvalueDecomposition
*/
private $n;
- /**
- * Internal symmetry flag.
- *
- * @var int
- */
- private $issymmetric;
-
/**
* Arrays for internal storage of eigenvalues.
*
diff --git a/src/PhpSpreadsheet/Shared/Trend/PolynomialBestFit.php b/src/PhpSpreadsheet/Shared/Trend/PolynomialBestFit.php
index cab4afcd..cfac30b4 100644
--- a/src/PhpSpreadsheet/Shared/Trend/PolynomialBestFit.php
+++ b/src/PhpSpreadsheet/Shared/Trend/PolynomialBestFit.php
@@ -122,9 +122,8 @@ class PolynomialBestFit extends BestFit
* @param int $order Order of Polynomial for this regression
* @param float[] $yValues The set of Y-values for this regression
* @param float[] $xValues The set of X-values for this regression
- * @param bool $const
*/
- private function polynomialRegression($order, $yValues, $xValues, $const)
+ private function polynomialRegression($order, $yValues, $xValues)
{
// calculate sums
$x_sum = array_sum($xValues);
@@ -156,7 +155,7 @@ class PolynomialBestFit extends BestFit
$C = $matrixA->solve($matrixB);
$coefficients = [];
- for ($i = 0; $i < $C->m; ++$i) {
+ for ($i = 0; $i < $C->getRowDimension(); ++$i) {
$r = $C->get($i, 0);
if (abs($r) <= pow(10, -9)) {
$r = 0;
@@ -187,7 +186,7 @@ class PolynomialBestFit extends BestFit
if ($order < $this->valueCount) {
$this->bestFitType .= '_' . $order;
$this->order = $order;
- $this->polynomialRegression($order, $yValues, $xValues, $const);
+ $this->polynomialRegression($order, $yValues, $xValues);
if (($this->getGoodnessOfFit() < 0.0) || ($this->getGoodnessOfFit() > 1.0)) {
$this->_error = true;
}
diff --git a/src/PhpSpreadsheet/Style/Border.php b/src/PhpSpreadsheet/Style/Border.php
index fdc251d7..bf405167 100644
--- a/src/PhpSpreadsheet/Style/Border.php
+++ b/src/PhpSpreadsheet/Style/Border.php
@@ -37,13 +37,6 @@ class Border extends Supervisor implements IComparable
*/
protected $color;
- /**
- * Parent property name.
- *
- * @var string
- */
- protected $parentPropertyName;
-
/**
* Create a new Border.
*
@@ -68,22 +61,6 @@ class Border extends Supervisor implements IComparable
}
}
- /**
- * Bind parent. Only used for supervisor.
- *
- * @param Borders $parent
- * @param string $parentPropertyName
- *
- * @return Border
- */
- public function bindParent($parent, $parentPropertyName = null)
- {
- $this->parent = $parent;
- $this->parentPropertyName = $parentPropertyName;
-
- return $this;
- }
-
/**
* Get the shared style component for the currently active cell in currently active sheet.
* Only used for style supervisor.
diff --git a/src/PhpSpreadsheet/Style/Color.php b/src/PhpSpreadsheet/Style/Color.php
index e30916a7..d1c8410d 100644
--- a/src/PhpSpreadsheet/Style/Color.php
+++ b/src/PhpSpreadsheet/Style/Color.php
@@ -33,13 +33,6 @@ class Color extends Supervisor implements IComparable
*/
protected $argb;
- /**
- * Parent property name.
- *
- * @var string
- */
- protected $parentPropertyName;
-
/**
* Create a new Color.
*
@@ -62,22 +55,6 @@ class Color extends Supervisor implements IComparable
}
}
- /**
- * Bind parent. Only used for supervisor.
- *
- * @param mixed $parent
- * @param string $parentPropertyName
- *
- * @return Color
- */
- public function bindParent($parent, $parentPropertyName = null)
- {
- $this->parent = $parent;
- $this->parentPropertyName = $parentPropertyName;
-
- return $this;
- }
-
/**
* Get the shared style component for the currently active cell in currently active sheet.
* Only used for style supervisor.
diff --git a/src/PhpSpreadsheet/Style/NumberFormat.php b/src/PhpSpreadsheet/Style/NumberFormat.php
index 119e15bf..3fc3696d 100644
--- a/src/PhpSpreadsheet/Style/NumberFormat.php
+++ b/src/PhpSpreadsheet/Style/NumberFormat.php
@@ -523,15 +523,15 @@ class NumberFormat extends Supervisor implements IComparable
}
}
- private static function complexNumberFormatMask($number, $mask, $level = 0)
+ private static function complexNumberFormatMask($number, $mask)
{
$sign = ($number < 0.0);
$number = abs($number);
if (strpos($mask, '.') !== false) {
$numbers = explode('.', $number . '.0');
$masks = explode('.', $mask . '.0');
- $result1 = self::complexNumberFormatMask($numbers[0], $masks[0], 1);
- $result2 = strrev(self::complexNumberFormatMask(strrev($numbers[1]), strrev($masks[1]), 1));
+ $result1 = self::complexNumberFormatMask($numbers[0], $masks[0]);
+ $result2 = strrev(self::complexNumberFormatMask(strrev($numbers[1]), strrev($masks[1])));
return (($sign) ? '-' : '') . $result1 . '.' . $result2;
}
diff --git a/src/PhpSpreadsheet/Style/Supervisor.php b/src/PhpSpreadsheet/Style/Supervisor.php
index a3b11a41..a82ab495 100644
--- a/src/PhpSpreadsheet/Style/Supervisor.php
+++ b/src/PhpSpreadsheet/Style/Supervisor.php
@@ -18,6 +18,13 @@ abstract class Supervisor
*/
protected $parent;
+ /**
+ * Parent property name.
+ *
+ * @var null|string
+ */
+ protected $parentPropertyName;
+
/**
* Create a new Supervisor.
*
@@ -35,13 +42,14 @@ abstract class Supervisor
* Bind parent. Only used for supervisor.
*
* @param Style $parent
- * @param null|mixed $parentPropertyName
+ * @param null|string $parentPropertyName
*
* @return Supervisor
*/
public function bindParent($parent, $parentPropertyName = null)
{
$this->parent = $parent;
+ $this->parentPropertyName = $parentPropertyName;
return $this;
}
diff --git a/src/PhpSpreadsheet/Writer/Exception.php b/src/PhpSpreadsheet/Writer/Exception.php
index 6dc4774e..92e6f5f4 100644
--- a/src/PhpSpreadsheet/Writer/Exception.php
+++ b/src/PhpSpreadsheet/Writer/Exception.php
@@ -6,21 +6,4 @@ use PhpOffice\PhpSpreadsheet\Exception as PhpSpreadsheetException;
class Exception extends PhpSpreadsheetException
{
- /**
- * Error handler callback.
- *
- * @param mixed $code
- * @param mixed $string
- * @param mixed $file
- * @param mixed $line
- * @param mixed $context
- */
- public static function errorHandlerCallback($code, $string, $file, $line, $context)
- {
- $e = new self($string, $code);
- $e->line = $line;
- $e->file = $file;
-
- throw $e;
- }
}
diff --git a/src/PhpSpreadsheet/Writer/Pdf/DomPDF.php b/src/PhpSpreadsheet/Writer/Pdf/DomPDF.php
index d24caf81..0c4b39e9 100644
--- a/src/PhpSpreadsheet/Writer/Pdf/DomPDF.php
+++ b/src/PhpSpreadsheet/Writer/Pdf/DomPDF.php
@@ -53,9 +53,9 @@ class DomPDF extends Core implements IWriter
// Create PDF
$pdf = new \Dompdf\Dompdf();
- $pdf->set_paper(strtolower($paperSize), $orientation);
+ $pdf->setPaper(strtolower($paperSize), $orientation);
- $pdf->load_html(
+ $pdf->loadHtml(
$this->generateHTMLHeader(false) .
$this->generateSheetData() .
$this->generateHTMLFooter()
diff --git a/src/PhpSpreadsheet/Writer/Xls/Parser.php b/src/PhpSpreadsheet/Writer/Xls/Parser.php
index e9150bee..cad13c61 100644
--- a/src/PhpSpreadsheet/Writer/Xls/Parser.php
+++ b/src/PhpSpreadsheet/Writer/Xls/Parser.php
@@ -734,50 +734,6 @@ class Parser
return pack('C', 0xFF);
}
- /**
- * Convert the sheet name part of an external reference, for example "Sheet1" or
- * "Sheet1:Sheet2", to a packed structure.
- *
- * @param string $ext_ref The name of the external reference
- *
- * @return string The reference index in packed() format
- */
- private function packExtRef($ext_ref)
- {
- $ext_ref = preg_replace("/^'/", '', $ext_ref); // Remove leading ' if any.
- $ext_ref = preg_replace("/'$/", '', $ext_ref); // Remove trailing ' if any.
-
- // Check if there is a sheet range eg., Sheet1:Sheet2.
- if (preg_match('/:/', $ext_ref)) {
- list($sheet_name1, $sheet_name2) = explode(':', $ext_ref);
-
- $sheet1 = $this->getSheetIndex($sheet_name1);
- if ($sheet1 == -1) {
- throw new WriterException("Unknown sheet name $sheet_name1 in formula");
- }
- $sheet2 = $this->getSheetIndex($sheet_name2);
- if ($sheet2 == -1) {
- throw new WriterException("Unknown sheet name $sheet_name2 in formula");
- }
-
- // Reverse max and min sheet numbers if necessary
- if ($sheet1 > $sheet2) {
- list($sheet1, $sheet2) = [$sheet2, $sheet1];
- }
- } else { // Single sheet name only.
- $sheet1 = $this->getSheetIndex($ext_ref);
- if ($sheet1 == -1) {
- throw new WriterException("Unknown sheet name $ext_ref in formula");
- }
- $sheet2 = $sheet1;
- }
-
- // References are stored relative to 0xFFFF.
- $offset = -1 - $sheet1;
-
- return pack('vdvv', $offset, 0x00, $sheet1, $sheet2);
- }
-
/**
* Look up the REF index that corresponds to an external sheet name
* (or range). If it doesn't exist yet add it to the workbook's references
diff --git a/src/PhpSpreadsheet/Writer/Xls/Workbook.php b/src/PhpSpreadsheet/Writer/Xls/Workbook.php
index 9666114d..ac0f1cbc 100644
--- a/src/PhpSpreadsheet/Writer/Xls/Workbook.php
+++ b/src/PhpSpreadsheet/Writer/Xls/Workbook.php
@@ -527,114 +527,6 @@ class Workbook extends BIFFwriter
$this->writeStyle();
}
- /**
- * Write the EXTERNCOUNT and EXTERNSHEET records. These are used as indexes for
- * the NAME records.
- */
- private function writeExternals()
- {
- $countSheets = $this->spreadsheet->getSheetCount();
- // Create EXTERNCOUNT with number of worksheets
- $this->writeExternalCount($countSheets);
-
- // Create EXTERNSHEET for each worksheet
- for ($i = 0; $i < $countSheets; ++$i) {
- $this->writeExternalSheet($this->spreadsheet->getSheet($i)->getTitle());
- }
- }
-
- /**
- * Write the NAME record to define the print area and the repeat rows and cols.
- */
- private function writeNames()
- {
- // total number of sheets
- $total_worksheets = $this->spreadsheet->getSheetCount();
-
- // Create the print area NAME records
- for ($i = 0; $i < $total_worksheets; ++$i) {
- $sheetSetup = $this->spreadsheet->getSheet($i)->getPageSetup();
- // Write a Name record if the print area has been defined
- if ($sheetSetup->isPrintAreaSet()) {
- // Print area
- $printArea = Cell::splitRange($sheetSetup->getPrintArea());
- $printArea = $printArea[0];
- $printArea[0] = Cell::coordinateFromString($printArea[0]);
- $printArea[1] = Cell::coordinateFromString($printArea[1]);
-
- $print_rowmin = $printArea[0][1] - 1;
- $print_rowmax = $printArea[1][1] - 1;
- $print_colmin = Cell::columnIndexFromString($printArea[0][0]) - 1;
- $print_colmax = Cell::columnIndexFromString($printArea[1][0]) - 1;
-
- $this->writeNameShort(
- $i, // sheet index
- 0x06, // NAME type
- $print_rowmin,
- $print_rowmax,
- $print_colmin,
- $print_colmax
- );
- }
- }
-
- // Create the print title NAME records
- for ($i = 0; $i < $total_worksheets; ++$i) {
- $sheetSetup = $this->spreadsheet->getSheet($i)->getPageSetup();
-
- // simultaneous repeatColumns repeatRows
- if ($sheetSetup->isColumnsToRepeatAtLeftSet() && $sheetSetup->isRowsToRepeatAtTopSet()) {
- $repeat = $sheetSetup->getColumnsToRepeatAtLeft();
- $colmin = Cell::columnIndexFromString($repeat[0]) - 1;
- $colmax = Cell::columnIndexFromString($repeat[1]) - 1;
-
- $repeat = $sheetSetup->getRowsToRepeatAtTop();
- $rowmin = $repeat[0] - 1;
- $rowmax = $repeat[1] - 1;
-
- $this->writeNameLong(
- $i, // sheet index
- 0x07, // NAME type
- $rowmin,
- $rowmax,
- $colmin,
- $colmax
- );
-
- // (exclusive) either repeatColumns or repeatRows
- } elseif ($sheetSetup->isColumnsToRepeatAtLeftSet() || $sheetSetup->isRowsToRepeatAtTopSet()) {
- // Columns to repeat
- if ($sheetSetup->isColumnsToRepeatAtLeftSet()) {
- $repeat = $sheetSetup->getColumnsToRepeatAtLeft();
- $colmin = Cell::columnIndexFromString($repeat[0]) - 1;
- $colmax = Cell::columnIndexFromString($repeat[1]) - 1;
- } else {
- $colmin = 0;
- $colmax = 255;
- }
-
- // Rows to repeat
- if ($sheetSetup->isRowsToRepeatAtTopSet()) {
- $repeat = $sheetSetup->getRowsToRepeatAtTop();
- $rowmin = $repeat[0] - 1;
- $rowmax = $repeat[1] - 1;
- } else {
- $rowmin = 0;
- $rowmax = 65535;
- }
-
- $this->writeNameShort(
- $i, // sheet index
- 0x07, // NAME type
- $rowmin,
- $rowmax,
- $colmin,
- $colmax
- );
- }
- }
- }
-
/**
* Writes all the DEFINEDNAME records (BIFF8).
* So far this is only used for repeating rows/columns (print titles) and print areas.
@@ -1035,195 +927,6 @@ class Workbook extends BIFFwriter
$this->append($header . $data);
}
- /**
- * Write BIFF record EXTERNCOUNT to indicate the number of external sheet
- * references in the workbook.
- *
- * Excel only stores references to external sheets that are used in NAME.
- * The workbook NAME record is required to define the print area and the repeat
- * rows and columns.
- *
- * A similar method is used in Worksheet.php for a slightly different purpose.
- *
- * @param int $cxals Number of external references
- */
- private function writeExternalCount($cxals)
- {
- $record = 0x0016; // Record identifier
- $length = 0x0002; // Number of bytes to follow
-
- $header = pack('vv', $record, $length);
- $data = pack('v', $cxals);
- $this->append($header . $data);
- }
-
- /**
- * Writes the Excel BIFF EXTERNSHEET record. These references are used by
- * formulas. NAME record is required to define the print area and the repeat
- * rows and columns.
- *
- * A similar method is used in Worksheet.php for a slightly different purpose.
- *
- * @param string $sheetname Worksheet name
- */
- private function writeExternalSheet($sheetname)
- {
- $record = 0x0017; // Record identifier
- $length = 0x02 + strlen($sheetname); // Number of bytes to follow
-
- $cch = strlen($sheetname); // Length of sheet name
- $rgch = 0x03; // Filename encoding
-
- $header = pack('vv', $record, $length);
- $data = pack('CC', $cch, $rgch);
- $this->append($header . $data . $sheetname);
- }
-
- /**
- * Store the NAME record in the short format that is used for storing the print
- * area, repeat rows only and repeat columns only.
- *
- * @param int $index Sheet index
- * @param int $type Built-in name type
- * @param int $rowmin Start row
- * @param int $rowmax End row
- * @param int $colmin Start colum
- * @param int $colmax End column
- */
- private function writeNameShort($index, $type, $rowmin, $rowmax, $colmin, $colmax)
- {
- $record = 0x0018; // Record identifier
- $length = 0x0024; // Number of bytes to follow
-
- $grbit = 0x0020; // Option flags
- $chKey = 0x00; // Keyboard shortcut
- $cch = 0x01; // Length of text name
- $cce = 0x0015; // Length of text definition
- $ixals = $index + 1; // Sheet index
- $itab = $ixals; // Equal to ixals
- $cchCustMenu = 0x00; // Length of cust menu text
- $cchDescription = 0x00; // Length of description text
- $cchHelptopic = 0x00; // Length of help topic text
- $cchStatustext = 0x00; // Length of status bar text
- $rgch = $type; // Built-in name type
-
- $unknown03 = 0x3b;
- $unknown04 = 0xffff - $index;
- $unknown05 = 0x0000;
- $unknown06 = 0x0000;
- $unknown07 = 0x1087;
- $unknown08 = 0x8005;
-
- $header = pack('vv', $record, $length);
- $data = pack('v', $grbit);
- $data .= pack('C', $chKey);
- $data .= pack('C', $cch);
- $data .= pack('v', $cce);
- $data .= pack('v', $ixals);
- $data .= pack('v', $itab);
- $data .= pack('C', $cchCustMenu);
- $data .= pack('C', $cchDescription);
- $data .= pack('C', $cchHelptopic);
- $data .= pack('C', $cchStatustext);
- $data .= pack('C', $rgch);
- $data .= pack('C', $unknown03);
- $data .= pack('v', $unknown04);
- $data .= pack('v', $unknown05);
- $data .= pack('v', $unknown06);
- $data .= pack('v', $unknown07);
- $data .= pack('v', $unknown08);
- $data .= pack('v', $index);
- $data .= pack('v', $index);
- $data .= pack('v', $rowmin);
- $data .= pack('v', $rowmax);
- $data .= pack('C', $colmin);
- $data .= pack('C', $colmax);
- $this->append($header . $data);
- }
-
- /**
- * Store the NAME record in the long format that is used for storing the repeat
- * rows and columns when both are specified. This shares a lot of code with
- * writeNameShort() but we use a separate method to keep the code clean.
- * Code abstraction for reuse can be carried too far, and I should know. ;-).
- *
- * @param int $index Sheet index
- * @param int $type Built-in name type
- * @param int $rowmin Start row
- * @param int $rowmax End row
- * @param int $colmin Start colum
- * @param int $colmax End column
- */
- private function writeNameLong($index, $type, $rowmin, $rowmax, $colmin, $colmax)
- {
- $record = 0x0018; // Record identifier
- $length = 0x003d; // Number of bytes to follow
- $grbit = 0x0020; // Option flags
- $chKey = 0x00; // Keyboard shortcut
- $cch = 0x01; // Length of text name
- $cce = 0x002e; // Length of text definition
- $ixals = $index + 1; // Sheet index
- $itab = $ixals; // Equal to ixals
- $cchCustMenu = 0x00; // Length of cust menu text
- $cchDescription = 0x00; // Length of description text
- $cchHelptopic = 0x00; // Length of help topic text
- $cchStatustext = 0x00; // Length of status bar text
- $rgch = $type; // Built-in name type
-
- $unknown01 = 0x29;
- $unknown02 = 0x002b;
- $unknown03 = 0x3b;
- $unknown04 = 0xffff - $index;
- $unknown05 = 0x0000;
- $unknown06 = 0x0000;
- $unknown07 = 0x1087;
- $unknown08 = 0x8008;
-
- $header = pack('vv', $record, $length);
- $data = pack('v', $grbit);
- $data .= pack('C', $chKey);
- $data .= pack('C', $cch);
- $data .= pack('v', $cce);
- $data .= pack('v', $ixals);
- $data .= pack('v', $itab);
- $data .= pack('C', $cchCustMenu);
- $data .= pack('C', $cchDescription);
- $data .= pack('C', $cchHelptopic);
- $data .= pack('C', $cchStatustext);
- $data .= pack('C', $rgch);
- $data .= pack('C', $unknown01);
- $data .= pack('v', $unknown02);
- // Column definition
- $data .= pack('C', $unknown03);
- $data .= pack('v', $unknown04);
- $data .= pack('v', $unknown05);
- $data .= pack('v', $unknown06);
- $data .= pack('v', $unknown07);
- $data .= pack('v', $unknown08);
- $data .= pack('v', $index);
- $data .= pack('v', $index);
- $data .= pack('v', 0x0000);
- $data .= pack('v', 0x3fff);
- $data .= pack('C', $colmin);
- $data .= pack('C', $colmax);
- // Row definition
- $data .= pack('C', $unknown03);
- $data .= pack('v', $unknown04);
- $data .= pack('v', $unknown05);
- $data .= pack('v', $unknown06);
- $data .= pack('v', $unknown07);
- $data .= pack('v', $unknown08);
- $data .= pack('v', $index);
- $data .= pack('v', $index);
- $data .= pack('v', $rowmin);
- $data .= pack('v', $rowmax);
- $data .= pack('C', 0x00);
- $data .= pack('C', 0xff);
- // End of data
- $data .= pack('C', 0x10);
- $this->append($header . $data);
- }
-
/**
* Stores the COUNTRY record for localization.
*
diff --git a/src/PhpSpreadsheet/Writer/Xls/Worksheet.php b/src/PhpSpreadsheet/Writer/Xls/Worksheet.php
index 387f94a4..222df5a6 100644
--- a/src/PhpSpreadsheet/Writer/Xls/Worksheet.php
+++ b/src/PhpSpreadsheet/Writer/Xls/Worksheet.php
@@ -682,43 +682,6 @@ class Worksheet extends BIFFwriter
$this->append($header . $data);
}
- /**
- * Write a string to the specified row and column (zero indexed).
- * NOTE: there is an Excel 5 defined limit of 255 characters.
- * $format is optional.
- * Returns 0 : normal termination
- * -2 : row or column out of range
- * -3 : long string truncated to 255 chars.
- *
- * @param int $row Zero indexed row
- * @param int $col Zero indexed column
- * @param string $str The string to write
- * @param mixed $xfIndex The XF format index for the cell
- *
- * @return int
- */
- private function writeLabel($row, $col, $str, $xfIndex)
- {
- $strlen = strlen($str);
- $record = 0x0204; // Record identifier
- $length = 0x0008 + $strlen; // Bytes to follow
-
- $str_error = 0;
-
- if ($strlen > $this->xlsStringMaxLength) { // LABEL must be < 255 chars
- $str = substr($str, 0, $this->xlsStringMaxLength);
- $length = 0x0008 + $this->xlsStringMaxLength;
- $strlen = $this->xlsStringMaxLength;
- $str_error = -3;
- }
-
- $header = pack('vv', $record, $length);
- $data = pack('vvvv', $row, $col, $xfIndex, $strlen);
- $this->append($header . $data . $str);
-
- return $str_error;
- }
-
/**
* Write a string to the specified row and column (zero indexed).
* This is the BIFF8 version (no 255 chars limit).
@@ -752,37 +715,6 @@ class Worksheet extends BIFFwriter
$this->append($header . $data);
}
- /**
- * Writes a note associated with the cell given by the row and column.
- * NOTE records don't have a length limit.
- *
- * @param int $row Zero indexed row
- * @param int $col Zero indexed column
- * @param string $note The note to write
- */
- private function writeNote($row, $col, $note)
- {
- $note_length = strlen($note);
- $record = 0x001C; // Record identifier
- $max_length = 2048; // Maximun length for a NOTE record
-
- // Length for this record is no more than 2048 + 6
- $length = 0x0006 + min($note_length, 2048);
- $header = pack('vv', $record, $length);
- $data = pack('vvv', $row, $col, $note_length);
- $this->append($header . $data . substr($note, 0, 2048));
-
- for ($i = $max_length; $i < $note_length; $i += $max_length) {
- $chunk = substr($note, $i, $max_length);
- $length = 0x0006 + strlen($chunk);
- $header = pack('vv', $record, $length);
- $data = pack('vvv', -1, 0, strlen($chunk));
- $this->append($header . $data . $chunk);
- }
-
- return 0;
- }
-
/**
* Write a blank cell to the specified row and column (zero indexed).
* A blank cell is used to specify formatting without adding a string
@@ -1647,59 +1579,6 @@ class Worksheet extends BIFFwriter
}
}
- /**
- * Write BIFF record EXTERNCOUNT to indicate the number of external sheet
- * references in a worksheet.
- *
- * Excel only stores references to external sheets that are used in formulas.
- * For simplicity we store references to all the sheets in the workbook
- * regardless of whether they are used or not. This reduces the overall
- * complexity and eliminates the need for a two way dialogue between the formula
- * parser the worksheet objects.
- *
- * @param int $count The number of external sheet references in this worksheet
- */
- private function writeExterncount($count)
- {
- $record = 0x0016; // Record identifier
- $length = 0x0002; // Number of bytes to follow
-
- $header = pack('vv', $record, $length);
- $data = pack('v', $count);
- $this->append($header . $data);
- }
-
- /**
- * Writes the Excel BIFF EXTERNSHEET record. These references are used by
- * formulas. A formula references a sheet name via an index. Since we store a
- * reference to all of the external worksheets the EXTERNSHEET index is the same
- * as the worksheet index.
- *
- * @param string $sheetname The name of a external worksheet
- */
- private function writeExternsheet($sheetname)
- {
- $record = 0x0017; // Record identifier
-
- // References to the current sheet are encoded differently to references to
- // external sheets.
- //
- if ($this->phpSheet->getTitle() == $sheetname) {
- $sheetname = '';
- $length = 0x02; // The following 2 bytes
- $cch = 1; // The following byte
- $rgch = 0x02; // Self reference
- } else {
- $length = 0x02 + strlen($sheetname);
- $cch = strlen($sheetname);
- $rgch = 0x03; // Reference to a sheet in the current workbook
- }
-
- $header = pack('vv', $record, $length);
- $data = pack('CC', $cch, $rgch);
- $this->append($header . $data . $sheetname);
- }
-
/**
* Writes the Excel BIFF PANE record.
* The panes can either be frozen or thawed (unfrozen).