From 14dbe6ec72e8c5a89e010f4ff18984e7ca86c1ea Mon Sep 17 00:00:00 2001 From: Mark Baker Date: Wed, 20 Oct 2010 21:55:40 +0000 Subject: [PATCH] Examples of accessing Workbook Properties git-svn-id: https://phpexcel.svn.codeplex.com/svn/trunk@62544 2327b42d-5241-43d6-9e2a-de5ac946f064 --- .../exampleWorkBookReader01.php | 93 ++++++++++++++++++ .../exampleWorkBookReader02.php | 52 ++++++++++ .../exampleWorkBookReader03.php | 80 +++++++++++++++ .../exampleWorkBookReader04.php | 55 +++++++++++ .../sampleData/example1.xls | Bin 0 -> 20992 bytes .../sampleData/example1.xlsx | Bin 0 -> 9733 bytes .../sampleData/example2.xls | Bin 0 -> 22528 bytes 7 files changed, 280 insertions(+) create mode 100644 Documentation/Examples/Reading WorkBook Data/exampleWorkBookReader01.php create mode 100644 Documentation/Examples/Reading WorkBook Data/exampleWorkBookReader02.php create mode 100644 Documentation/Examples/Reading WorkBook Data/exampleWorkBookReader03.php create mode 100644 Documentation/Examples/Reading WorkBook Data/exampleWorkBookReader04.php create mode 100644 Documentation/Examples/Reading WorkBook Data/sampleData/example1.xls create mode 100644 Documentation/Examples/Reading WorkBook Data/sampleData/example1.xlsx create mode 100644 Documentation/Examples/Reading WorkBook Data/sampleData/example2.xls diff --git a/Documentation/Examples/Reading WorkBook Data/exampleWorkBookReader01.php b/Documentation/Examples/Reading WorkBook Data/exampleWorkBookReader01.php new file mode 100644 index 0000000..4f8dfdf --- /dev/null +++ b/Documentation/Examples/Reading WorkBook Data/exampleWorkBookReader01.php @@ -0,0 +1,93 @@ + + + + + +PHPExcel Reading WorkBook Data Example #01 + + + + +

PHPExcel Reading WorkBook Data Example #01

+

Read the WorkBook Properties

+load($inputFileName); + + +echo '
'; + +/** Read the document's creator property **/ +$creator = $objPHPExcel->getProperties()->getCreator(); +echo 'Document Creator: ',$creator,'
'; + +/** Read the Date when the workbook was created (as a PHP timestamp value) **/ +$creationDatestamp = $objPHPExcel->getProperties()->getCreated(); +/** Format the date and time using the standard PHP date() function **/ +$creationDate = date('l, d<\s\up>S F Y',$creationDatestamp); +$creationTime = date('g:i A',$creationDatestamp); +echo 'Created On: ',$creationDate,' at ',$creationTime,'
'; + +/** Read the name of the last person to modify this workbook **/ +$modifiedBy = $objPHPExcel->getProperties()->getLastModifiedBy(); +echo 'Last Modified By: ',$modifiedBy,'
'; + +/** Read the Date when the workbook was last modified (as a PHP timestamp value) **/ +$modifiedDatestamp = $objPHPExcel->getProperties()->getModified(); +/** Format the date and time using the standard PHP date() function **/ +$modifiedDate = date('l, d<\s\up>S F Y',$modifiedDatestamp); +$modifiedTime = date('g:i A',$modifiedDatestamp); +echo 'Last Modified On: ',$modifiedDate,' at ',$modifiedTime,'
'; + +/** Read the workbook title property **/ +$workbookTitle = $objPHPExcel->getProperties()->getTitle(); +echo 'Title: ',$workbookTitle,'
'; + +/** Read the workbook description property **/ +$description = $objPHPExcel->getProperties()->getDescription(); +echo 'Description: ',$description,'
'; + +/** Read the workbook subject property **/ +$subject = $objPHPExcel->getProperties()->getSubject(); +echo 'Subject: ',$subject,'
'; + +/** Read the workbook keywords property **/ +$keywords = $objPHPExcel->getProperties()->getKeywords(); +echo 'Keywords: ',$keywords,'
'; + +/** Read the workbook category property **/ +$category = $objPHPExcel->getProperties()->getCategory(); +echo 'Category: ',$category,'
'; + +/** Read the workbook company property **/ +$company = $objPHPExcel->getProperties()->getCompany(); +echo 'Company: ',$company,'
'; + +/** Read the workbook manager property **/ +$manager = $objPHPExcel->getProperties()->getManager(); +echo 'Manager: ',$manager,'
'; + + +?> + + diff --git a/Documentation/Examples/Reading WorkBook Data/exampleWorkBookReader02.php b/Documentation/Examples/Reading WorkBook Data/exampleWorkBookReader02.php new file mode 100644 index 0000000..b8c359d --- /dev/null +++ b/Documentation/Examples/Reading WorkBook Data/exampleWorkBookReader02.php @@ -0,0 +1,52 @@ + + + + + +PHPExcel Reading WorkBook Data Example #02 + + + + +

