You are here

class PHPExcel_Writer_OpenDocument in Loft Data Grids 6.2

Same name and namespace in other branches
  1. 7.2 vendor/phpoffice/phpexcel/Classes/PHPExcel/Writer/OpenDocument.php \PHPExcel_Writer_OpenDocument

PHPExcel_Writer_OpenDocument

@category PHPExcel @package PHPExcel_Writer_OpenDocument @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) @author Alexander Pervakov <frost-nzcr4@jagmort.com> @link http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os.html

Hierarchy

Expanded class hierarchy of PHPExcel_Writer_OpenDocument

File

vendor/phpoffice/phpexcel/Classes/PHPExcel/Writer/OpenDocument.php, line 38

View source
class PHPExcel_Writer_OpenDocument extends PHPExcel_Writer_Abstract implements PHPExcel_Writer_IWriter {

  /**
   * Private writer parts
   *
   * @var PHPExcel_Writer_OpenDocument_WriterPart[]
   */
  private $_writerParts = array();

  /**
   * Private PHPExcel
   *
   * @var PHPExcel
   */
  private $_spreadSheet;

  /**
   * Create a new PHPExcel_Writer_OpenDocument
   *
   * @param PHPExcel $pPHPExcel
   */
  public function __construct(PHPExcel $pPHPExcel = null) {
    $this
      ->setPHPExcel($pPHPExcel);
    $writerPartsArray = array(
      'content' => 'PHPExcel_Writer_OpenDocument_Content',
      'meta' => 'PHPExcel_Writer_OpenDocument_Meta',
      'meta_inf' => 'PHPExcel_Writer_OpenDocument_MetaInf',
      'mimetype' => 'PHPExcel_Writer_OpenDocument_Mimetype',
      'settings' => 'PHPExcel_Writer_OpenDocument_Settings',
      'styles' => 'PHPExcel_Writer_OpenDocument_Styles',
      'thumbnails' => 'PHPExcel_Writer_OpenDocument_Thumbnails',
    );
    foreach ($writerPartsArray as $writer => $class) {
      $this->_writerParts[$writer] = new $class($this);
    }
  }

  /**
   * Get writer part
   *
   * @param  string  $pPartName  Writer part name
   * @return PHPExcel_Writer_Excel2007_WriterPart
   */
  public function getWriterPart($pPartName = '') {
    if ($pPartName != '' && isset($this->_writerParts[strtolower($pPartName)])) {
      return $this->_writerParts[strtolower($pPartName)];
    }
    else {
      return null;
    }
  }

  /**
   * Save PHPExcel to file
   *
   * @param  string  $pFilename
   * @throws PHPExcel_Writer_Exception
   */
  public function save($pFilename = NULL) {
    if (!$this->_spreadSheet) {
      throw new PHPExcel_Writer_Exception('PHPExcel object unassigned.');
    }

    // garbage collect
    $this->_spreadSheet
      ->garbageCollect();

    // If $pFilename is php://output or php://stdout, make it a temporary file...
    $originalFilename = $pFilename;
    if (strtolower($pFilename) == 'php://output' || strtolower($pFilename) == 'php://stdout') {
      $pFilename = @tempnam(PHPExcel_Shared_File::sys_get_temp_dir(), 'phpxltmp');
      if ($pFilename == '') {
        $pFilename = $originalFilename;
      }
    }
    $objZip = $this
      ->_createZip($pFilename);
    $objZip
      ->addFromString('META-INF/manifest.xml', $this
      ->getWriterPart('meta_inf')
      ->writeManifest());
    $objZip
      ->addFromString('Thumbnails/thumbnail.png', $this
      ->getWriterPart('thumbnails')
      ->writeThumbnail());
    $objZip
      ->addFromString('content.xml', $this
      ->getWriterPart('content')
      ->write());
    $objZip
      ->addFromString('meta.xml', $this
      ->getWriterPart('meta')
      ->write());
    $objZip
      ->addFromString('mimetype', $this
      ->getWriterPart('mimetype')
      ->write());
    $objZip
      ->addFromString('settings.xml', $this
      ->getWriterPart('settings')
      ->write());
    $objZip
      ->addFromString('styles.xml', $this
      ->getWriterPart('styles')
      ->write());

    // Close file
    if ($objZip
      ->close() === false) {
      throw new PHPExcel_Writer_Exception("Could not close zip file {$pFilename}.");
    }

    // If a temporary file was used, copy it to the correct file stream
    if ($originalFilename != $pFilename) {
      if (copy($pFilename, $originalFilename) === false) {
        throw new PHPExcel_Writer_Exception("Could not copy temporary zip file {$pFilename} to {$originalFilename}.");
      }
      @unlink($pFilename);
    }
  }

