Example #1
0
 /**
  * Write drawings to XML format
  *
  * @param     \PHPExcel\Shared\XMLWriter    $objWriter         XML Writer
  * @param     Chart                $pChart
  * @param     int                            $pRelationId
  * @throws     \PHPExcel\Writer\Exception
  */
 public function writeChart(\PHPExcel\Shared\XMLWriter $objWriter = null, Chart $pChart = null, $pRelationId = -1)
 {
     $tl = $pChart->getTopLeftPosition();
     $tl['colRow'] = \PHPExcel\Cell::coordinateFromString($tl['cell']);
     $br = $pChart->getBottomRightPosition();
     $br['colRow'] = \PHPExcel\Cell::coordinateFromString($br['cell']);
     $objWriter->startElement('xdr:twoCellAnchor');
     $objWriter->startElement('xdr:from');
     $objWriter->writeElement('xdr:col', \PHPExcel\Cell::columnIndexFromString($tl['colRow'][0]) - 1);
     $objWriter->writeElement('xdr:colOff', \PHPExcel\Shared\Drawing::pixelsToEMU($tl['xOffset']));
     $objWriter->writeElement('xdr:row', $tl['colRow'][1] - 1);
     $objWriter->writeElement('xdr:rowOff', \PHPExcel\Shared\Drawing::pixelsToEMU($tl['yOffset']));
     $objWriter->endElement();
     $objWriter->startElement('xdr:to');
     $objWriter->writeElement('xdr:col', \PHPExcel\Cell::columnIndexFromString($br['colRow'][0]) - 1);
     $objWriter->writeElement('xdr:colOff', \PHPExcel\Shared\Drawing::pixelsToEMU($br['xOffset']));
     $objWriter->writeElement('xdr:row', $br['colRow'][1] - 1);
     $objWriter->writeElement('xdr:rowOff', \PHPExcel\Shared\Drawing::pixelsToEMU($br['yOffset']));
     $objWriter->endElement();
     $objWriter->startElement('xdr:graphicFrame');
     $objWriter->writeAttribute('macro', '');
     $objWriter->startElement('xdr:nvGraphicFramePr');
     $objWriter->startElement('xdr:cNvPr');
     $objWriter->writeAttribute('name', 'Chart ' . $pRelationId);
     $objWriter->writeAttribute('id', 1025 * $pRelationId);
     $objWriter->endElement();
     $objWriter->startElement('xdr:cNvGraphicFramePr');
     $objWriter->startElement('a:graphicFrameLocks');
     $objWriter->endElement();
     $objWriter->endElement();
     $objWriter->endElement();
     $objWriter->startElement('xdr:xfrm');
     $objWriter->startElement('a:off');
     $objWriter->writeAttribute('x', '0');
     $objWriter->writeAttribute('y', '0');
     $objWriter->endElement();
     $objWriter->startElement('a:ext');
     $objWriter->writeAttribute('cx', '0');
     $objWriter->writeAttribute('cy', '0');
     $objWriter->endElement();
     $objWriter->endElement();
     $objWriter->startElement('a:graphic');
     $objWriter->startElement('a:graphicData');
     $objWriter->writeAttribute('uri', 'http://schemas.openxmlformats.org/drawingml/2006/chart');
     $objWriter->startElement('c:chart');
     $objWriter->writeAttribute('xmlns:c', 'http://schemas.openxmlformats.org/drawingml/2006/chart');
     $objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships');
     $objWriter->writeAttribute('r:id', 'rId' . $pRelationId);
     $objWriter->endElement();
     $objWriter->endElement();
     $objWriter->endElement();
     $objWriter->endElement();
     $objWriter->startElement('xdr:clientData');
     $objWriter->endElement();
     $objWriter->endElement();
 }
Example #2
0
 /**
  * Write charts to XML format
  *
  * @param  \PHPExcel\Chart $pChart
  *
  * @return  string            XML Output
  * @throws  \PHPExcel\Writer\Exception
  */
 public function writeChart(\PHPExcel\Chart $pChart = null, $calculateCellValues = true)
 {
     $this->calculateCellValues = $calculateCellValues;
     // Create XML writer
     $objWriter = null;
     if ($this->getParentWriter()->getUseDiskCaching()) {
         $objWriter = new \PHPExcel\Shared\XMLWriter(\PHPExcel\Shared\XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
     } else {
         $objWriter = new \PHPExcel\Shared\XMLWriter(\PHPExcel\Shared\XMLWriter::STORAGE_MEMORY);
     }
     //    Ensure that data series values are up-to-date before we save
     if ($this->calculateCellValues) {
         $pChart->refresh();
     }
     // XML header
     $objWriter->startDocument('1.0', 'UTF-8', 'yes');
     // c:chartSpace
     $objWriter->startElement('c:chartSpace');
     $objWriter->writeAttribute('xmlns:c', 'http://schemas.openxmlformats.org/drawingml/2006/chart');
     $objWriter->writeAttribute('xmlns:a', 'http://schemas.openxmlformats.org/drawingml/2006/main');
     $objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships');
     $objWriter->startElement('c:date1904');
     $objWriter->writeAttribute('val', 0);
     $objWriter->endElement();
     $objWriter->startElement('c:lang');
     $objWriter->writeAttribute('val', "en-GB");
     $objWriter->endElement();
     $objWriter->startElement('c:roundedCorners');
     $objWriter->writeAttribute('val', 0);
     $objWriter->endElement();
     $this->writeAlternateContent($objWriter);
     $objWriter->startElement('c:chart');
     $this->writeTitle($pChart->getTitle(), $objWriter);
     $objWriter->startElement('c:autoTitleDeleted');
     $objWriter->writeAttribute('val', 0);
     $objWriter->endElement();
     $this->writePlotArea($pChart->getPlotArea(), $pChart->getXAxisLabel(), $pChart->getYAxisLabel(), $objWriter, $pChart->getWorksheet(), $pChart->getChartAxisX(), $pChart->getChartAxisY(), $pChart->getMajorGridlines(), $pChart->getMinorGridlines());
     $this->writeLegend($pChart->getLegend(), $objWriter);
     $objWriter->startElement('c:plotVisOnly');
     $objWriter->writeAttribute('val', 1);
     $objWriter->endElement();
     $objWriter->startElement('c:dispBlanksAs');
     $objWriter->writeAttribute('val', "gap");
     $objWriter->endElement();
     $objWriter->startElement('c:showDLblsOverMax');
     $objWriter->writeAttribute('val', 0);
     $objWriter->endElement();
     $objWriter->endElement();
     $this->writePrintSettings($objWriter);
     $objWriter->endElement();
     // Return
     return $objWriter->getData();
 }