Skip to content

Commit 0016a93

Browse files
authored
Merge pull request #773 from Progi1984/pr664
PowerPoint2007 Writer : Fixed column indices for embedded spreadsheets
2 parents 4ef6896 + 9d21a5c commit 0016a93

File tree

7 files changed

+122
-63
lines changed

7 files changed

+122
-63
lines changed

docs/changes/1.1.0.md

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
- PowerPoint2077 Writer : Fixed broken PPT Presentations due to MS Office update 2309 - [@WFarmerEthisphere](https://github.com/WFarmerEthisphere) in [#770](https://github.com/PHPOffice/PHPPresentation/pull/770)
1818
- PowerPoint2077 Writer : Fixed error when defining min/max bounds to 0 - [@LilyEssence](https://github.com/LilyEssence) in [#771](https://github.com/PHPOffice/PHPPresentation/pull/771)
1919
- PowerPoint2007 Writer : Outline : Fixed the base unit - [@Pakku](https://github.com/Pakku) in [#772](https://github.com/PHPOffice/PHPPresentation/pull/772)
20+
- PowerPoint2007 Writer : Fixed column indices for embedded spreadsheets - [@michael-roth](https://github.com/michael-roth) in [#773](https://github.com/PHPOffice/PHPPresentation/pull/773)
2021

2122
## BC Breaks
2223
- `PhpOffice\PhpPresentation\Style\Outline` : the width is now based on pixels (before in points)

src/PhpPresentation/Shape/Chart/Type/AbstractTypeBar.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
/**
2323
* \PhpOffice\PhpPresentation\Shape\Chart\Type\Bar.
2424
*/
25-
class AbstractTypeBar extends AbstractType
25+
abstract class AbstractTypeBar extends AbstractType
2626
{
2727
/** Orientation of bars */
2828
public const DIRECTION_VERTICAL = 'col';

src/PhpPresentation/Shape/Chart/Type/AbstractTypeLine.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
namespace PhpOffice\PhpPresentation\Shape\Chart\Type;
2121

22-
class AbstractTypeLine extends AbstractType
22+
abstract class AbstractTypeLine extends AbstractType
2323
{
2424
/**
2525
* Is Line Smooth?

src/PhpPresentation/Shape/Chart/Type/AbstractTypePie.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
/**
2323
* \PhpOffice\PhpPresentation\Shape\Chart\Type\Bar.
2424
*/
25-
class AbstractTypePie extends AbstractType
25+
abstract class AbstractTypePie extends AbstractType
2626
{
2727
/**
2828
* Create a new self instance.

src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php

+38-43
Original file line numberDiff line numberDiff line change
@@ -253,20 +253,20 @@ protected function writeSpreadsheet(PhpPresentation $presentation, Chart $chart,
253253
$seriesIndex = 0;
254254
foreach ($chart->getPlotArea()->getType()->getSeries() as $series) {
255255
// Title
256-
$sheet->setCellValueByColumnAndRow(1 + $seriesIndex, 1, $series->getTitle());
256+
$sheet->setCellValueByColumnAndRow(2 + $seriesIndex, 1, $series->getTitle());
257257

258258
// X-axis
259259
$axisXData = array_keys($series->getValues());
260260
$numAxisXData = count($axisXData);
261261
for ($i = 0; $i < $numAxisXData; ++$i) {
262-
$sheet->setCellValueByColumnAndRow(0, $i + 2, $axisXData[$i]);
262+
$sheet->setCellValueByColumnAndRow(1, $i + 2, $axisXData[$i]);
263263
}
264264

265265
// Y-axis
266266
$axisYData = array_values($series->getValues());
267267
$numAxisYData = count($axisYData);
268268
for ($i = 0; $i < $numAxisYData; ++$i) {
269-
$sheet->setCellValueByColumnAndRow(1 + $seriesIndex, $i + 2, $axisYData[$i]);
269+
$sheet->setCellValueByColumnAndRow(2 + $seriesIndex, $i + 2, $axisYData[$i]);
270270
}
271271

272272
++$seriesIndex;
@@ -723,7 +723,7 @@ protected function writeTypeArea(XMLWriter $objWriter, Area $subject, bool $incl
723723

724724
// c:ser > c:tx
725725
$objWriter->startElement('c:tx');
726-
$coords = ($includeSheet ? 'Sheet1!$' . Coordinate::stringFromColumnIndex(1 + $seriesIndex) . '$1' : '');
726+
$coords = ($includeSheet ? 'Sheet1!$' . Coordinate::stringFromColumnIndex(2 + $seriesIndex) . '$1' : '');
727727
$this->writeSingleValueOrReference($objWriter, $includeSheet, $series->getTitle(), $coords);
728728
$objWriter->endElement();
729729

@@ -768,7 +768,7 @@ protected function writeTypeArea(XMLWriter $objWriter, Area $subject, bool $incl
768768

769769
// c:val
770770
$objWriter->startElement('c:val');
771-
$coords = ($includeSheet ? 'Sheet1!$' . Coordinate::stringFromColumnIndex($seriesIndex + 1) . '$2:$' . Coordinate::stringFromColumnIndex($seriesIndex + 1) . '$' . (1 + count($axisYData)) : '');
771+
$coords = ($includeSheet ? 'Sheet1!$' . Coordinate::stringFromColumnIndex($seriesIndex + 2) . '$2:$' . Coordinate::stringFromColumnIndex($seriesIndex + 2) . '$' . (1 + count($axisYData)) : '');
772772
$this->writeMultipleValuesOrReference($objWriter, $includeSheet, $axisYData, $coords);
773773
$objWriter->endElement();
774774

@@ -829,7 +829,7 @@ protected function writeTypeBar(XMLWriter $objWriter, Bar $subject, bool $includ
829829

830830
// c:tx
831831
$objWriter->startElement('c:tx');
832-
$coords = ($includeSheet ? 'Sheet1!$' . Coordinate::stringFromColumnIndex(1 + $seriesIndex) . '$1' : '');
832+
$coords = ($includeSheet ? 'Sheet1!$' . Coordinate::stringFromColumnIndex(2 + $seriesIndex) . '$1' : '');
833833
$this->writeSingleValueOrReference($objWriter, $includeSheet, $series->getTitle(), $coords);
834834
$objWriter->endElement();
835835

@@ -965,7 +965,7 @@ protected function writeTypeBar(XMLWriter $objWriter, Bar $subject, bool $includ
965965

966966
// c:val
967967
$objWriter->startElement('c:val');
968-
$coords = ($includeSheet ? 'Sheet1!$' . Coordinate::stringFromColumnIndex($seriesIndex + 1) . '$2:$' . Coordinate::stringFromColumnIndex($seriesIndex + 1) . '$' . (1 + count($axisYData)) : '');
968+
$coords = ($includeSheet ? 'Sheet1!$' . Coordinate::stringFromColumnIndex($seriesIndex + 2) . '$2:$' . Coordinate::stringFromColumnIndex($seriesIndex + 2) . '$' . (1 + count($axisYData)) : '');
969969
$this->writeMultipleValuesOrReference($objWriter, $includeSheet, $axisYData, $coords);
970970
$objWriter->endElement();
971971

@@ -1040,7 +1040,7 @@ protected function writeTypeBar3D(XMLWriter $objWriter, Bar3D $subject, bool $in
10401040

10411041
// c:tx
10421042
$objWriter->startElement('c:tx');
1043-
$coords = ($includeSheet ? 'Sheet1!$' . Coordinate::stringFromColumnIndex(1 + $seriesIndex) . '$1' : '');
1043+
$coords = ($includeSheet ? 'Sheet1!$' . Coordinate::stringFromColumnIndex(2 + $seriesIndex) . '$1' : '');
10441044
$this->writeSingleValueOrReference($objWriter, $includeSheet, $series->getTitle(), $coords);
10451045
$objWriter->endElement();
10461046

@@ -1161,7 +1161,7 @@ protected function writeTypeBar3D(XMLWriter $objWriter, Bar3D $subject, bool $in
11611161

11621162
// c:val
11631163
$objWriter->startElement('c:val');
1164-
$coords = ($includeSheet ? 'Sheet1!$' . Coordinate::stringFromColumnIndex($seriesIndex + 1) . '$2:$' . Coordinate::stringFromColumnIndex($seriesIndex + 1) . '$' . (1 + count($axisYData)) : '');
1164+
$coords = ($includeSheet ? 'Sheet1!$' . Coordinate::stringFromColumnIndex($seriesIndex + 2) . '$2:$' . Coordinate::stringFromColumnIndex($seriesIndex + 2) . '$' . (1 + count($axisYData)) : '');
11651165
$this->writeMultipleValuesOrReference($objWriter, $includeSheet, $axisYData, $coords);
11661166
$objWriter->endElement();
11671167

@@ -1226,7 +1226,7 @@ protected function writeTypeDoughnut(XMLWriter $objWriter, Doughnut $subject, bo
12261226

12271227
// c:tx
12281228
$objWriter->startElement('c:tx');
1229-
$coords = ($includeSheet ? 'Sheet1!$' . Coordinate::stringFromColumnIndex(1 + $seriesIndex) . '$1' : '');
1229+
$coords = ($includeSheet ? 'Sheet1!$' . Coordinate::stringFromColumnIndex(2 + $seriesIndex) . '$1' : '');
12301230
$this->writeSingleValueOrReference($objWriter, $includeSheet, $series->getTitle(), $coords);
12311231
$objWriter->endElement();
12321232

@@ -1258,7 +1258,7 @@ protected function writeTypeDoughnut(XMLWriter $objWriter, Doughnut $subject, bo
12581258

12591259
// c:val
12601260
$objWriter->startElement('c:val');
1261-
$coords = ($includeSheet ? 'Sheet1!$' . Coordinate::stringFromColumnIndex($seriesIndex + 1) . '$2:$' . Coordinate::stringFromColumnIndex($seriesIndex + 1) . '$' . (1 + count($axisYData)) : '');
1261+
$coords = ($includeSheet ? 'Sheet1!$' . Coordinate::stringFromColumnIndex($seriesIndex + 2) . '$2:$' . Coordinate::stringFromColumnIndex($seriesIndex + 2) . '$' . (1 + count($axisYData)) : '');
12621262
$this->writeMultipleValuesOrReference($objWriter, $includeSheet, $axisYData, $coords);
12631263
$objWriter->endElement();
12641264

@@ -1271,14 +1271,6 @@ protected function writeTypeDoughnut(XMLWriter $objWriter, Doughnut $subject, bo
12711271
// c:dLbls
12721272
$objWriter->startElement('c:dLbls');
12731273

1274-
$this->writeElementWithValAttribute($objWriter, 'c:showLegendKey', $series->hasShowLegendKey() ? '1' : '0');
1275-
$this->writeElementWithValAttribute($objWriter, 'c:showVal', $series->hasShowValue() ? '1' : '0');
1276-
$this->writeElementWithValAttribute($objWriter, 'c:showCatName', $series->hasShowCategoryName() ? '1' : '0');
1277-
$this->writeElementWithValAttribute($objWriter, 'c:showSerName', $series->hasShowSeriesName() ? '1' : '0');
1278-
$this->writeElementWithValAttribute($objWriter, 'c:showPercent', $series->hasShowPercentage() ? '1' : '0');
1279-
$this->writeElementWithValAttribute($objWriter, 'c:showBubbleSize', '0');
1280-
$this->writeElementWithValAttribute($objWriter, 'c:showLeaderLines', $series->hasShowLeaderLines() ? '1' : '0');
1281-
12821274
if ($series->hasDlblNumFormat()) {
12831275
//c:numFmt
12841276
$objWriter->startElement('c:numFmt');
@@ -1334,6 +1326,14 @@ protected function writeTypeDoughnut(XMLWriter $objWriter, Doughnut $subject, bo
13341326
// c:dLbls\c:txPr\
13351327
$objWriter->endElement();
13361328

1329+
$this->writeElementWithValAttribute($objWriter, 'c:showLegendKey', $series->hasShowLegendKey() ? '1' : '0');
1330+
$this->writeElementWithValAttribute($objWriter, 'c:showVal', $series->hasShowValue() ? '1' : '0');
1331+
$this->writeElementWithValAttribute($objWriter, 'c:showCatName', $series->hasShowCategoryName() ? '1' : '0');
1332+
$this->writeElementWithValAttribute($objWriter, 'c:showSerName', $series->hasShowSeriesName() ? '1' : '0');
1333+
$this->writeElementWithValAttribute($objWriter, 'c:showPercent', $series->hasShowPercentage() ? '1' : '0');
1334+
$this->writeElementWithValAttribute($objWriter, 'c:showBubbleSize', '0');
1335+
$this->writeElementWithValAttribute($objWriter, 'c:showLeaderLines', $series->hasShowLeaderLines() ? '1' : '0');
1336+
13371337
$separator = $series->getSeparator();
13381338
if (!empty($separator) && PHP_EOL != $separator) {
13391339
// c:dLbls\c:separator
@@ -1383,7 +1383,7 @@ protected function writeTypePie(XMLWriter $objWriter, Pie $subject, bool $includ
13831383

13841384
// c:tx
13851385
$objWriter->startElement('c:tx');
1386-
$coords = ($includeSheet ? 'Sheet1!$' . Coordinate::stringFromColumnIndex(1 + $seriesIndex) . '$1' : '');
1386+
$coords = ($includeSheet ? 'Sheet1!$' . Coordinate::stringFromColumnIndex(2 + $seriesIndex) . '$1' : '');
13871387
$this->writeSingleValueOrReference($objWriter, $includeSheet, $series->getTitle(), $coords);
13881388
$objWriter->endElement();
13891389

@@ -1501,7 +1501,7 @@ protected function writeTypePie(XMLWriter $objWriter, Pie $subject, bool $includ
15011501

15021502
// c:val
15031503
$objWriter->startElement('c:val');
1504-
$coords = ($includeSheet ? 'Sheet1!$' . Coordinate::stringFromColumnIndex($seriesIndex + 1) . '$2:$' . Coordinate::stringFromColumnIndex($seriesIndex + 1) . '$' . (1 + count($axisYData)) : '');
1504+
$coords = ($includeSheet ? 'Sheet1!$' . Coordinate::stringFromColumnIndex($seriesIndex + 2) . '$2:$' . Coordinate::stringFromColumnIndex($seriesIndex + 2) . '$' . (1 + count($axisYData)) : '');
15051505
$this->writeMultipleValuesOrReference($objWriter, $includeSheet, $axisYData, $coords);
15061506
$objWriter->endElement();
15071507

@@ -1546,7 +1546,7 @@ protected function writeTypePie3D(XMLWriter $objWriter, Pie3D $subject, bool $in
15461546

15471547
// c:tx
15481548
$objWriter->startElement('c:tx');
1549-
$coords = ($includeSheet ? 'Sheet1!$' . Coordinate::stringFromColumnIndex(1 + $seriesIndex) . '$1' : '');
1549+
$coords = ($includeSheet ? 'Sheet1!$' . Coordinate::stringFromColumnIndex(2 + $seriesIndex) . '$1' : '');
15501550
$this->writeSingleValueOrReference($objWriter, $includeSheet, $series->getTitle(), $coords);
15511551
$objWriter->endElement();
15521552

@@ -1658,7 +1658,7 @@ protected function writeTypePie3D(XMLWriter $objWriter, Pie3D $subject, bool $in
16581658

16591659
// c:val
16601660
$objWriter->startElement('c:val');
1661-
$coords = ($includeSheet ? 'Sheet1!$' . Coordinate::stringFromColumnIndex($seriesIndex + 1) . '$2:$' . Coordinate::stringFromColumnIndex($seriesIndex + 1) . '$' . (1 + count($axisYData)) : '');
1661+
$coords = ($includeSheet ? 'Sheet1!$' . Coordinate::stringFromColumnIndex($seriesIndex + 2) . '$2:$' . Coordinate::stringFromColumnIndex($seriesIndex + 2) . '$' . (1 + count($axisYData)) : '');
16621662
$this->writeMultipleValuesOrReference($objWriter, $includeSheet, $axisYData, $coords);
16631663
$objWriter->endElement();
16641664

@@ -1703,7 +1703,7 @@ protected function writeTypeLine(XMLWriter $objWriter, Line $subject, bool $incl
17031703

17041704
// c:tx
17051705
$objWriter->startElement('c:tx');
1706-
$coords = ($includeSheet ? 'Sheet1!$' . Coordinate::stringFromColumnIndex(1 + $seriesIndex) . '$1' : '');
1706+
$coords = ($includeSheet ? 'Sheet1!$' . Coordinate::stringFromColumnIndex(2 + $seriesIndex) . '$1' : '');
17071707
$this->writeSingleValueOrReference($objWriter, $includeSheet, $series->getTitle(), $coords);
17081708
$objWriter->endElement();
17091709

@@ -1805,7 +1805,7 @@ protected function writeTypeLine(XMLWriter $objWriter, Line $subject, bool $incl
18051805

18061806
// c:val
18071807
$objWriter->startElement('c:val');
1808-
$coords = ($includeSheet ? 'Sheet1!$' . Coordinate::stringFromColumnIndex($seriesIndex + 1) . '$2:$' . Coordinate::stringFromColumnIndex($seriesIndex + 1) . '$' . (1 + count($axisYData)) : '');
1808+
$coords = ($includeSheet ? 'Sheet1!$' . Coordinate::stringFromColumnIndex($seriesIndex + 2) . '$2:$' . Coordinate::stringFromColumnIndex($seriesIndex + 2) . '$' . (1 + count($axisYData)) : '');
18091809
$this->writeMultipleValuesOrReference($objWriter, $includeSheet, $axisYData, $coords);
18101810
$objWriter->endElement();
18111811

@@ -1875,10 +1875,19 @@ protected function writeTypeRadar(XMLWriter $objWriter, Radar $subject, bool $in
18751875

18761876
// c:tx
18771877
$objWriter->startElement('c:tx');
1878-
$coords = ($includeSheet ? 'Sheet1!$' . Coordinate::stringFromColumnIndex(1 + $seriesIndex) . '$1' : '');
1878+
$coords = ($includeSheet ? 'Sheet1!$' . Coordinate::stringFromColumnIndex(2 + $seriesIndex) . '$1' : '');
18791879
$this->writeSingleValueOrReference($objWriter, $includeSheet, $series->getTitle(), $coords);
18801880
$objWriter->endElement();
18811881

1882+
// c:spPr
1883+
$objWriter->startElement('c:spPr');
1884+
// Write fill
1885+
$this->writeFill($objWriter, $series->getFill());
1886+
// Write outline
1887+
$this->writeOutline($objWriter, $series->getOutline());
1888+
// ## c:spPr
1889+
$objWriter->endElement();
1890+
18821891
// Marker
18831892
$this->writeSeriesMarker($objWriter, $series->getMarker());
18841893

@@ -1957,15 +1966,6 @@ protected function writeTypeRadar(XMLWriter $objWriter, Radar $subject, bool $in
19571966

19581967
$objWriter->endElement();
19591968

1960-
// c:spPr
1961-
$objWriter->startElement('c:spPr');
1962-
// Write fill
1963-
$this->writeFill($objWriter, $series->getFill());
1964-
// Write outline
1965-
$this->writeOutline($objWriter, $series->getOutline());
1966-
// ## c:spPr
1967-
$objWriter->endElement();
1968-
19691969
// Write X axis data
19701970
$axisXData = array_keys($series->getValues());
19711971

@@ -1979,15 +1979,10 @@ protected function writeTypeRadar(XMLWriter $objWriter, Radar $subject, bool $in
19791979

19801980
// c:val
19811981
$objWriter->startElement('c:val');
1982-
$coords = ($includeSheet ? 'Sheet1!$' . Coordinate::stringFromColumnIndex($seriesIndex + 1) . '$2:$' . Coordinate::stringFromColumnIndex($seriesIndex + 1) . '$' . (1 + count($axisYData)) : '');
1982+
$coords = ($includeSheet ? 'Sheet1!$' . Coordinate::stringFromColumnIndex($seriesIndex + 2) . '$2:$' . Coordinate::stringFromColumnIndex($seriesIndex + 2) . '$' . (1 + count($axisYData)) : '');
19831983
$this->writeMultipleValuesOrReference($objWriter, $includeSheet, $axisYData, $coords);
19841984
$objWriter->endElement();
19851985

1986-
// c:smooth
1987-
$objWriter->startElement('c:smooth');
1988-
$objWriter->writeAttribute('val', '0');
1989-
$objWriter->endElement();
1990-
19911986
$objWriter->endElement();
19921987

19931988
++$seriesIndex;
@@ -2042,7 +2037,7 @@ protected function writeTypeScatter(XMLWriter $objWriter, Scatter $subject, bool
20422037

20432038
// c:tx
20442039
$objWriter->startElement('c:tx');
2045-
$coords = ($includeSheet ? 'Sheet1!$' . Coordinate::stringFromColumnIndex(1 + $seriesIndex) . '$1' : '');
2040+
$coords = ($includeSheet ? 'Sheet1!$' . Coordinate::stringFromColumnIndex(2 + $seriesIndex) . '$1' : '');
20462041
$this->writeSingleValueOrReference($objWriter, $includeSheet, $series->getTitle(), $coords);
20472042
$objWriter->endElement();
20482043

@@ -2153,7 +2148,7 @@ protected function writeTypeScatter(XMLWriter $objWriter, Scatter $subject, bool
21532148

21542149
// c:yVal
21552150
$objWriter->startElement('c:yVal');
2156-
$coords = ($includeSheet ? 'Sheet1!$' . Coordinate::stringFromColumnIndex($seriesIndex + 1) . '$2:$' . Coordinate::stringFromColumnIndex($seriesIndex + 1) . '$' . (1 + count($axisYData)) : '');
2151+
$coords = ($includeSheet ? 'Sheet1!$' . Coordinate::stringFromColumnIndex($seriesIndex + 2) . '$2:$' . Coordinate::stringFromColumnIndex($seriesIndex + 2) . '$' . (1 + count($axisYData)) : '');
21572152
$this->writeMultipleValuesOrReference($objWriter, $includeSheet, $axisYData, $coords);
21582153
$objWriter->endElement();
21592154

0 commit comments

Comments
 (0)