private function PHPExcel_Reader_Excel5::_readSummaryInformation in Loft Data Grids 6.2
Same name and namespace in other branches
- 7.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;
}
}
}