| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437 | 
							- <?php
 
- /**
 
-  * PHPExcel
 
-  *
 
-  * Copyright (c) 2006 - 2014 PHPExcel
 
-  *
 
-  * This library is free software; you can redistribute it and/or
 
-  * modify it under the terms of the GNU Lesser General Public
 
-  * License as published by the Free Software Foundation; either
 
-  * version 2.1 of the License, or (at your option) any later version.
 
-  *
 
-  * This library is distributed in the hope that it will be useful,
 
-  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
-  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
-  * Lesser General Public License for more details.
 
-  *
 
-  * You should have received a copy of the GNU Lesser General Public
 
-  * License along with this library; if not, write to the Free Software
 
-  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 
-  *
 
-  * @category   PHPExcel
 
-  * @package    PHPExcel_Writer_Excel2007
 
-  * @copyright  Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
 
-  * @license    http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt	LGPL
 
-  * @version    1.8.0, 2014-03-02
 
-  */
 
- /**
 
-  * PHPExcel_Writer_Excel2007_Rels
 
-  *
 
-  * @category   PHPExcel
 
-  * @package    PHPExcel_Writer_Excel2007
 
-  * @copyright  Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
 
-  */
 
- class PHPExcel_Writer_Excel2007_Rels extends PHPExcel_Writer_Excel2007_WriterPart
 