PHPExcel Reading WorkBook Data Example #02

+

Read a list of Custom Properties for a WorkBook

+load($inputFileName); + + +echo '
'; + +/** Read an array list of any custom properties for this document **/ +$customPropertyList = $objPHPExcel->getProperties()->getCustomProperties(); + +echo 'Custom Property names:
'; +foreach($customPropertyList as $customPropertyName) { + echo $customPropertyName,'
'; +} + + + +?> + + diff --git a/Documentation/Examples/Reading WorkBook Data/exampleWorkBookReader03.php b/Documentation/Examples/Reading WorkBook Data/exampleWorkBookReader03.php new file mode 100644 index 0000000..8fb350d --- /dev/null +++ b/Documentation/Examples/Reading WorkBook Data/exampleWorkBookReader03.php @@ -0,0 +1,80 @@ + + + + + +PHPExcel Reading WorkBook Data Example #03 + + + + +

PHPExcel Reading WorkBook Data Example #03

+

Read Custom Property Values for a WorkBook

+load($inputFileName); + + +echo '
'; + +/** Read an array list of any custom properties for this document **/ +$customPropertyList = $objPHPExcel->getProperties()->getCustomProperties(); + +echo 'Custom Properties:
'; +/** Loop through the list of custom properties **/ +foreach($customPropertyList as $customPropertyName) { + echo '',$customPropertyName,': '; + /** Retrieve the property value **/ + $propertyValue = $objPHPExcel->getProperties()->getCustomPropertyValue($customPropertyName); + /** Retrieve the property type **/ + $propertyType = $objPHPExcel->getProperties()->getCustomPropertyType($customPropertyName); + + /** Manipulate properties as appropriate for display purposes **/ + switch($propertyType) { + case 'i' : // integer + $propertyType = 'integer number'; + break; + case 'f' : // float + $propertyType = 'floating point number'; + break; + case 's' : // string + $propertyType = 'string'; + break; + case 'd' : // date + $propertyValue = date('l, d<\s\up>S F Y g:i A',$propertyValue); + $propertyType = 'date'; + break; + case 'b' : // boolean + $propertyValue = ($propertyValue) ? 'TRUE' : 'FALSE'; + $propertyType = 'boolean'; + break; + } + + echo $propertyValue,' (',$propertyType,')
'; +} + + + +?> + + diff --git a/Documentation/Examples/Reading WorkBook Data/exampleWorkBookReader04.php b/Documentation/Examples/Reading WorkBook Data/exampleWorkBookReader04.php new file mode 100644 index 0000000..05ff637 --- /dev/null +++ b/Documentation/Examples/Reading WorkBook Data/exampleWorkBookReader04.php @@ -0,0 +1,55 @@ + + + + + +PHPExcel Reading WorkBook Data Example #04 + + + + +

PHPExcel Reading WorkBook Data Example #04

+

Get a List of the Worksheets in a WorkBook

+load($inputFileName); + + +echo '
'; + +echo 'Reading the number of Worksheets in the WorkBook
'; +/** Use the PHPExcel object's getSheetCount() method to get a count of the number of WorkSheets in the WorkBook */ +$sheetCount = $objPHPExcel->getSheetCount(); +echo 'There ',(($sheetCount == 1) ? 'is' : 'are'),' ',$sheetCount,' WorkSheet',(($sheetCount == 1) ? '' : 's'),' in the WorkBook

'; + +echo 'Reading the names of Worksheets in the WorkBook
'; +/** Use the PHPExcel object's getSheetNames() method to get an array listing the names/titles of the WorkSheets in the WorkBook */ +$sheetNames = $objPHPExcel->getSheetNames(); +foreach($sheetNames as $sheetIndex => $sheetName) { + echo 'WorkSheet #',$sheetIndex,' is named "',$sheetName,'"
'; +} + + +?> + + diff --git a/Documentation/Examples/Reading WorkBook Data/sampleData/example1.xls b/Documentation/Examples/Reading WorkBook Data/sampleData/example1.xls new file mode 100644 index 0000000000000000000000000000000000000000..0db0efdcdb6da3a7a99f5e347f034f78c3c57fce GIT binary patch literal 20992 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 Y+#9?HP7=1j=i_tce^7sVsjTw<4dj0Ds{jB1 literal 0 HcmV?d00001 diff --git a/Documentation/Examples/Reading WorkBook Data/sampleData/example1.xlsx b/Documentation/Examples/Reading WorkBook Data/sampleData/example1.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..2224dd4fe674dba451e53d763dac310aa30a3b85 GIT binary patch literal 9733 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 literal 0 HcmV?d00001