public function testHashCode() { $oSeries = new Series(); $object = new Line(); $object->addSeries($oSeries); $this->assertEquals(md5($oSeries->getHashCode() . get_class($object)), $object->getHashCode()); }
public function testChartLine() { $oSeries = new Series('Series', array('Jan' => 1, 'Feb' => 5, 'Mar' => 2)); $oSeries->setShowSeriesName(true); $oLine = new Line(); $oLine->addSeries($oSeries); $phpPowerPoint = new PhpPowerpoint(); $oSlide = $phpPowerPoint->getActiveSlide(); $oChart = $oSlide->createChartShape(); $oChart->getPlotArea()->setType($oLine); $pres = TestHelperDOCX::getDocument($phpPowerPoint, 'ODPresentation'); $element = '/office:document-content/office:body/office:chart/chart:chart'; $this->assertTrue($pres->elementExists($element, 'Object 1/content.xml')); $this->assertEquals('chart:line', $pres->getElementAttribute($element, 'chart:class', 'Object 1/content.xml')); }
public function testTypeLineSuperScript() { $seriesData = array('A' => 1, 'B' => 2, 'C' => 4, 'D' => 3, 'E' => 2); $oPHPPowerPoint = new PhpPowerpoint(); $oSlide = $oPHPPowerPoint->getActiveSlide(); $oShape = $oSlide->createChartShape(); $oShape->setResizeProportional(false)->setHeight(550)->setWidth(700)->setOffsetX(120)->setOffsetY(80); $oLine = new Line(); $oSeries = new Series('Downloads', $seriesData); $oSeries->getFont()->setSuperScript(true); $oLine->addSeries($oSeries); $oShape->getPlotArea()->setType($oLine); $oXMLDoc = TestHelperDOCX::getDocument($oPHPPowerPoint, 'PowerPoint2007'); $element = '/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:ser/c:dLbls/c:txPr/a:p/a:pPr/a:defRPr'; $this->assertTrue($oXMLDoc->elementExists($element, 'ppt/charts/' . $oShape->getIndexedFilename())); $this->assertEquals('30000', $oXMLDoc->getElementAttribute($element, 'baseline', 'ppt/charts/' . $oShape->getIndexedFilename())); }
echo date('H:i:s') . ' Remove first slide' . EOL; $objPHPPowerPoint->removeSlideByIndex(0); // Set Style $oFill = new Fill(); $oFill->setFillType(Fill::FILL_SOLID)->setStartColor(new Color('FFE06B20')); $oShadow = new Shadow(); $oShadow->setVisible(true)->setDirection(45)->setDistance(10); // Generate sample data for chart echo date('H:i:s') . ' Generate sample data for chart' . EOL; $seriesData = array('Monday' => 12, 'Tuesday' => 15, 'Wednesday' => 13, 'Thursday' => 17, 'Friday' => 14, 'Saturday' => 9, 'Sunday' => 7); // Create templated slide echo EOL . date('H:i:s') . ' Create templated slide' . EOL; $currentSlide = createTemplatedSlide($objPHPPowerPoint); // Create a line chart (that should be inserted in a shape) echo date('H:i:s') . ' Create a line chart (that should be inserted in a chart shape)' . EOL; $lineChart = new Line(); $series = new Series('Downloads', $seriesData); $series->setShowSeriesName(true); $series->setShowValue(true); $lineChart->addSeries($series); // Create a shape (chart) echo date('H:i:s') . ' Create a shape (chart)' . EOL; $shape = $currentSlide->createChartShape(); $shape->setName('PHPPowerPoint Daily Downloads')->setResizeProportional(false)->setHeight(550)->setWidth(700)->setOffsetX(120)->setOffsetY(80); $shape->setShadow($oShadow); $shape->setFill($oFill); $shape->getBorder()->setLineStyle(Border::LINE_SINGLE); $shape->getTitle()->setText('PHPPowerPoint Daily Downloads'); $shape->getTitle()->getFont()->setItalic(true); $shape->getPlotArea()->setType($lineChart); $shape->getView3D()->setRotationX(30);
public function testLegend() { $oSeries = new Series('Series', array('Jan' => 1, 'Feb' => 5, 'Mar' => 2)); $oSeries->setShowSeriesName(true); $oLine = new Line(); $oLine->addSeries($oSeries); $phpPowerPoint = new PhpPowerpoint(); $oSlide = $phpPowerPoint->getActiveSlide(); $oChart = $oSlide->createChartShape(); $oChart->getPlotArea()->setType($oLine); $pres = TestHelperDOCX::getDocument($phpPowerPoint, 'ODPresentation'); $element = '/office:document-content/office:body/office:chart/chart:chart/chart:legend'; $this->assertTrue($pres->elementExists($element, 'Object 1/content.xml')); $element = '/office:document-content/office:body/office:chart/chart:chart/table:table/table:table-header-rows'; $this->assertTrue($pres->elementExists($element, 'Object 1/content.xml')); $element = '/office:document-content/office:body/office:chart/chart:chart/table:table/table:table-header-rows/table:table-row'; $this->assertTrue($pres->elementExists($element, 'Object 1/content.xml')); $element = '/office:document-content/office:body/office:chart/chart:chart/table:table/table:table-header-rows/table:table-row/table:table-cell'; $this->assertTrue($pres->elementExists($element, 'Object 1/content.xml')); $element = '/office:document-content/office:body/office:chart/chart:chart/table:table/table:table-header-rows/table:table-row/table:table-cell[@office:value-type=\'string\']'; $this->assertTrue($pres->elementExists($element, 'Object 1/content.xml')); }
/** * Write Type Line * * @param \PhpOffice\PhpPowerpoint\Shared\XMLWriter $objWriter XML Writer * @param \PhpOffice\PhpPowerpoint\Shape\Chart\Type\Line $subject * @param boolean $includeSheet * @throws \Exception */ protected function writeTypeLine(XMLWriter $objWriter, Line $subject, $includeSheet = false) { // c:lineChart $objWriter->startElement('c:lineChart'); // c:grouping $objWriter->startElement('c:grouping'); $objWriter->writeAttribute('val', 'standard'); $objWriter->endElement(); // c:varyColors $objWriter->startElement('c:varyColors'); $objWriter->writeAttribute('val', '0'); $objWriter->endElement(); // Write series $seriesIndex = 0; foreach ($subject->getData() as $series) { // c:ser $objWriter->startElement('c:ser'); // c:idx $objWriter->startElement('c:idx'); $objWriter->writeAttribute('val', $seriesIndex); $objWriter->endElement(); // c:order $objWriter->startElement('c:order'); $objWriter->writeAttribute('val', $seriesIndex); $objWriter->endElement(); // c:tx $objWriter->startElement('c:tx'); $coords = $includeSheet ? 'Sheet1!$' . \PHPExcel_Cell::stringFromColumnIndex(1 + $seriesIndex) . '$1' : ''; $this->writeSingleValueOrReference($objWriter, $includeSheet, $series->getTitle(), $coords); $objWriter->endElement(); // c:dLbls $objWriter->startElement('c:dLbls'); // c:txPr $objWriter->startElement('c:txPr'); // a:bodyPr $objWriter->writeElement('a:bodyPr', null); // a:lstStyle $objWriter->writeElement('a:lstStyle', null); // a:p $objWriter->startElement('a:p'); // a:pPr $objWriter->startElement('a:pPr'); // a:defRPr $objWriter->startElement('a:defRPr'); $objWriter->writeAttribute('b', $series->getFont()->isBold() ? 'true' : 'false'); $objWriter->writeAttribute('i', $series->getFont()->isItalic() ? 'true' : 'false'); $objWriter->writeAttribute('strike', $series->getFont()->isStrikethrough() ? 'sngStrike' : 'noStrike'); $objWriter->writeAttribute('sz', $series->getFont()->getSize() * 100); $objWriter->writeAttribute('u', $series->getFont()->getUnderline()); if ($series->getFont()->isSuperScript() || $series->getFont()->isSubScript()) { if ($series->getFont()->isSuperScript()) { $objWriter->writeAttribute('baseline', '30000'); } elseif ($series->getFont()->isSubScript()) { $objWriter->writeAttribute('baseline', '-25000'); } } // Font - a:solidFill $objWriter->startElement('a:solidFill'); // a:srgbClr $objWriter->startElement('a:srgbClr'); $objWriter->writeAttribute('val', $series->getFont()->getColor()->getRGB()); $objWriter->endElement(); $objWriter->endElement(); // Font - a:latin $objWriter->startElement('a:latin'); $objWriter->writeAttribute('typeface', $series->getFont()->getName()); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:endParaRPr $objWriter->startElement('a:endParaRPr'); $objWriter->writeAttribute('lang', 'en-US'); $objWriter->writeAttribute('dirty', '0'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // c:showVal $this->writeElementWithValAttribute($objWriter, 'c:showVal', $series->hasShowValue() ? '1' : '0'); // c:showCatName $this->writeElementWithValAttribute($objWriter, 'c:showCatName', $series->hasShowCategoryName() ? '1' : '0'); // c:showSerName $this->writeElementWithValAttribute($objWriter, 'c:showSerName', $series->hasShowSeriesName() ? '1' : '0'); // c:showPercent $this->writeElementWithValAttribute($objWriter, 'c:showPercent', $series->hasShowPercentage() ? '1' : '0'); // c:showLeaderLines $this->writeElementWithValAttribute($objWriter, 'c:showLeaderLines', $series->hasShowLeaderLines() ? '1' : '0'); $objWriter->endElement(); // c:spPr $objWriter->startElement('c:spPr'); // Write fill $this->writeFill($objWriter, $series->getFill()); $objWriter->endElement(); // Write X axis data $axisXData = array_keys($series->getValues()); // c:cat $objWriter->startElement('c:cat'); $this->writeMultipleValuesOrReference($objWriter, $includeSheet, $axisXData, 'Sheet1!$A$2:$A$' . (1 + count($axisXData))); $objWriter->endElement(); // Write Y axis data $axisYData = array_values($series->getValues()); // c:val $objWriter->startElement('c:val'); $coords = $includeSheet ? 'Sheet1!$' . \PHPExcel_Cell::stringFromColumnIndex($seriesIndex + 1) . '$2:$' . \PHPExcel_Cell::stringFromColumnIndex($seriesIndex + 1) . '$' . (1 + count($axisYData)) : ''; $this->writeMultipleValuesOrReference($objWriter, $includeSheet, $axisYData, $coords); $objWriter->endElement(); $objWriter->endElement(); ++$seriesIndex; } // c:marker $objWriter->startElement('c:marker'); $objWriter->writeAttribute('val', '1'); $objWriter->endElement(); // c:smooth $objWriter->startElement('c:smooth'); $objWriter->writeAttribute('val', '0'); $objWriter->endElement(); // c:axId $objWriter->startElement('c:axId'); $objWriter->writeAttribute('val', '52743552'); $objWriter->endElement(); // c:axId $objWriter->startElement('c:axId'); $objWriter->writeAttribute('val', '52749440'); $objWriter->endElement(); // c:axId $objWriter->startElement('c:axId'); $objWriter->writeAttribute('val', '0'); $objWriter->endElement(); $objWriter->endElement(); }