Example #1
0
 /**
  * Write drawings to XML format
  *
  * @param     \PHPExcel\Worksheet    $pWorksheet
  * @param    int                    &$chartRef        Chart ID
  * @param    boolean                $includeCharts    Flag indicating if we should include drawing details for charts
  * @return string          XML Output
  * @throws     \PHPExcel\Writer\Exception
  */
 public function writeDrawings(\PHPExcel\Worksheet $pWorksheet, &$chartRef, $includeCharts = false)
 {
     // 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);
     }
     // XML header
     $objWriter->startDocument('1.0', 'UTF-8', 'yes');
     // xdr:wsDr
     $objWriter->startElement('xdr:wsDr');
     $objWriter->writeAttribute('xmlns:xdr', 'http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing');
     $objWriter->writeAttribute('xmlns:a', 'http://schemas.openxmlformats.org/drawingml/2006/main');
     // Loop through images and write drawings
     $i = 1;
     $iterator = $pWorksheet->getDrawingCollection()->getIterator();
     while ($iterator->valid()) {
         $this->writeDrawing($objWriter, $iterator->current(), $i);
         $iterator->next();
         ++$i;
     }
     if ($includeCharts) {
         $chartCount = $pWorksheet->getChartCount();
         // Loop through charts and write the chart position
         if ($chartCount > 0) {
             for ($c = 0; $c < $chartCount; ++$c) {
                 $this->writeChart($objWriter, $pWorksheet->getChartByIndex($c), $c + $i);
             }
         }
     }
     $objWriter->endElement();
     // Return
     return $objWriter->getData();
 }
Example #2
0
 /**
  * Write drawing relationships to XML format
  *
  * @param     \PHPExcel\Worksheet    $pWorksheet
  * @param    int                    &$chartRef        Chart ID
  * @param    boolean                $includeCharts    Flag indicating if we should write charts
  * @return string          XML Output
  * @throws     \PHPExcel\Writer\Exception
  */
 public function writeDrawingRelationships(\PHPExcel\Worksheet $pWorksheet, &$chartRef, $includeCharts = false)
 {
     // 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);
     }
     // XML header
     $objWriter->startDocument('1.0', 'UTF-8', 'yes');
     // Relationships
     $objWriter->startElement('Relationships');
     $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships');
     // Loop through images and write relationships
     $i = 1;
     $iterator = $pWorksheet->getDrawingCollection()->getIterator();
     while ($iterator->valid()) {
         if ($iterator->current() instanceof \PHPExcel\Worksheet\Drawing || $iterator->current() instanceof \PHPExcel\Worksheet\MemoryDrawing) {
             // Write relationship for image drawing
             $this->writeRelationship($objWriter, $i, 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image', '../media/' . str_replace(' ', '', $iterator->current()->getIndexedFilename()));
         }
         $iterator->next();
         ++$i;
     }
     if ($includeCharts) {
         // Loop through charts and write relationships
         $chartCount = $pWorksheet->getChartCount();
         if ($chartCount > 0) {
             for ($c = 0; $c < $chartCount; ++$c) {
                 $this->writeRelationship($objWriter, $i++, 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart', '../charts/chart' . ++$chartRef . '.xml');
             }
         }
     }
     $objWriter->endElement();
     return $objWriter->getData();
 }