Ejemplo n.º 1
0
 public function testConstruct()
 {
     $object = new Chart();
     $this->assertInstanceOf('PhpOffice\\PhpPowerpoint\\Shape\\Chart\\Title', $object->getTitle());
     $this->assertInstanceOf('PhpOffice\\PhpPowerpoint\\Shape\\Chart\\Legend', $object->getLegend());
     $this->assertInstanceOf('PhpOffice\\PhpPowerpoint\\Shape\\Chart\\PlotArea', $object->getPlotArea());
     $this->assertInstanceOf('PhpOffice\\PhpPowerpoint\\Shape\\Chart\\View3D', $object->getView3D());
 }
Ejemplo n.º 2
0
 /**
  * @param Chart $chart
  */
 private function writeTitleStyle(Chart $chart)
 {
     // style:style
     $this->xmlContent->startElement('style:style');
     $this->xmlContent->writeAttribute('style:name', 'styleTitle');
     $this->xmlContent->writeAttribute('style:family', 'chart');
     // style:text-properties
     $this->xmlContent->startElement('style:text-properties');
     $this->xmlContent->writeAttribute('fo:color', '#' . $chart->getTitle()->getFont()->getColor()->getRGB());
     $this->xmlContent->writeAttribute('fo:font-family', $chart->getTitle()->getFont()->getName());
     $this->xmlContent->writeAttribute('fo:font-size', $chart->getTitle()->getFont()->getSize() . 'pt');
     $this->xmlContent->writeAttribute('fo:font-style', $chart->getTitle()->getFont()->isItalic() ? 'italic' : 'normal');
     // > style:text-properties
     $this->xmlContent->endElement();
     // > style:style
     $this->xmlContent->endElement();
 }
Ejemplo n.º 3
0
 /**
  * Write table Chart
  * @param XMLWriter $objWriter
  * @param Chart $shape
  */
 public function writeShapeChart(XMLWriter $objWriter, Chart $shape)
 {
     $parentWriter = $this->getParentWriter();
     if (!$parentWriter instanceof ODPresentation) {
         throw new \Exception('The $parentWriter is not an instance of \\PhpOffice\\PhpPowerpoint\\Writer\\ODPresentation');
     }
     $parentWriter->chartArray[$this->shapeId] = $shape;
     // draw:frame
     $objWriter->startElement('draw:frame');
     $objWriter->writeAttribute('draw:name', $shape->getTitle()->getText());
     $objWriter->writeAttribute('svg:x', String::numberFormat(CommonDrawing::pixelsToCentimeters($shape->getOffsetX()), 3) . 'cm');
     $objWriter->writeAttribute('svg:y', String::numberFormat(CommonDrawing::pixelsToCentimeters($shape->getOffsetY()), 3) . 'cm');
     $objWriter->writeAttribute('svg:height', String::numberFormat(CommonDrawing::pixelsToCentimeters($shape->getHeight()), 3) . 'cm');
     $objWriter->writeAttribute('svg:width', String::numberFormat(CommonDrawing::pixelsToCentimeters($shape->getWidth()), 3) . 'cm');
     // draw:object
     $objWriter->startElement('draw:object');
     $objWriter->writeAttribute('xlink:href', './Object ' . $this->shapeId);
     $objWriter->writeAttribute('xlink:type', 'simple');
     $objWriter->writeAttribute('xlink:show', 'embed');
     // > draw:object
     $objWriter->endElement();
     // > draw:frame
     $objWriter->endElement();
 }
Ejemplo n.º 4
0
 /**
  * Write chart to XML format
  *
  * @param  PHPPowerPoint             $presentation
  * @param  \PhpOffice\PhpPowerpoint\Shape\Chart $chart
  * @param  string                    $tempName
  * @return string                    String output
  * @throws \Exception
  */
 public function writeSpreadsheet(PHPPowerPoint $presentation, $chart, $tempName)
 {
     // Need output?
     if (!$chart->hasIncludedSpreadsheet()) {
         throw new \Exception('No spreadsheet output is required for the given chart.');
     }
     // Verify \PHPExcel
     if (!class_exists('PHPExcel')) {
         throw new \Exception('PHPExcel has not been loaded. Include PHPExcel.php in your script, e.g. require_once \'PHPExcel.php\'.');
     }
     // Create new spreadsheet
     $workbook = new \PHPExcel();
     // Set properties
     $title = $chart->getTitle()->getText();
     if (strlen($title) == 0) {
         $title = 'Chart';
     }
     $workbook->getProperties()->setCreator($presentation->getProperties()->getCreator())->setLastModifiedBy($presentation->getProperties()->getLastModifiedBy())->setTitle($title);
     // Add chart data
     $sheet = $workbook->setActiveSheetIndex(0);
     $sheet->setTitle('Sheet1');
     // Write series
     $seriesIndex = 0;
     foreach ($chart->getPlotArea()->getType()->getData() as $series) {
         // Title
         $sheet->setCellValueByColumnAndRow(1 + $seriesIndex, 1, $series->getTitle());
         // X-axis
         $axisXData = array_keys($series->getValues());
         for ($i = 0; $i < count($axisXData); $i++) {
             $sheet->setCellValueByColumnAndRow(0, $i + 2, $axisXData[$i]);
         }
         // Y-axis
         $axisYData = array_values($series->getValues());
         for ($i = 0; $i < count($axisYData); $i++) {
             $sheet->setCellValueByColumnAndRow(1 + $seriesIndex, $i + 2, $axisYData[$i]);
         }
         ++$seriesIndex;
     }
     // Save to string
     $writer = \PHPExcel_IOFactory::createWriter($workbook, 'Excel2007');
     $writer->save($tempName);
     // Load file in memory
     $returnValue = file_get_contents($tempName);
     @unlink($tempName);
     return $returnValue;
 }
Ejemplo n.º 5
0
 /**
  * Write table Chart
  * @param XMLWriter $objWriter
  * @param Chart $shape
  * @param integer $shapeId
  */
 public function writeShapeChart(XMLWriter $objWriter, Chart $shape, $shapeId)
 {
     $this->getParentWriter()->chartArray[$shapeId] = $shape;
     // draw:frame
     $objWriter->startElement('draw:frame');
     $objWriter->writeAttribute('draw:name', $shape->getTitle()->getText());
     $objWriter->writeAttribute('svg:x', String::numberFormat(SharedDrawing::pixelsToCentimeters($shape->getOffsetX()), 3) . 'cm');
     $objWriter->writeAttribute('svg:y', String::numberFormat(SharedDrawing::pixelsToCentimeters($shape->getOffsetY()), 3) . 'cm');
     $objWriter->writeAttribute('svg:height', String::numberFormat(SharedDrawing::pixelsToCentimeters($shape->getHeight()), 3) . 'cm');
     $objWriter->writeAttribute('svg:width', String::numberFormat(SharedDrawing::pixelsToCentimeters($shape->getWidth()), 3) . 'cm');
     // draw:object
     $objWriter->startElement('draw:object');
     $objWriter->writeAttribute('xlink:href', './Object ' . $shapeId);
     $objWriter->writeAttribute('xlink:type', 'simple');
     $objWriter->writeAttribute('xlink:show', 'embed');
     // > draw:object
     $objWriter->endElement();
     // > draw:frame
     $objWriter->endElement();
 }