- {
 
- 	/**
 
- 	 * Write relationships to XML format
 
- 	 *
 
- 	 * @param 	PHPExcel	$pPHPExcel
 
- 	 * @return 	string 		XML Output
 
- 	 * @throws 	PHPExcel_Writer_Exception
 
- 	 */
 
- 	public function writeRelationships(PHPExcel $pPHPExcel = 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');
 
- 		// Relationships
 
- 		$objWriter->startElement('Relationships');
 
- 		$objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships');
 
- 			$customPropertyList = $pPHPExcel->getProperties()->getCustomProperties();
 
- 			if (!empty($customPropertyList)) {
 
- 				// Relationship docProps/app.xml
 
- 				$this->_writeRelationship(
 
- 					$objWriter,
 
- 					4,
 
- 					'http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties',
 
- 					'docProps/custom.xml'
 
- 				);
 
- 			}
 
- 			// Relationship docProps/app.xml
 
- 			$this->_writeRelationship(
 
- 				$objWriter,
 
- 				3,
 
- 				'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties',
 
- 				'docProps/app.xml'
 
- 			);
 
- 			// Relationship docProps/core.xml
 
- 			$this->_writeRelationship(
 
- 				$objWriter,
 
- 				2,
 
- 				'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties',
 
- 				'docProps/core.xml'
 
- 			);
 
- 			// Relationship xl/workbook.xml
 
- 			$this->_writeRelationship(
 
- 				$objWriter,
 
- 				1,
 
- 				'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument',
 
- 				'xl/workbook.xml'
 
- 			);
 
- 			// a custom UI in workbook ?
 
- 			if($pPHPExcel->hasRibbon()){
 
- 				$this->_writeRelationShip(
 
- 					$objWriter,
 
- 					5,
 
- 					'http://schemas.microsoft.com/office/2006/relationships/ui/extensibility',
 
- 					$pPHPExcel->getRibbonXMLData('target')
 
- 				);
 
- 			}
 
- 		$objWriter->endElement();
 
- 		// Return
 
- 		return $objWriter->getData();
 
- 	}
 
- 	/**
 
- 	 * Write workbook relationships to XML format
 
- 	 *
 
- 	 * @param 	PHPExcel	$pPHPExcel
 
- 	 * @return 	string 		XML Output
 
- 	 * @throws 	PHPExcel_Writer_Exception
 
- 	 */
 
- 	public function writeWorkbookRelationships(PHPExcel $pPHPExcel = 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');
 
- 		// Relationships
 
- 		$objWriter->startElement('Relationships');
 
- 		$objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships');
 
- 			// Relationship styles.xml
 
- 			$this->_writeRelationship(
 
- 				$objWriter,
 
- 				1,
 
- 				'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles',
 
- 				'styles.xml'
 
- 			);
 
- 			// Relationship theme/theme1.xml
 
- 			$this->_writeRelationship(
 
- 				$objWriter,
 
- 				2,
 
- 				'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme',
 
- 				'theme/theme1.xml'
 
- 			);
 
- 			// Relationship sharedStrings.xml
 
- 			$this->_writeRelationship(
 
- 				$objWriter,
 
- 				3,
 
- 				'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings',
 
- 				'sharedStrings.xml'
 
- 			);
 
- 			// Relationships with sheets
 
- 			$sheetCount = $pPHPExcel->getSheetCount();
 
- 			for ($i = 0; $i < $sheetCount; ++$i) {
 
- 				$this->_writeRelationship(
 
- 					$objWriter,
 
- 					($i + 1 + 3),
 
- 					'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet',
 
- 					'worksheets/sheet' . ($i + 1) . '.xml'
 
- 				);
 
- 			}
 
- 			// Relationships for vbaProject if needed
 
- 			// id : just after the last sheet
 
- 			if($pPHPExcel->hasMacros()){
 
- 				$this->_writeRelationShip(
 
- 					$objWriter,
 
- 					($i + 1 + 3),
 
- 					'http://schemas.microsoft.com/office/2006/relationships/vbaProject',
 
- 					'vbaProject.bin'
 
- 				);
 
- 				++$i;//increment i if needed for an another relation
 
- 			}
 
- 		$objWriter->endElement();
 
- 		// Return
 
- 		return $objWriter->getData();
 
- 	}
 
- 	/**
 
- 	 * 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
 
- 		return $objWriter->getData();
 
- 	}
 
- 	/**
 
- 	 * 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 = null, &$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
 
- 		return $objWriter->getData();
 
- 	}
 
- 	/**
 
- 	 * Write header/footer drawing relationships to XML format
 
- 	 *
 
- 	 * @param 	PHPExcel_Worksheet			$pWorksheet
 
- 	 * @return 	string 						XML Output
 
- 	 * @throws 	PHPExcel_Writer_Exception
 
- 	 */
 
- 	public function writeHeaderFooterDrawingRelationships(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');
 
- 		// Relationships
 
- 		$objWriter->startElement('Relationships');
 
- 		$objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships');
 
- 			// Loop through images and write relationships
 
- 			foreach ($pWorksheet->getHeaderFooter()->getImages() as $key => $value) {
 
- 				// Write relationship for image drawing
 
- 				$this->_writeRelationship(
 
- 					$objWriter,
 
- 					$key,
 
- 					'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image',
 
- 					'../media/' . $value->getIndexedFilename()
 
- 				);
 
- 			}
 
- 		$objWriter->endElement();
 
- 		// Return
 
- 		return $objWriter->getData();
 
- 	}
 
- 	/**
 
- 	 * Write Override content type
 
- 	 *
 
- 	 * @param 	PHPExcel_Shared_XMLWriter 	$objWriter 		XML Writer
 
- 	 * @param 	int							$pId			Relationship ID. rId will be prepended!
 
- 	 * @param 	string						$pType			Relationship type
 
- 	 * @param 	string 						$pTarget		Relationship target
 
- 	 * @param 	string 						$pTargetMode	Relationship target mode
 
- 	 * @throws 	PHPExcel_Writer_Exception
 
- 	 */
 
- 	private function _writeRelationship(PHPExcel_Shared_XMLWriter $objWriter = null, $pId = 1, $pType = '', $pTarget = '', $pTargetMode = '')
 
- 	{
 
- 		if ($pType != '' && $pTarget != '') {
 
- 			// Write relationship
 
- 			$objWriter->startElement('Relationship');
 
- 			$objWriter->writeAttribute('Id', 		'rId' . $pId);
 
- 			$objWriter->writeAttribute('Type', 		$pType);
 
- 			$objWriter->writeAttribute('Target',	$pTarget);
 
- 			if ($pTargetMode != '') {
 
- 				$objWriter->writeAttribute('TargetMode',	$pTargetMode);
 
- 			}
 
- 			$objWriter->endElement();
 
- 		} else {
 
- 			throw new PHPExcel_Writer_Exception("Invalid parameters passed.");
 
- 		}
 
- 	}
 
- }
 
 
  |