Rev 2388 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php/*** PHPExcel** Copyright (c) 2006 - 2013 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 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel)* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL* @version ##VERSION##, ##DATE##*//*** PHPExcel_Writer_Excel2007_DocProps** @category PHPExcel* @package PHPExcel_Writer_Excel2007* @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel)*/class PHPExcel_Writer_Excel2007_DocProps extends PHPExcel_Writer_Excel2007_WriterPart{/*** Write docProps/app.xml to XML format** @param PHPExcel $pPHPExcel* @return string XML Output* @throws PHPExcel_Writer_Exception*/public function writeDocPropsApp(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');// Properties$objWriter->startElement('Properties');$objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/officeDocument/2006/extended-properties');$objWriter->writeAttribute('xmlns:vt', 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes');// Application$objWriter->writeElement('Application', 'Microsoft Excel');// DocSecurity$objWriter->writeElement('DocSecurity', '0');// ScaleCrop$objWriter->writeElement('ScaleCrop', 'false');// HeadingPairs$objWriter->startElement('HeadingPairs');// Vector$objWriter->startElement('vt:vector');$objWriter->writeAttribute('size', '2');$objWriter->writeAttribute('baseType', 'variant');// Variant$objWriter->startElement('vt:variant');$objWriter->writeElement('vt:lpstr', 'Worksheets');$objWriter->endElement();// Variant$objWriter->startElement('vt:variant');$objWriter->writeElement('vt:i4', $pPHPExcel->getSheetCount());$objWriter->endElement();$objWriter->endElement();$objWriter->endElement();// TitlesOfParts$objWriter->startElement('TitlesOfParts');// Vector$objWriter->startElement('vt:vector');$objWriter->writeAttribute('size', $pPHPExcel->getSheetCount());$objWriter->writeAttribute('baseType', 'lpstr');$sheetCount = $pPHPExcel->getSheetCount();for ($i = 0; $i < $sheetCount; ++$i) {$objWriter->writeElement('vt:lpstr', $pPHPExcel->getSheet($i)->getTitle());}$objWriter->endElement();$objWriter->endElement();// Company$objWriter->writeElement('Company', $pPHPExcel->getProperties()->getCompany());// Company$objWriter->writeElement('Manager', $pPHPExcel->getProperties()->getManager());// LinksUpToDate$objWriter->writeElement('LinksUpToDate', 'false');// SharedDoc$objWriter->writeElement('SharedDoc', 'false');// HyperlinksChanged$objWriter->writeElement('HyperlinksChanged', 'false');// AppVersion$objWriter->writeElement('AppVersion', '12.0000');$objWriter->endElement();// Returnreturn $objWriter->getData();}/*** Write docProps/core.xml to XML format** @param PHPExcel $pPHPExcel* @return string XML Output* @throws PHPExcel_Writer_Exception*/public function writeDocPropsCore(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');// cp:coreProperties$objWriter->startElement('cp:coreProperties');$objWriter->writeAttribute('xmlns:cp', 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties');$objWriter->writeAttribute('xmlns:dc', 'http://purl.org/dc/elements/1.1/');$objWriter->writeAttribute('xmlns:dcterms', 'http://purl.org/dc/terms/');$objWriter->writeAttribute('xmlns:dcmitype', 'http://purl.org/dc/dcmitype/');$objWriter->writeAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance');// dc:creator$objWriter->writeElement('dc:creator', $pPHPExcel->getProperties()->getCreator());// cp:lastModifiedBy$objWriter->writeElement('cp:lastModifiedBy', $pPHPExcel->getProperties()->getLastModifiedBy());// dcterms:created$objWriter->startElement('dcterms:created');$objWriter->writeAttribute('xsi:type', 'dcterms:W3CDTF');$objWriter->writeRawData(date(DATE_W3C, $pPHPExcel->getProperties()->getCreated()));$objWriter->endElement();// dcterms:modified$objWriter->startElement('dcterms:modified');$objWriter->writeAttribute('xsi:type', 'dcterms:W3CDTF');$objWriter->writeRawData(date(DATE_W3C, $pPHPExcel->getProperties()->getModified()));$objWriter->endElement();// dc:title$objWriter->writeElement('dc:title', $pPHPExcel->getProperties()->getTitle());// dc:description$objWriter->writeElement('dc:description', $pPHPExcel->getProperties()->getDescription());// dc:subject$objWriter->writeElement('dc:subject', $pPHPExcel->getProperties()->getSubject());// cp:keywords$objWriter->writeElement('cp:keywords', $pPHPExcel->getProperties()->getKeywords());// cp:category$objWriter->writeElement('cp:category', $pPHPExcel->getProperties()->getCategory());$objWriter->endElement();// Returnreturn $objWriter->getData();}/*** Write docProps/custom.xml to XML format** @param PHPExcel $pPHPExcel* @return string XML Output* @throws PHPExcel_Writer_Exception*/public function writeDocPropsCustom(PHPExcel $pPHPExcel = null){$customPropertyList = $pPHPExcel->getProperties()->getCustomProperties();if (empty($customPropertyList)) {return;}// 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');// cp:coreProperties$objWriter->startElement('Properties');$objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/officeDocument/2006/custom-properties');$objWriter->writeAttribute('xmlns:vt', 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes');foreach($customPropertyList as $key => $customProperty) {$propertyValue = $pPHPExcel->getProperties()->getCustomPropertyValue($customProperty);$propertyType = $pPHPExcel->getProperties()->getCustomPropertyType($customProperty);$objWriter->startElement('property');$objWriter->writeAttribute('fmtid', '{D5CDD505-2E9C-101B-9397-08002B2CF9AE}');$objWriter->writeAttribute('pid', $key+2);$objWriter->writeAttribute('name', $customProperty);switch($propertyType) {case 'i' :$objWriter->writeElement('vt:i4', $propertyValue);break;case 'f' :$objWriter->writeElement('vt:r8', $propertyValue);break;case 'b' :$objWriter->writeElement('vt:bool', ($propertyValue) ? 'true' : 'false');break;case 'd' :$objWriter->startElement('vt:filetime');$objWriter->writeRawData(date(DATE_W3C, $propertyValue));$objWriter->endElement();break;default :$objWriter->writeElement('vt:lpwstr', $propertyValue);break;}$objWriter->endElement();}$objWriter->endElement();// Returnreturn $objWriter->getData();}}