You are here

private function PHPExcel_Reader_Excel5::_readSummaryInformation in Loft Data Grids 7.2

Same name and namespace in other branches
  1. 6.2 vendor/phpoffice/phpexcel/Classes/PHPExcel/Reader/Excel5.php \PHPExcel_Reader_Excel5::_readSummaryInformation()

* Read summary information

1 call to PHPExcel_Reader_Excel5::_readSummaryInformation()
PHPExcel_Reader_Excel5::load in vendor/phpoffice/phpexcel/Classes/PHPExcel/Reader/Excel5.php
* Loads PHPExcel from file * *

File

vendor/phpoffice/phpexcel/Classes/PHPExcel/Reader/Excel5.php, line 1183

Class

PHPExcel_Reader_Excel5
PHPExcel_Reader_Excel5

Code

private function _readSummaryInformation() {
  if (!isset($this->_summaryInformation)) {
    return;
  }

  // offset: 0; size: 2; must be 0xFE 0xFF (UTF-16 LE byte order mark)
  // offset: 2; size: 2;
  // offset: 4; size: 2; OS version
  // offset: 6; size: 2; OS indicator
  // offset: 8; size: 16
  // offset: 24; size: 4; section count
  $secCount = self::_GetInt4d($this->_summaryInformation, 24);

  // offset: 28; size: 16; first section's class id: e0 85 9f f2 f9 4f 68 10 ab 91 08 00 2b 27 b3 d9
  // offset: 44; size: 4
  $secOffset = self::_GetInt4d($this->_summaryInformation, 44);

  // section header
  // offset: $secOffset; size: 4; section length
  $secLength = self::_GetInt4d($this->_summaryInformation, $secOffset);

  // offset: $secOffset+4; size: 4; property count
  $countProperties = self::_GetInt4d($this->_summaryInformation, $secOffset + 4);

  // initialize code page (used to resolve string values)
  $codePage = 'CP1252';

  // offset: ($secOffset+8); size: var
  // loop through property decarations and properties
  for ($i = 0; $i < $countProperties; ++$i) {

    // offset: ($secOffset+8) + (8 * $i); size: 4; property ID
    $id = self::_GetInt4d($this->_summaryInformation, $secOffset + 8 + 8 * $i);

    // Use value of property id as appropriate
    // offset: ($secOffset+12) + (8 * $i); size: 4; offset from beginning of section (48)
    $offset = self::_GetInt4d($this->_summaryInformation, $secOffset + 12 + 8 * $i);
    $type = self::_GetInt4d($this->_summaryInformation, $secOffset + $offset);

    // initialize property value
    $value = null;

    // extract property value based on property type
    switch ($type) {
      case 0x2:

        // 2 byte signed integer
        $value = self::_GetInt2d($this->_summaryInformation, $secOffset + 4 + $offset);
        break;
      case 0x3:

        // 4 byte signed integer
        $value = self::_GetInt4d($this->_summaryInformation, $secOffset + 4 + $offset);
        break;
      case 0x13:

        // 4 byte unsigned integer
        // not needed yet, fix later if necessary
        break;
      case 0x1e:

        // null-terminated string prepended by dword string length
        $byteLength = self::_GetInt4d($this->_summaryInformation, $secOffset + 4 + $offset);
        $value = substr($this->_summaryInformation, $secOffset + 8 + $offset, $byteLength);
        $value = PHPExcel_Shared_String::ConvertEncoding($value, 'UTF-8', $codePage);
        $value = rtrim($value);
        break;
      case 0x40:

        // Filetime (64-bit value representing the number of 100-nanosecond intervals since January 1, 1601)
        // PHP-time
        $value = PHPExcel_Shared_OLE::OLE2LocalDate(substr($this->_summaryInformation, $secOffset + 4 + $offset, 8));
        break;
      case 0x47:

        // Clipboard format
        // not needed yet, fix later if necessary
        break;
    }
    switch ($id) {
      case 0x1:

        //	Code Page
        $codePage = PHPExcel_Shared_CodePage::NumberToName($value);
        break;
      case 0x2:

        //	Title
        $this->_phpExcel
          ->getProperties()
          ->setTitle($value);
        break;
      case 0x3:

        //	Subject
        $this->_phpExcel
          ->getProperties()
          ->setSubject($value);
        break;
      case 0x4:

        //	Author (Creator)
        $this->_phpExcel
          ->getProperties()
          ->setCreator($value);
        break;
      case 0x5:

        //	Keywords
        $this->_phpExcel
          ->getProperties()
          ->setKeywords($value);
        break;
      case 0x6:

        //	Comments (Description)
        $this->_phpExcel
          ->getProperties()
          ->setDescription($value);
        break;
      case 0x7:

        //	Template
        //	Not supported by PHPExcel
        break;
      case 0x8:

        //	Last Saved By (LastModifiedBy)
        $this->_phpExcel
          ->getProperties()
          ->setLastModifiedBy($value);
        break;
      case 0x9:

        //	Revision
        //	Not supported by PHPExcel
        break;
      case 0xa:

        //	Total Editing Time
        //	Not supported by PHPExcel
        break;
      case 0xb:

        //	Last Printed
        //	Not supported by PHPExcel
        break;
      case 0xc:

        //	Created Date/Time
        $this->_phpExcel
          ->getProperties()
          ->setCreated($value);
        break;
      case 0xd:

        //	Modified Date/Time
        $this->_phpExcel
          ->getProperties()
          ->setModified($value);
        break;
      case 0xe:

        //	Number of Pages
        //	Not supported by PHPExcel
        break;
      case 0xf:

        //	Number of Words
        //	Not supported by PHPExcel
        break;
      case 0x10:

        //	Number of Characters
        //	Not supported by PHPExcel
        break;
      case 0x11:

        //	Thumbnail
        //	Not supported by PHPExcel
        break;
      case 0x12:

        //	Name of creating application
        //	Not supported by PHPExcel
        break;
      case 0x13:

        //	Security
        //	Not supported by PHPExcel
        break;
    }
  }
}