Skip to content

Commit 146c06d

Browse files
committed
PHPOffice#266 : PowerPoint2007 Writer : Fix for PowerPoint2007 Writer (Need repair)
Chart Area
1 parent 79c4cff commit 146c06d

File tree

2 files changed

+17
-83
lines changed

2 files changed

+17
-83
lines changed

samples/Sample_05_Chart.php

+4-5
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,11 @@
1616
use PhpOffice\PhpPresentation\Style\Color;
1717
use PhpOffice\PhpPresentation\Style\Fill;
1818
use PhpOffice\PhpPresentation\Style\Shadow;
19-
use PhpOffice\PhpPresentation\Style\PhpOffice\PhpPresentation\Style;
2019

2120
function fnSlide_Area(PhpPresentation $objPHPPresentation) {
2221
global $oFill;
2322
global $oShadow;
24-
23+
2524
// Generate sample data for chart
2625
echo date('H:i:s') . ' Generate sample data for chart' . EOL;
2726
$seriesData = array(
@@ -33,11 +32,11 @@ function fnSlide_Area(PhpPresentation $objPHPPresentation) {
3332
'Saturday' => 9,
3433
'Sunday' => 7
3534
);
36-
35+
3736
// Create templated slide
3837
echo EOL . date('H:i:s') . ' Create templated slide' . EOL;
3938
$currentSlide = createTemplatedSlide($objPHPPresentation);
40-
39+
4140
// Create a line chart (that should be inserted in a shape)
4241
echo date('H:i:s') . ' Create a area chart (that should be inserted in a chart shape)' . EOL;
4342
$areaChart = new Area();
@@ -47,7 +46,7 @@ function fnSlide_Area(PhpPresentation $objPHPPresentation) {
4746
$series->getFill()->setStartColor(new Color('FF93A9CE'));
4847
$series->setLabelPosition(Series::LABEL_INSIDEEND);
4948
$areaChart->addSeries($series);
50-
49+
5150
// Create a shape (chart)
5251
echo date('H:i:s') . ' Create a shape (chart)' . EOL;
5352
$shape = $currentSlide->createChartShape();

src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php

+13-78
Original file line numberDiff line numberDiff line change
@@ -508,12 +508,12 @@ protected function writePlotArea(XMLWriter $objWriter, PlotArea $subject, Chart
508508

509509
// Write X axis?
510510
if ($chartType->hasAxisX()) {
511-
$this->writeAxis($objWriter, $subject->getAxisX(), Chart\Axis::AXIS_X);
511+
$this->writeAxis($objWriter, $subject->getAxisX(), Chart\Axis::AXIS_X, $chartType);
512512
}
513513

514514
// Write Y axis?
515515
if ($chartType->hasAxisY()) {
516-
$this->writeAxis($objWriter, $subject->getAxisY(), Chart\Axis::AXIS_Y);
516+
$this->writeAxis($objWriter, $subject->getAxisY(), Chart\Axis::AXIS_Y, $chartType);
517517
}
518518

519519
$objWriter->endElement();
@@ -715,68 +715,9 @@ protected function writeTypeArea(XMLWriter $objWriter, Area $subject, $includeSh
715715
$objWriter->endElement();
716716

717717
// c:ser > c:dLbls
718+
// @link : https://msdn.microsoft.com/en-us/library/documentformat.openxml.drawing.charts.areachartseries.aspx
718719
$objWriter->startElement('c:dLbls');
719720

720-
// c:ser > c:dLbls > c:txPr
721-
$objWriter->startElement('c:txPr');
722-
723-
// c:ser > c:dLbls > c:txPr > a:bodyPr
724-
$objWriter->writeElement('a:bodyPr', null);
725-
726-
// c:ser > c:dLbls > c:txPr > a:lstStyle
727-
$objWriter->writeElement('a:lstStyle', null);
728-
729-
// c:ser > c:dLbls > c:txPr > a:p
730-
$objWriter->startElement('a:p');
731-
732-
// c:ser > c:dLbls > c:txPr > a:p > a:pPr
733-
$objWriter->startElement('a:pPr');
734-
735-
// c:ser > c:dLbls > c:txPr > a:p > a:pPr > a:defRPr
736-
$objWriter->startElement('a:defRPr');
737-
738-
$objWriter->writeAttribute('b', ($series->getFont()->isBold() ? 'true' : 'false'));
739-
$objWriter->writeAttribute('i', ($series->getFont()->isItalic() ? 'true' : 'false'));
740-
$objWriter->writeAttribute('strike', ($series->getFont()->isStrikethrough() ? 'sngStrike' : 'noStrike'));
741-
$objWriter->writeAttribute('sz', ($series->getFont()->getSize() * 100));
742-
$objWriter->writeAttribute('u', $series->getFont()->getUnderline());
743-
$objWriter->writeAttributeIf($series->getFont()->isSuperScript(), 'baseline', '30000');
744-
$objWriter->writeAttributeIf($series->getFont()->isSubScript(), 'baseline', '-25000');
745-
746-
// c:ser > c:dLbls > c:txPr > a:p > a:pPr > a:defRPr > a:solidFill
747-
$objWriter->startElement('a:solidFill');
748-
749-
$this->writeColor($objWriter, $series->getFont()->getColor());
750-
751-
// c:ser > c:dLbls > c:txPr > a:p > a:pPr > a:defRPr > ## a:solidFill
752-
$objWriter->endElement();
753-
754-
// c:ser > c:dLbls > c:txPr > a:p > a:pPr > a:defRPr > a:latin
755-
$objWriter->startElement('a:latin');
756-
$objWriter->writeAttribute('typeface', $series->getFont()->getName());
757-
$objWriter->endElement();
758-
759-
// c:ser > c:dLbls > c:txPr > a:p > a:pPr > ##a:defRPr
760-
$objWriter->endElement();
761-
762-
// c:ser > c:dLbls > c:txPr > a:p > ##a:pPr
763-
$objWriter->endElement();
764-
765-
// c:ser > c:dLbls > c:txPr > a:p > a:endParaRPr
766-
$objWriter->startElement('a:endParaRPr');
767-
$objWriter->writeAttribute('lang', 'en-US');
768-
$objWriter->writeAttribute('dirty', '0');
769-
$objWriter->endElement();
770-
771-
// c:ser > c:dLbls > c:txPr > ##a:p
772-
$objWriter->endElement();
773-
774-
// c:ser > c:dLbls > ##c:txPr
775-
$objWriter->endElement();
776-
777-
// c:ser > c:dLbls > c:dLblPos
778-
$this->writeElementWithValAttribute($objWriter, 'c:dLblPos', $series->getLabelPosition());
779-
780721
// c:ser > c:dLbls > c:showVal
781722
$this->writeElementWithValAttribute($objWriter, 'c:showVal', $series->hasShowValue() ? '1' : '0');
782723

@@ -789,9 +730,6 @@ protected function writeTypeArea(XMLWriter $objWriter, Area $subject, $includeSh
789730
// c:ser > c:dLbls > c:showPercent
790731
$this->writeElementWithValAttribute($objWriter, 'c:showPercent', $series->hasShowPercentage() ? '1' : '0');
791732

792-
// c:ser > c:dLbls > c:showLeaderLines
793-
$this->writeElementWithValAttribute($objWriter, 'c:showLeaderLines', $series->hasShowLeaderLines() ? '1' : '0');
794-
795733
// c:ser > ##c:dLbls
796734
$objWriter->endElement();
797735

@@ -826,16 +764,6 @@ protected function writeTypeArea(XMLWriter $objWriter, Area $subject, $includeSh
826764
++$seriesIndex;
827765
}
828766

829-
// c:marker
830-
$objWriter->startElement('c:marker');
831-
$objWriter->writeAttribute('val', '1');
832-
$objWriter->endElement();
833-
834-
// c:smooth
835-
$objWriter->startElement('c:smooth');
836-
$objWriter->writeAttribute('val', '0');
837-
$objWriter->endElement();
838-
839767
// c:axId
840768
$objWriter->startElement('c:axId');
841769
$objWriter->writeAttribute('val', '52743552');
@@ -1999,8 +1927,9 @@ protected function writeSeriesMarker(XMLWriter $objWriter, Chart\Marker $oMarker
19991927
* @param XMLWriter $objWriter
20001928
* @param Chart\Axis $oAxis
20011929
* @param $typeAxis
1930+
* @param Chart\Type\AbstractType $typeChart
20021931
*/
2003-
protected function writeAxis(XMLWriter $objWriter, Chart\Axis $oAxis, $typeAxis)
1932+
protected function writeAxis(XMLWriter $objWriter, Chart\Axis $oAxis, $typeAxis, Chart\Type\AbstractType $typeChart)
20041933
{
20051934
if ($typeAxis != Chart\Axis::AXIS_X && $typeAxis != Chart\Axis::AXIS_Y) {
20061935
return;
@@ -2063,7 +1992,7 @@ protected function writeAxis(XMLWriter $objWriter, Chart\Axis $oAxis, $typeAxis)
20631992
// c:numFmt
20641993
$objWriter->startElement('c:numFmt');
20651994
$objWriter->writeAttribute('formatCode', $oAxis->getFormatCode());
2066-
$objWriter->writeAttribute('sourceLinked', '0');
1995+
$objWriter->writeAttribute('sourceLinked', '1');
20671996
$objWriter->endElement();
20681997

20691998
// c:majorTickMark
@@ -2171,7 +2100,13 @@ protected function writeAxis(XMLWriter $objWriter, Chart\Axis $oAxis, $typeAxis)
21712100
if ($typeAxis == Chart\Axis::AXIS_Y) {
21722101
// c:crossBetween
21732102
$objWriter->startElement('c:crossBetween');
2174-
$objWriter->writeAttribute('val', 'between');
2103+
// midCat : Position Axis On Tick Marks
2104+
// between : Between Tick Marks
2105+
if ($typeChart instanceof Area) {
2106+
$objWriter->writeAttribute('val', 'midCat');
2107+
} else {
2108+
$objWriter->writeAttribute('val', 'between');
2109+
}
21752110
$objWriter->endElement();
21762111
}
21772112

0 commit comments

Comments
 (0)