  /**
   * Create zip object
   *
   * @param string $pFilename
   * @throws PHPExcel_Writer_Exception
   * @return ZipArchive
   */
  private function _createZip($pFilename) {

    // Create new ZIP file and open it for writing
    $zipClass = PHPExcel_Settings::getZipClass();
    $objZip = new $zipClass();

    // Retrieve OVERWRITE and CREATE constants from the instantiated zip class
    // This method of accessing constant values from a dynamic class should work with all appropriate versions of PHP
    $ro = new ReflectionObject($objZip);
    $zipOverWrite = $ro
      ->getConstant('OVERWRITE');
    $zipCreate = $ro
      ->getConstant('CREATE');
    if (file_exists($pFilename)) {
      unlink($pFilename);
    }

    // Try opening the ZIP file
    if ($objZip
      ->open($pFilename, $zipOverWrite) !== true) {
      if ($objZip
        ->open($pFilename, $zipCreate) !== true) {
        throw new PHPExcel_Writer_Exception("Could not open {$pFilename} for writing.");
      }
    }
    return $objZip;
  }

  /**
   * Get PHPExcel object
   *
   * @return PHPExcel
   * @throws PHPExcel_Writer_Exception
   */
  public function getPHPExcel() {
    if ($this->_spreadSheet !== null) {
      return $this->_spreadSheet;
    }
    else {
      throw new PHPExcel_Writer_Exception('No PHPExcel assigned.');
    }
  }

  /**
   * Set PHPExcel object
   *
   * @param  PHPExcel  $pPHPExcel  PHPExcel object
   * @throws PHPExcel_Writer_Exception
   * @return PHPExcel_Writer_Excel2007
   */
  public function setPHPExcel(PHPExcel $pPHPExcel = null) {
    $this->_spreadSheet = $pPHPExcel;
    return $this;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
PHPExcel_Writer_Abstract::$_diskCachingDirectory protected property * Disk caching directory * *
PHPExcel_Writer_Abstract::$_includeCharts protected property * Write charts that are defined in the workbook? * Identifies whether the Writer should write definitions for any charts that exist in the PHPExcel object; * *
PHPExcel_Writer_Abstract::$_preCalculateFormulas protected property * Pre-calculate formulas * Forces PHPExcel to recalculate all formulae in a workbook when saving, so that the pre-calculated values are * immediately available to MS Excel or other office spreadsheet viewer when opening the file * * 1
PHPExcel_Writer_Abstract::$_useDiskCaching protected property * Use disk caching where possible? * *
PHPExcel_Writer_Abstract::getDiskCachingDirectory public function * Get disk caching directory * *
PHPExcel_Writer_Abstract::getIncludeCharts public function * Write charts in workbook? * If this is true, then the Writer will write definitions for any charts that exist in the PHPExcel object. * If false (the default) it will ignore any charts defined in the PHPExcel object. * *
PHPExcel_Writer_Abstract::getPreCalculateFormulas public function Get Pre-Calculate Formulas flag * If this is true (the default), then the writer will recalculate all formulae in a workbook when saving, * so that the pre-calculated values are immediately available to MS Excel or other office…
PHPExcel_Writer_Abstract::getUseDiskCaching public function * Get use disk caching where possible? * *
PHPExcel_Writer_Abstract::setIncludeCharts public function * Set write charts in workbook * Set to true, to advise the Writer to include any charts that exist in the PHPExcel object. * Set to false (the default) to ignore charts. * *
PHPExcel_Writer_Abstract::setPreCalculateFormulas public function Set Pre-Calculate Formulas * Set to true (the default) to advise the Writer to calculate all formulae on save * Set to false to prevent precalculation of formulae on save.
PHPExcel_Writer_Abstract::setUseDiskCaching public function * Set use disk caching where possible? * *
PHPExcel_Writer_OpenDocument::$_spreadSheet private property Private PHPExcel
PHPExcel_Writer_OpenDocument::$_writerParts private property Private writer parts
PHPExcel_Writer_OpenDocument::getPHPExcel public function Get PHPExcel object
PHPExcel_Writer_OpenDocument::getWriterPart public function Get writer part
PHPExcel_Writer_OpenDocument::save public function Save PHPExcel to file Overrides PHPExcel_Writer_IWriter::save
PHPExcel_Writer_OpenDocument::setPHPExcel public function Set PHPExcel object
PHPExcel_Writer_OpenDocument::_createZip private function Create zip object
PHPExcel_Writer_OpenDocument::__construct public function Create a new PHPExcel_Writer_OpenDocument