示例#1
0
 /**
  * Serialize PHPExcel object to XML
  *
  * @param 	PHPExcel	$pPHPExcel
  * @param 	string		$pFilename
  * @return 	string 		XML Output
  * @throws 	Exception
  */
 private function _writeSerialized(PHPExcel $pPHPExcel = null, $pFilename = '')
 {
     // Clone $pPHPExcel
     $pPHPExcel = clone $pPHPExcel;
     // Update media links
     $sheetCount = $pPHPExcel->getSheetCount();
     for ($i = 0; $i < $sheetCount; ++$i) {
         for ($j = 0; $j < $pPHPExcel->getSheet($i)->getDrawingCollection()->count(); ++$j) {
             if ($pPHPExcel->getSheet($i)->getDrawingCollection()->offsetGet($j) instanceof PHPExcel_Worksheet_BaseDrawing) {
                 $imgTemp =& $pPHPExcel->getSheet($i)->getDrawingCollection()->offsetGet($j);
                 $imgTemp->setPath('zip://' . $pFilename . '#media/' . $imgTemp->getFilename(), false);
             }
         }
     }
     // Create XML writer
     $objWriter = new xmlWriter();
     $objWriter->openMemory();
     $objWriter->setIndent(true);
     // XML header
     $objWriter->startDocument('1.0', 'UTF-8', 'yes');
     // PHPExcel
     $objWriter->startElement('PHPExcel');
     $objWriter->writeAttribute('version', '##VERSION##');
     // Comment
     $objWriter->writeComment('This file has been generated using PHPExcel v##VERSION## (http://www.codeplex.com/PHPExcel). It contains a base64 encoded serialized version of the PHPExcel internal object.');
     // Data
     $objWriter->startElement('data');
     $objWriter->writeCData(base64_encode(serialize($pPHPExcel)));
     $objWriter->endElement();
     $objWriter->endElement();
     // Return
     return $objWriter->outputMemory(true);
 }