From c8c552e5d91993d21ed4aa9b44321952f51d0c27 Mon Sep 17 00:00:00 2001 From: Galkin Ivan Date: Fri, 31 Mar 2017 15:34:38 +0300 Subject: [PATCH 1/7] Adding an empty cell condition Adding an empty cell condition --- src/PhpSpreadsheet/Style/Conditional.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/PhpSpreadsheet/Style/Conditional.php b/src/PhpSpreadsheet/Style/Conditional.php index 4531979ead..0164db16f7 100644 --- a/src/PhpSpreadsheet/Style/Conditional.php +++ b/src/PhpSpreadsheet/Style/Conditional.php @@ -31,6 +31,7 @@ class Conditional implements \PhpOffice\PhpSpreadsheet\IComparable const CONDITION_CELLIS = 'cellIs'; const CONDITION_CONTAINSTEXT = 'containsText'; const CONDITION_EXPRESSION = 'expression'; + const CONDITION_CONTAINSBLANKS = 'containsBlanks'; /* Operator types */ const OPERATOR_NONE = ''; From 4732ed52771c9e4d650f5eed0de0bf304782f667 Mon Sep 17 00:00:00 2001 From: CrazyBite Date: Wed, 3 May 2017 15:53:07 +0300 Subject: [PATCH 2/7] Added fillColor for chart plot series --- src/PhpSpreadsheet/Chart/DataSeriesValues.php | 20 ++++++++++++++++++- src/PhpSpreadsheet/Writer/Excel2007/Chart.php | 11 ++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/PhpSpreadsheet/Chart/DataSeriesValues.php b/src/PhpSpreadsheet/Chart/DataSeriesValues.php index ba3cc269ce..def14024da 100644 --- a/src/PhpSpreadsheet/Chart/DataSeriesValues.php +++ b/src/PhpSpreadsheet/Chart/DataSeriesValues.php @@ -76,11 +76,18 @@ class DataSeriesValues */ private $dataValues = []; + /** + * Fill color. + * + * @var string + */ + private $fillColor; + /** * Create a new DataSeriesValues object * @param string $dataSource */ - public function __construct($dataType = self::DATASERIES_TYPE_NUMBER, $dataSource = null, $formatCode = null, $pointCount = 0, $dataValues = [], $marker = null) + public function __construct($dataType = self::DATASERIES_TYPE_NUMBER, $dataSource = null, $formatCode = null, $pointCount = 0, $dataValues = [], $marker = null, $color = null) { $this->setDataType($dataType); $this->dataSource = $dataSource; @@ -88,6 +95,7 @@ public function __construct($dataType = self::DATASERIES_TYPE_NUMBER, $dataSourc $this->pointCount = $pointCount; $this->dataValues = $dataValues; $this->pointMarker = $marker; + $this->fillColor = $color; } /** @@ -205,6 +213,16 @@ public function getPointCount() return $this->pointCount; } + /** + * Get fill color. + * + * @return string + */ + public function getFillColor() + { + return $this->fillColor; + } + /** * Identify if the Data Series is a multi-level or a simple series * diff --git a/src/PhpSpreadsheet/Writer/Excel2007/Chart.php b/src/PhpSpreadsheet/Writer/Excel2007/Chart.php index 9091566988..ef8850babd 100644 --- a/src/PhpSpreadsheet/Writer/Excel2007/Chart.php +++ b/src/PhpSpreadsheet/Writer/Excel2007/Chart.php @@ -1086,6 +1086,17 @@ private function writePlotGroup($plotGroup, $groupType, $objWriter, &$catIsMulti foreach ($plotSeriesOrder as $plotSeriesIdx => $plotSeriesRef) { $objWriter->startElement('c:ser'); + $fillColor = $plotGroup->getPlotLabelByIndex($plotSeriesIdx)->getFillColor(); + if ($fillColor != null){ + $objWriter->startElement('c:spPr'); + $objWriter->startElement('a:solidFill'); + $objWriter->startElement('a:srgbClr'); + $objWriter->writeAttribute('val', $fillColor); + $objWriter->endElement(); + $objWriter->endElement(); + $objWriter->endElement(); + } + $objWriter->startElement('c:idx'); $objWriter->writeAttribute('val', $this->_seriesIndex + $plotSeriesIdx); $objWriter->endElement(); From aea557bd70f6e4ac13ca625c342fce26ad544331 Mon Sep 17 00:00:00 2001 From: CrazyBite Date: Thu, 4 May 2017 16:04:01 +0300 Subject: [PATCH 3/7] added setter --- src/PhpSpreadsheet/Chart/DataSeriesValues.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/PhpSpreadsheet/Chart/DataSeriesValues.php b/src/PhpSpreadsheet/Chart/DataSeriesValues.php index def14024da..031788e45c 100644 --- a/src/PhpSpreadsheet/Chart/DataSeriesValues.php +++ b/src/PhpSpreadsheet/Chart/DataSeriesValues.php @@ -223,6 +223,21 @@ public function getFillColor() return $this->fillColor; } + /** + * Set fill color for series + * + * @param string HEX color + * @return DataSeriesValues + */ + public function setFillColor($color) + { + if (!preg_match('/^[a-f0-9]{6}$/i', $color)) { + throw new Exception('Invalid hex color for chart series'); + } + $this->fillColor = $color; + return $this; + } + /** * Identify if the Data Series is a multi-level or a simple series * From 64deb5fc82652891ad76ef920e6a761b171aa3c9 Mon Sep 17 00:00:00 2001 From: CrazyBite Date: Wed, 17 May 2017 14:51:41 +0300 Subject: [PATCH 4/7] remove conflict comments --- src/PhpSpreadsheet/Chart/DataSeriesValues.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/PhpSpreadsheet/Chart/DataSeriesValues.php b/src/PhpSpreadsheet/Chart/DataSeriesValues.php index 9823561bb5..147d272746 100644 --- a/src/PhpSpreadsheet/Chart/DataSeriesValues.php +++ b/src/PhpSpreadsheet/Chart/DataSeriesValues.php @@ -77,11 +77,9 @@ class DataSeriesValues private $dataValues = []; /** -<<<<<<< HEAD * Create a new DataSeriesValues object. * * @param mixed $dataType -======= * Fill color. * * @var string @@ -90,7 +88,6 @@ class DataSeriesValues /** * Create a new DataSeriesValues object ->>>>>>> aea557bd70f6e4ac13ca625c342fce26ad544331 * @param string $dataSource * @param null|mixed $formatCode * @param mixed $pointCount From 826899d0dfa34ca8f958a5de778f798990463d62 Mon Sep 17 00:00:00 2001 From: CrazyBite Date: Fri, 19 May 2017 11:45:57 +0300 Subject: [PATCH 5/7] special for Travis --- src/PhpSpreadsheet/Chart/DataSeriesValues.php | 12 +++++++++--- src/PhpSpreadsheet/Writer/Xlsx/Chart.php | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/PhpSpreadsheet/Chart/DataSeriesValues.php b/src/PhpSpreadsheet/Chart/DataSeriesValues.php index 147d272746..a98ed669ce 100644 --- a/src/PhpSpreadsheet/Chart/DataSeriesValues.php +++ b/src/PhpSpreadsheet/Chart/DataSeriesValues.php @@ -87,12 +87,15 @@ class DataSeriesValues private $fillColor; /** - * Create a new DataSeriesValues object + * Create a new DataSeriesValues object. + * * @param string $dataSource * @param null|mixed $formatCode * @param mixed $pointCount * @param mixed $dataValues * @param null|mixed $marker + * @param mixed $dataType + * @param null|mixed $color */ public function __construct($dataType = self::DATASERIES_TYPE_NUMBER, $dataSource = null, $formatCode = null, $pointCount = 0, $dataValues = [], $marker = null, $color = null) { @@ -233,9 +236,11 @@ public function getFillColor() } /** - * Set fill color for series + * Set fill color for series. * * @param string HEX color + * @param mixed $color + * * @return DataSeriesValues */ public function setFillColor($color) @@ -244,11 +249,12 @@ public function setFillColor($color) throw new Exception('Invalid hex color for chart series'); } $this->fillColor = $color; + return $this; } /** - * Identify if the Data Series is a multi-level or a simple series + * Identify if the Data Series is a multi-level or a simple series. * * @return bool|null */ diff --git a/src/PhpSpreadsheet/Writer/Xlsx/Chart.php b/src/PhpSpreadsheet/Writer/Xlsx/Chart.php index dcfe332c1b..26ebdb8b49 100644 --- a/src/PhpSpreadsheet/Writer/Xlsx/Chart.php +++ b/src/PhpSpreadsheet/Writer/Xlsx/Chart.php @@ -1096,7 +1096,7 @@ private function writePlotGroup($plotGroup, $groupType, $objWriter, &$catIsMulti $objWriter->startElement('c:ser'); $fillColor = $plotGroup->getPlotLabelByIndex($plotSeriesIdx)->getFillColor(); - if ($fillColor != null){ + if ($fillColor != null) { $objWriter->startElement('c:spPr'); $objWriter->startElement('a:solidFill'); $objWriter->startElement('a:srgbClr'); From c83a48e315cad66ab54ce8c2aa73aa7c04710cfe Mon Sep 17 00:00:00 2001 From: CrazyBite Date: Sun, 28 May 2017 10:35:32 +0300 Subject: [PATCH 6/7] for Travis again --- src/PhpSpreadsheet/Writer/Xlsx/Chart.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/PhpSpreadsheet/Writer/Xlsx/Chart.php b/src/PhpSpreadsheet/Writer/Xlsx/Chart.php index 26ebdb8b49..4dd1fa7a87 100644 --- a/src/PhpSpreadsheet/Writer/Xlsx/Chart.php +++ b/src/PhpSpreadsheet/Writer/Xlsx/Chart.php @@ -1095,7 +1095,8 @@ private function writePlotGroup($plotGroup, $groupType, $objWriter, &$catIsMulti foreach ($plotSeriesOrder as $plotSeriesIdx => $plotSeriesRef) { $objWriter->startElement('c:ser'); - $fillColor = $plotGroup->getPlotLabelByIndex($plotSeriesIdx)->getFillColor(); + $plotLabel = $plotGroup->getPlotLabelByIndex($plotSeriesIdx); + $fillColor = $plotLabel->getFillColor(); if ($fillColor != null) { $objWriter->startElement('c:spPr'); $objWriter->startElement('a:solidFill'); From be0ee7bc7efe6fcd71230ec58e3ad4cca7228355 Mon Sep 17 00:00:00 2001 From: CrazyBite Date: Wed, 31 May 2017 11:46:21 +0300 Subject: [PATCH 7/7] add protect for fillcolor --- src/PhpSpreadsheet/Writer/Xlsx/Chart.php | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/PhpSpreadsheet/Writer/Xlsx/Chart.php b/src/PhpSpreadsheet/Writer/Xlsx/Chart.php index 4dd1fa7a87..8815d130cc 100644 --- a/src/PhpSpreadsheet/Writer/Xlsx/Chart.php +++ b/src/PhpSpreadsheet/Writer/Xlsx/Chart.php @@ -1096,17 +1096,18 @@ private function writePlotGroup($plotGroup, $groupType, $objWriter, &$catIsMulti $objWriter->startElement('c:ser'); $plotLabel = $plotGroup->getPlotLabelByIndex($plotSeriesIdx); - $fillColor = $plotLabel->getFillColor(); - if ($fillColor != null) { - $objWriter->startElement('c:spPr'); - $objWriter->startElement('a:solidFill'); - $objWriter->startElement('a:srgbClr'); - $objWriter->writeAttribute('val', $fillColor); - $objWriter->endElement(); - $objWriter->endElement(); - $objWriter->endElement(); + if ($plotLabel){ + $fillColor = $plotLabel->getFillColor(); + if ($fillColor != null) { + $objWriter->startElement('c:spPr'); + $objWriter->startElement('a:solidFill'); + $objWriter->startElement('a:srgbClr'); + $objWriter->writeAttribute('val', $fillColor); + $objWriter->endElement(); + $objWriter->endElement(); + $objWriter->endElement(); + } } - $objWriter->startElement('c:idx'); $objWriter->writeAttribute('val', $this->_seriesIndex + $plotSeriesIdx); $objWriter->endElement();