source: sourcecode/application/libraries/PHPExcel/Writer/Excel2007/DocProps.php @ 1

Last change on this file since 1 was 1, checked in by dungnv, 11 years ago
File size: 8.8 KB
Line 
1<?php
2/**
3 * PHPExcel
4 *
5 * Copyright (c) 2006 - 2014 PHPExcel
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
20 *
21 * @category   PHPExcel
22 * @package    PHPExcel_Writer_Excel2007
23 * @copyright  Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
24 * @license    http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt    LGPL
25 * @version    1.8.0, 2014-03-02
26 */
27
28
29/**
30 * PHPExcel_Writer_Excel2007_DocProps
31 *
32 * @category   PHPExcel
33 * @package    PHPExcel_Writer_Excel2007
34 * @copyright  Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
35 */
36class PHPExcel_Writer_Excel2007_DocProps extends PHPExcel_Writer_Excel2007_WriterPart
37{
38/**
39         * Write docProps/app.xml to XML format
40         *
41         * @param       PHPExcel        $pPHPExcel
42         * @return      string          XML Output
43         * @throws      PHPExcel_Writer_Exception
44         */
45        public function writeDocPropsApp(PHPExcel $pPHPExcel = null)
46        {
47                // Create XML writer
48                $objWriter = null;
49                if ($this->getParentWriter()->getUseDiskCaching()) {
50                        $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
51                } else {
52                        $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);
53                }
54
55                // XML header
56                $objWriter->startDocument('1.0','UTF-8','yes');
57
58                // Properties
59                $objWriter->startElement('Properties');
60                        $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/officeDocument/2006/extended-properties');
61                        $objWriter->writeAttribute('xmlns:vt', 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes');
62
63                        // Application
64                        $objWriter->writeElement('Application',         'Microsoft Excel');
65
66                        // DocSecurity
67                        $objWriter->writeElement('DocSecurity',         '0');
68
69                        // ScaleCrop
70                        $objWriter->writeElement('ScaleCrop',           'false');
71
72                        // HeadingPairs
73                        $objWriter->startElement('HeadingPairs');
74
75                                // Vector
76                                $objWriter->startElement('vt:vector');
77                                        $objWriter->writeAttribute('size',              '2');
78                                        $objWriter->writeAttribute('baseType',  'variant');
79
80                                        // Variant
81                                        $objWriter->startElement('vt:variant');
82                                                $objWriter->writeElement('vt:lpstr',    'Worksheets');
83                                        $objWriter->endElement();
84
85                                        // Variant
86                                        $objWriter->startElement('vt:variant');
87                                                $objWriter->writeElement('vt:i4',               $pPHPExcel->getSheetCount());
88                                        $objWriter->endElement();
89
90                                $objWriter->endElement();
91
92                        $objWriter->endElement();
93
94                        // TitlesOfParts
95                        $objWriter->startElement('TitlesOfParts');
96
97                                // Vector
98                                $objWriter->startElement('vt:vector');
99                                        $objWriter->writeAttribute('size',              $pPHPExcel->getSheetCount());
100                                        $objWriter->writeAttribute('baseType',  'lpstr');
101
102                                        $sheetCount = $pPHPExcel->getSheetCount();
103                                        for ($i = 0; $i < $sheetCount; ++$i) {
104                                                $objWriter->writeElement('vt:lpstr', $pPHPExcel->getSheet($i)->getTitle());
105                                        }
106
107                                $objWriter->endElement();
108
109                        $objWriter->endElement();
110
111                        // Company
112                        $objWriter->writeElement('Company',                     $pPHPExcel->getProperties()->getCompany());
113
114                        // Company
115                        $objWriter->writeElement('Manager',                     $pPHPExcel->getProperties()->getManager());
116
117                        // LinksUpToDate
118                        $objWriter->writeElement('LinksUpToDate',               'false');
119
120                        // SharedDoc
121                        $objWriter->writeElement('SharedDoc',                   'false');
122
123                        // HyperlinksChanged
124                        $objWriter->writeElement('HyperlinksChanged',   'false');
125
126                        // AppVersion
127                        $objWriter->writeElement('AppVersion',                  '12.0000');
128
129                $objWriter->endElement();
130
131                // Return
132                return $objWriter->getData();
133        }
134
135        /**
136         * Write docProps/core.xml to XML format
137         *
138         * @param       PHPExcel        $pPHPExcel
139         * @return      string          XML Output
140         * @throws      PHPExcel_Writer_Exception
141         */
142        public function writeDocPropsCore(PHPExcel $pPHPExcel = null)
143        {
144                // Create XML writer
145                $objWriter = null;
146                if ($this->getParentWriter()->getUseDiskCaching()) {
147                        $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
148                } else {
149                        $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);
150                }
151
152                // XML header
153                $objWriter->startDocument('1.0','UTF-8','yes');
154
155                // cp:coreProperties
156                $objWriter->startElement('cp:coreProperties');
157                        $objWriter->writeAttribute('xmlns:cp', 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties');
158                        $objWriter->writeAttribute('xmlns:dc', 'http://purl.org/dc/elements/1.1/');
159                        $objWriter->writeAttribute('xmlns:dcterms', 'http://purl.org/dc/terms/');
160                        $objWriter->writeAttribute('xmlns:dcmitype', 'http://purl.org/dc/dcmitype/');
161                        $objWriter->writeAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance');
162
163                        // dc:creator
164                        $objWriter->writeElement('dc:creator',                  $pPHPExcel->getProperties()->getCreator());
165
166                        // cp:lastModifiedBy
167                        $objWriter->writeElement('cp:lastModifiedBy',   $pPHPExcel->getProperties()->getLastModifiedBy());
168
169                        // dcterms:created
170                        $objWriter->startElement('dcterms:created');
171                                $objWriter->writeAttribute('xsi:type', 'dcterms:W3CDTF');
172                                $objWriter->writeRawData(date(DATE_W3C,         $pPHPExcel->getProperties()->getCreated()));
173                        $objWriter->endElement();
174
175                        // dcterms:modified
176                        $objWriter->startElement('dcterms:modified');
177                                $objWriter->writeAttribute('xsi:type', 'dcterms:W3CDTF');
178                                $objWriter->writeRawData(date(DATE_W3C,         $pPHPExcel->getProperties()->getModified()));
179                        $objWriter->endElement();
180
181                        // dc:title
182                        $objWriter->writeElement('dc:title',                    $pPHPExcel->getProperties()->getTitle());
183
184                        // dc:description
185                        $objWriter->writeElement('dc:description',              $pPHPExcel->getProperties()->getDescription());
186
187                        // dc:subject
188                        $objWriter->writeElement('dc:subject',                  $pPHPExcel->getProperties()->getSubject());
189
190                        // cp:keywords
191                        $objWriter->writeElement('cp:keywords',                 $pPHPExcel->getProperties()->getKeywords());
192
193                        // cp:category
194                        $objWriter->writeElement('cp:category',                 $pPHPExcel->getProperties()->getCategory());
195
196                $objWriter->endElement();
197
198                // Return
199                return $objWriter->getData();
200        }
201
202        /**
203         * Write docProps/custom.xml to XML format
204         *
205         * @param       PHPExcel        $pPHPExcel
206         * @return      string          XML Output
207         * @throws      PHPExcel_Writer_Exception
208         */
209        public function writeDocPropsCustom(PHPExcel $pPHPExcel = null)
210        {
211                $customPropertyList = $pPHPExcel->getProperties()->getCustomProperties();
212                if (empty($customPropertyList)) {
213                        return;
214                }
215
216                // Create XML writer
217                $objWriter = null;
218                if ($this->getParentWriter()->getUseDiskCaching()) {
219                        $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
220                } else {
221                        $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);
222                }
223
224                // XML header
225                $objWriter->startDocument('1.0','UTF-8','yes');
226
227                // cp:coreProperties
228                $objWriter->startElement('Properties');
229                        $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/officeDocument/2006/custom-properties');
230                        $objWriter->writeAttribute('xmlns:vt', 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes');
231
232
233                        foreach($customPropertyList as $key => $customProperty) {
234                                $propertyValue = $pPHPExcel->getProperties()->getCustomPropertyValue($customProperty);
235                                $propertyType = $pPHPExcel->getProperties()->getCustomPropertyType($customProperty);
236
237                                $objWriter->startElement('property');
238                                        $objWriter->writeAttribute('fmtid',     '{D5CDD505-2E9C-101B-9397-08002B2CF9AE}');
239                                        $objWriter->writeAttribute('pid',               $key+2);
240                                        $objWriter->writeAttribute('name',              $customProperty);
241
242                                        switch($propertyType) {
243                                                case 'i' :
244                                                        $objWriter->writeElement('vt:i4',               $propertyValue);
245                                                        break;
246                                                case 'f' :
247                                                        $objWriter->writeElement('vt:r8',               $propertyValue);
248                                                        break;
249                                                case 'b' :
250                                                        $objWriter->writeElement('vt:bool',     ($propertyValue) ? 'true' : 'false');
251                                                        break;
252                                                case 'd' :
253                                                        $objWriter->startElement('vt:filetime');
254                                                                $objWriter->writeRawData(date(DATE_W3C, $propertyValue));
255                                                        $objWriter->endElement();
256                                                        break;
257                                                default :
258                                                        $objWriter->writeElement('vt:lpwstr',   $propertyValue);
259                                                        break;
260                                        }
261
262                                $objWriter->endElement();
263                        }
264
265
266                $objWriter->endElement();
267
268                // Return
269                return $objWriter->getData();
270        }
271
272}
Note: See TracBrowser for help on using the repository browser.