Example #1
0
 /**
  * Write worksheet relationships to XML format
  *
  * Numbering is as follows:
  *     rId1                 - Drawings
  *  rId_hyperlink_x     - Hyperlinks
  *
  * @param     \PHPExcel\Worksheet    $pWorksheet
  * @param     int                    $pWorksheetId
  * @param    boolean                $includeCharts    Flag indicating if we should write charts
  * @return string          XML Output
  * @throws     \PHPExcel\Writer\Exception
  */
 public function writeWorksheetRelationships(\PHPExcel\Worksheet $pWorksheet = null, $pWorksheetId = 1, $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');
     // Write drawing relationships?
     $d = 0;
     if ($includeCharts) {
         $charts = $pWorksheet->getChartCollection();
     } else {
         $charts = array();
     }
     if ($pWorksheet->getDrawingCollection()->count() > 0 || count($charts) > 0) {
         $this->writeRelationship($objWriter, ++$d, 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing', '../drawings/drawing' . $pWorksheetId . '.xml');
     }
     // Write chart relationships?
     //            $chartCount = 0;
     //            $charts = $pWorksheet->getChartCollection();
     //            echo 'Chart Rels: ' , count($charts) , '<br />';
     //            if (count($charts) > 0) {
     //                foreach ($charts as $chart) {
     //                    $this->writeRelationship(
     //                        $objWriter,
     //                        ++$d,
     //                        'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart',
     //                        '../charts/chart' . ++$chartCount . '.xml'
     //                    );
     //                }
     //            }
     //
     // Write hyperlink relationships?
     $i = 1;
     foreach ($pWorksheet->getHyperlinkCollection() as $hyperlink) {
         if (!$hyperlink->isInternal()) {
             $this->writeRelationship($objWriter, '_hyperlink_' . $i, 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink', $hyperlink->getUrl(), 'External');
             ++$i;
         }
     }
     // Write comments relationship?
     $i = 1;
     if (count($pWorksheet->getComments()) > 0) {
         $this->writeRelationship($objWriter, '_comments_vml' . $i, 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing', '../drawings/vmlDrawing' . $pWorksheetId . '.vml');
         $this->writeRelationship($objWriter, '_comments' . $i, 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments', '../comments' . $pWorksheetId . '.xml');
     }
     // Write header/footer relationship?
     $i = 1;
     if (count($pWorksheet->getHeaderFooter()->getImages()) > 0) {
         $this->writeRelationship($objWriter, '_headerfooter_vml' . $i, 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing', '../drawings/vmlDrawingHF' . $pWorksheetId . '.vml');
     }
     $objWriter->endElement();
     return $objWriter->getData();
 }
Example #2
0
 /**
  * Write VML comments to XML format
  *
  * @param \PHPExcel\Worksheet $pWorksheet
  * @return string XML Output
  * @throws \PHPExcel\Writer\Exception
  */
 public function writeVMLComments(\PHPExcel\Worksheet $pWorksheet = null)
 {
     // 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');
     // Comments cache
     $comments = $pWorksheet->getComments();
     // xml
     $objWriter->startElement('xml');
     $objWriter->writeAttribute('xmlns:v', 'urn:schemas-microsoft-com:vml');
     $objWriter->writeAttribute('xmlns:o', 'urn:schemas-microsoft-com:office:office');
     $objWriter->writeAttribute('xmlns:x', 'urn:schemas-microsoft-com:office:excel');
     // o:shapelayout
     $objWriter->startElement('o:shapelayout');
     $objWriter->writeAttribute('v:ext', 'edit');
     // o:idmap
     $objWriter->startElement('o:idmap');
     $objWriter->writeAttribute('v:ext', 'edit');
     $objWriter->writeAttribute('data', '1');
     $objWriter->endElement();
     $objWriter->endElement();
     // v:shapetype
     $objWriter->startElement('v:shapetype');
     $objWriter->writeAttribute('id', '_x0000_t202');
     $objWriter->writeAttribute('coordsize', '21600,21600');
     $objWriter->writeAttribute('o:spt', '202');
     $objWriter->writeAttribute('path', 'm,l,21600r21600,l21600,xe');
     // v:stroke
     $objWriter->startElement('v:stroke');
     $objWriter->writeAttribute('joinstyle', 'miter');
     $objWriter->endElement();
     // v:path
     $objWriter->startElement('v:path');
     $objWriter->writeAttribute('gradientshapeok', 't');
     $objWriter->writeAttribute('o:connecttype', 'rect');
     $objWriter->endElement();
     $objWriter->endElement();
     // Loop through comments
     foreach ($comments as $key => $value) {
         $this->writeVMLComment($objWriter, $key, $value);
     }
     $objWriter->endElement();
     // Return
     return $objWriter->getData();
 }
Example #3
0
 /**
  * Write LegacyDrawing
  *
  * @param    \PHPExcel\Shared\XMLWriter        $objWriter        XML Writer
  * @param    \PHPExcel\Worksheet                $pSheet            Worksheet
  * @throws    \PHPExcel\Writer\Exception
  */
 private function writeLegacyDrawing(\PHPExcel\Shared\XMLWriter $objWriter = null, \PHPExcel\Worksheet $pSheet = null)
 {
     // If sheet contains comments, add the relationships
     if (count($pSheet->getComments()) > 0) {
         $objWriter->startElement('legacyDrawing');
         $objWriter->writeAttribute('r:id', 'rId_comments_vml1');
         $objWriter->endElement();
     }
 }