PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.0.10
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.0.10
4.0.8 4.0.7 4.0.6 4.0.5 4.0.4 4.0.3 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.1 3.1.2 3.1.3 3.10.0 3.10.1 3.10.10 3.10.11 3.10.12 3.10.13 3.10.14 3.10.15 3.10.2 3.10.3 All 149 releases
← All changes | vendor/phpoffice/phpexcel/Classes/PHPExcel/Writer/Excel2007/StringTable.php +257 -251 3.1.13.0.10 View file →
@@ -1,10 +1,9 @@
1 1 <?php
2 -
3 2 /**
4 - * PHPExcel_Writer_Excel2007_StringTable
3 + * PHPExcel
5 4 *
6 - * Copyright (c) 2006 - 2015 PHPExcel
5 + * Copyright (c) 2006 - 2014 PHPExcel
7 6 *
8 7 * This library is free software; you can redistribute it and/or
9 8 * modify it under the terms of the GNU Lesser General Public
10 9 * License as published by the Free Software Foundation; either
@@ -20,294 +19,301 @@
20 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 20 *
22 21 * @category PHPExcel
23 22 * @package PHPExcel_Writer_Excel2007
24 - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel)
25 - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
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
26 25 * @version ##VERSION##, ##DATE##
27 26 */
27 +
28 +
29 +/**
30 + * PHPExcel_Writer_Excel2007_StringTable
31 + *
32 + * @category PHPExcel
33 + * @package PHPExcel_Writer_Excel2007
34 + * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
35 + */
28 36 class PHPExcel_Writer_Excel2007_StringTable extends PHPExcel_Writer_Excel2007_WriterPart
29 37 {
30 - /**
31 - * Create worksheet stringtable
32 - *
33 - * @param PHPExcel_Worksheet $pSheet Worksheet
34 - * @param string[] $pExistingTable Existing table to eventually merge with
35 - * @return string[] String table for worksheet
36 - * @throws PHPExcel_Writer_Exception
37 - */
38 - public function createStringTable($pSheet = null, $pExistingTable = null)
39 - {
40 - if ($pSheet !== null) {
41 - // Create string lookup table
42 - $aStringTable = array();
43 - $cellCollection = null;
44 - $aFlippedStringTable = null; // For faster lookup
38 + /**
39 + * Create worksheet stringtable
40 + *
41 + * @param PHPExcel_Worksheet $pSheet Worksheet
42 + * @param string[] $pExistingTable Existing table to eventually merge with
43 + * @return string[] String table for worksheet
44 + * @throws PHPExcel_Writer_Exception
45 + */
46 + public function createStringTable($pSheet = null, $pExistingTable = null)
47 + {
48 + if ($pSheet !== NULL) {
49 + // Create string lookup table
50 + $aStringTable = array();
51 + $cellCollection = null;
52 + $aFlippedStringTable = null; // For faster lookup
45 53
46 - // Is an existing table given?
47 - if (($pExistingTable !== null) && is_array($pExistingTable)) {
48 - $aStringTable = $pExistingTable;
49 - }
54 + // Is an existing table given?
55 + if (($pExistingTable !== NULL) && is_array($pExistingTable)) {
56 + $aStringTable = $pExistingTable;
57 + }
50 58
51 - // Fill index array
52 - $aFlippedStringTable = $this->flipStringTable($aStringTable);
59 + // Fill index array
60 + $aFlippedStringTable = $this->flipStringTable($aStringTable);
53 61
54 - // Loop through cells
55 - foreach ($pSheet->getCellCollection() as $cellID) {
56 - $cell = $pSheet->getCell($cellID);
57 - $cellValue = $cell->getValue();
58 - if (!is_object($cellValue) &&
59 - ($cellValue !== null) &&
60 - $cellValue !== '' &&
61 - !isset($aFlippedStringTable[$cellValue]) &&
62 - ($cell->getDataType() == PHPExcel_Cell_DataType::TYPE_STRING || $cell->getDataType() == PHPExcel_Cell_DataType::TYPE_STRING2 || $cell->getDataType() == PHPExcel_Cell_DataType::TYPE_NULL)) {
63 - $aStringTable[] = $cellValue;
64 - $aFlippedStringTable[$cellValue] = true;
65 - } elseif ($cellValue instanceof PHPExcel_RichText &&
66 - ($cellValue !== null) &&
67 - !isset($aFlippedStringTable[$cellValue->getHashCode()])) {
68 - $aStringTable[] = $cellValue;
69 - $aFlippedStringTable[$cellValue->getHashCode()] = true;
70 - }
71 - }
62 + // Loop through cells
63 + foreach ($pSheet->getCellCollection() as $cellID) {
64 + $cell = $pSheet->getCell($cellID);
65 + $cellValue = $cell->getValue();
66 + if (!is_object($cellValue) &&
67 + ($cellValue !== NULL) &&
68 + $cellValue !== '' &&
69 + !isset($aFlippedStringTable[$cellValue]) &&
70 + ($cell->getDataType() == PHPExcel_Cell_DataType::TYPE_STRING || $cell->getDataType() == PHPExcel_Cell_DataType::TYPE_STRING2 || $cell->getDataType() == PHPExcel_Cell_DataType::TYPE_NULL)) {
71 + $aStringTable[] = $cellValue;
72 + $aFlippedStringTable[$cellValue] = true;
73 + } elseif ($cellValue instanceof PHPExcel_RichText &&
74 + ($cellValue !== NULL) &&
75 + !isset($aFlippedStringTable[$cellValue->getHashCode()])) {
76 + $aStringTable[] = $cellValue;
77 + $aFlippedStringTable[$cellValue->getHashCode()] = true;
78 + }
79 + }
72 80
73 - return $aStringTable;
74 - } else {
75 - throw new PHPExcel_Writer_Exception("Invalid PHPExcel_Worksheet object passed.");
76 - }
77 - }
81 + // Return
82 + return $aStringTable;
83 + } else {
84 + throw new PHPExcel_Writer_Exception("Invalid PHPExcel_Worksheet object passed.");
85 + }
86 + }
78 87
79 - /**
80 - * Write string table to XML format
81 - *
82 - * @param string[] $pStringTable
83 - * @return string XML Output
84 - * @throws PHPExcel_Writer_Exception
85 - */
86 - public function writeStringTable($pStringTable = null)
87 - {
88 - if ($pStringTable !== null) {
89 - // Create XML writer
90 - $objWriter = null;
91 - if ($this->getParentWriter()->getUseDiskCaching()) {
92 - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
93 - } else {
94 - $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);
95 - }
88 + /**
89 + * Write string table to XML format
90 + *
91 + * @param string[] $pStringTable
92 + * @return string XML Output
93 + * @throws PHPExcel_Writer_Exception
94 + */
95 + public function writeStringTable($pStringTable = null)
96 + {
97 + if ($pStringTable !== NULL) {
98 + // Create XML writer
99 + $objWriter = null;
100 + if ($this->getParentWriter()->getUseDiskCaching()) {
101 + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
102 + } else {
103 + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);
104 + }
96 105
97 - // XML header
98 - $objWriter->startDocument('1.0', 'UTF-8', 'yes');
106 + // XML header
107 + $objWriter->startDocument('1.0','UTF-8','yes');
99 108
100 - // String table
101 - $objWriter->startElement('sst');
102 - $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/spreadsheetml/2006/main');
103 - $objWriter->writeAttribute('uniqueCount', count($pStringTable));
109 + // String table
110 + $objWriter->startElement('sst');
111 + $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/spreadsheetml/2006/main');
112 + $objWriter->writeAttribute('uniqueCount', count($pStringTable));
104 113
105 - // Loop through string table
106 - foreach ($pStringTable as $textElement) {
107 - $objWriter->startElement('si');
114 + // Loop through string table
115 + foreach ($pStringTable as $textElement) {
116 + $objWriter->startElement('si');
108 117
109 - if (! $textElement instanceof PHPExcel_RichText) {
110 - $textToWrite = PHPExcel_Shared_String::ControlCharacterPHP2OOXML($textElement);
111 - $objWriter->startElement('t');
112 - if ($textToWrite !== trim($textToWrite)) {
113 - $objWriter->writeAttribute('xml:space', 'preserve');
114 - }
115 - $objWriter->writeRawData($textToWrite);
118 + if (! $textElement instanceof PHPExcel_RichText) {
119 + $textToWrite = PHPExcel_Shared_String::ControlCharacterPHP2OOXML( $textElement );
120 + $objWriter->startElement('t');
121 + if ($textToWrite !== trim($textToWrite)) {
122 + $objWriter->writeAttribute('xml:space', 'preserve');
123 + }
124 + $objWriter->writeRawData($textToWrite);
125 + $objWriter->endElement();
126 + } else if ($textElement instanceof PHPExcel_RichText) {
127 + $this->writeRichText($objWriter, $textElement);
128 + }
129 +
116 130 $objWriter->endElement();
117 - } elseif ($textElement instanceof PHPExcel_RichText) {
118 - $this->writeRichText($objWriter, $textElement);
119 - }
131 + }
120 132
121 - $objWriter->endElement();
122 - }
133 + $objWriter->endElement();
123 134
124 - $objWriter->endElement();
135 + // Return
136 + return $objWriter->getData();
137 + } else {
138 + throw new PHPExcel_Writer_Exception("Invalid string table array passed.");
139 + }
140 + }
125 141
126 - return $objWriter->getData();
127 - } else {
128 - throw new PHPExcel_Writer_Exception("Invalid string table array passed.");
129 - }
130 - }
142 + /**
143 + * Write Rich Text
144 + *
145 + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
146 + * @param PHPExcel_RichText $pRichText Rich text
147 + * @param string $prefix Optional Namespace prefix
148 + * @throws PHPExcel_Writer_Exception
149 + */
150 + public function writeRichText(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_RichText $pRichText = null, $prefix=NULL)
151 + {
152 + if ($prefix !== NULL)
153 + $prefix .= ':';
154 + // Loop through rich text elements
155 + $elements = $pRichText->getRichTextElements();
156 + foreach ($elements as $element) {
157 + // r
158 + $objWriter->startElement($prefix.'r');
131 159
132 - /**
133 - * Write Rich Text
134 - *
135 - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
136 - * @param PHPExcel_RichText $pRichText Rich text
137 - * @param string $prefix Optional Namespace prefix
138 - * @throws PHPExcel_Writer_Exception
139 - */
140 - public function writeRichText(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_RichText $pRichText = null, $prefix = null)
141 - {
142 - if ($prefix !== null) {
143 - $prefix .= ':';
144 - }
145 -
146 - // Loop through rich text elements
147 - $elements = $pRichText->getRichTextElements();
148 - foreach ($elements as $element) {
149 - // r
150 - $objWriter->startElement($prefix.'r');
160 + // rPr
161 + if ($element instanceof PHPExcel_RichText_Run) {
162 + // rPr
163 + $objWriter->startElement($prefix.'rPr');
151 164
152 - // rPr
153 - if ($element instanceof PHPExcel_RichText_Run) {
154 - // rPr
155 - $objWriter->startElement($prefix.'rPr');
165 + // rFont
166 + $objWriter->startElement($prefix.'rFont');
167 + $objWriter->writeAttribute('val', $element->getFont()->getName());
168 + $objWriter->endElement();
156 169
157 - // rFont
158 - $objWriter->startElement($prefix.'rFont');
159 - $objWriter->writeAttribute('val', $element->getFont()->getName());
160 - $objWriter->endElement();
170 + // Bold
171 + $objWriter->startElement($prefix.'b');
172 + $objWriter->writeAttribute('val', ($element->getFont()->getBold() ? 'true' : 'false'));
173 + $objWriter->endElement();
161 174
162 - // Bold
163 - $objWriter->startElement($prefix.'b');
164 - $objWriter->writeAttribute('val', ($element->getFont()->getBold() ? 'true' : 'false'));
165 - $objWriter->endElement();
175 + // Italic
176 + $objWriter->startElement($prefix.'i');
177 + $objWriter->writeAttribute('val', ($element->getFont()->getItalic() ? 'true' : 'false'));
178 + $objWriter->endElement();
166 179
167 - // Italic
168 - $objWriter->startElement($prefix.'i');
169 - $objWriter->writeAttribute('val', ($element->getFont()->getItalic() ? 'true' : 'false'));
170 - $objWriter->endElement();
180 + // Superscript / subscript
181 + if ($element->getFont()->getSuperScript() || $element->getFont()->getSubScript()) {
182 + $objWriter->startElement($prefix.'vertAlign');
183 + if ($element->getFont()->getSuperScript()) {
184 + $objWriter->writeAttribute('val', 'superscript');
185 + } else if ($element->getFont()->getSubScript()) {
186 + $objWriter->writeAttribute('val', 'subscript');
187 + }
188 + $objWriter->endElement();
189 + }
171 190
172 - // Superscript / subscript
173 - if ($element->getFont()->getSuperScript() || $element->getFont()->getSubScript()) {
174 - $objWriter->startElement($prefix.'vertAlign');
175 - if ($element->getFont()->getSuperScript()) {
176 - $objWriter->writeAttribute('val', 'superscript');
177 - } elseif ($element->getFont()->getSubScript()) {
178 - $objWriter->writeAttribute('val', 'subscript');
179 - }
180 - $objWriter->endElement();
181 - }
191 + // Strikethrough
192 + $objWriter->startElement($prefix.'strike');
193 + $objWriter->writeAttribute('val', ($element->getFont()->getStrikethrough() ? 'true' : 'false'));
194 + $objWriter->endElement();
182 195
183 - // Strikethrough
184 - $objWriter->startElement($prefix.'strike');
185 - $objWriter->writeAttribute('val', ($element->getFont()->getStrikethrough() ? 'true' : 'false'));
186 - $objWriter->endElement();
196 + // Color
197 + $objWriter->startElement($prefix.'color');
198 + $objWriter->writeAttribute('rgb', $element->getFont()->getColor()->getARGB());
199 + $objWriter->endElement();
187 200
188 - // Color
189 - $objWriter->startElement($prefix.'color');
190 - $objWriter->writeAttribute('rgb', $element->getFont()->getColor()->getARGB());
191 - $objWriter->endElement();
201 + // Size
202 + $objWriter->startElement($prefix.'sz');
203 + $objWriter->writeAttribute('val', $element->getFont()->getSize());
204 + $objWriter->endElement();
192 205
193 - // Size
194 - $objWriter->startElement($prefix.'sz');
195 - $objWriter->writeAttribute('val', $element->getFont()->getSize());
196 - $objWriter->endElement();
206 + // Underline
207 + $objWriter->startElement($prefix.'u');
208 + $objWriter->writeAttribute('val', $element->getFont()->getUnderline());
209 + $objWriter->endElement();
197 210
198 - // Underline
199 - $objWriter->startElement($prefix.'u');
200 - $objWriter->writeAttribute('val', $element->getFont()->getUnderline());
201 - $objWriter->endElement();
211 + $objWriter->endElement();
212 + }
202 213
203 - $objWriter->endElement();
204 - }
214 + // t
215 + $objWriter->startElement($prefix.'t');
216 + $objWriter->writeAttribute('xml:space', 'preserve');
217 + $objWriter->writeRawData(PHPExcel_Shared_String::ControlCharacterPHP2OOXML( $element->getText() ));
218 + $objWriter->endElement();
205 219
206 - // t
207 - $objWriter->startElement($prefix.'t');
208 - $objWriter->writeAttribute('xml:space', 'preserve');
209 - $objWriter->writeRawData(PHPExcel_Shared_String::ControlCharacterPHP2OOXML($element->getText()));
210 - $objWriter->endElement();
220 + $objWriter->endElement();
221 + }
222 + }
211 223
212 - $objWriter->endElement();
213 - }
214 - }
224 + /**
225 + * Write Rich Text
226 + *
227 + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
228 + * @param string|PHPExcel_RichText $pRichText text string or Rich text
229 + * @param string $prefix Optional Namespace prefix
230 + * @throws PHPExcel_Writer_Exception
231 + */
232 + public function writeRichTextForCharts(PHPExcel_Shared_XMLWriter $objWriter = null, $pRichText = null, $prefix=NULL)
233 + {
234 + if (!$pRichText instanceof PHPExcel_RichText) {
235 + $textRun = $pRichText;
236 + $pRichText = new PHPExcel_RichText();
237 + $pRichText->createTextRun($textRun);
238 + }
215 239
216 - /**
217 - * Write Rich Text
218 - *
219 - * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
220 - * @param string|PHPExcel_RichText $pRichText text string or Rich text
221 - * @param string $prefix Optional Namespace prefix
222 - * @throws PHPExcel_Writer_Exception
223 - */
224 - public function writeRichTextForCharts(PHPExcel_Shared_XMLWriter $objWriter = null, $pRichText = null, $prefix = null)
225 - {
226 - if (!$pRichText instanceof PHPExcel_RichText) {
227 - $textRun = $pRichText;
228 - $pRichText = new PHPExcel_RichText();
229 - $pRichText->createTextRun($textRun);
230 - }
240 + if ($prefix !== NULL)
241 + $prefix .= ':';
242 + // Loop through rich text elements
243 + $elements = $pRichText->getRichTextElements();
244 + foreach ($elements as $element) {
245 + // r
246 + $objWriter->startElement($prefix.'r');
231 247
232 - if ($prefix !== null) {
233 - $prefix .= ':';
234 - }
235 -
236 - // Loop through rich text elements
237 - $elements = $pRichText->getRichTextElements();
238 - foreach ($elements as $element) {
239 - // r
240 - $objWriter->startElement($prefix.'r');
248 + // rPr
249 + $objWriter->startElement($prefix.'rPr');
241 250
242 - // rPr
243 - $objWriter->startElement($prefix.'rPr');
251 + // Bold
252 + $objWriter->writeAttribute('b', ($element->getFont()->getBold() ? 1 : 0));
253 + // Italic
254 + $objWriter->writeAttribute('i', ($element->getFont()->getItalic() ? 1 : 0));
255 + // Underline
256 + $underlineType = $element->getFont()->getUnderline();
257 + switch($underlineType) {
258 + case 'single' :
259 + $underlineType = 'sng';
260 + break;
261 + case 'double' :
262 + $underlineType = 'dbl';
263 + break;
264 + }
265 + $objWriter->writeAttribute('u', $underlineType);
266 + // Strikethrough
267 + $objWriter->writeAttribute('strike', ($element->getFont()->getStrikethrough() ? 'sngStrike' : 'noStrike'));
244 268
245 - // Bold
246 - $objWriter->writeAttribute('b', ($element->getFont()->getBold() ? 1 : 0));
247 - // Italic
248 - $objWriter->writeAttribute('i', ($element->getFont()->getItalic() ? 1 : 0));
249 - // Underline
250 - $underlineType = $element->getFont()->getUnderline();
251 - switch ($underlineType) {
252 - case 'single':
253 - $underlineType = 'sng';
254 - break;
255 - case 'double':
256 - $underlineType = 'dbl';
257 - break;
258 - }
259 - $objWriter->writeAttribute('u', $underlineType);
260 - // Strikethrough
261 - $objWriter->writeAttribute('strike', ($element->getFont()->getStrikethrough() ? 'sngStrike' : 'noStrike'));
269 + // rFont
270 + $objWriter->startElement($prefix.'latin');
271 + $objWriter->writeAttribute('typeface', $element->getFont()->getName());
272 + $objWriter->endElement();
262 273
263 - // rFont
264 - $objWriter->startElement($prefix.'latin');
265 - $objWriter->writeAttribute('typeface', $element->getFont()->getName());
266 - $objWriter->endElement();
267 -
268 - // Superscript / subscript
269 -// if ($element->getFont()->getSuperScript() || $element->getFont()->getSubScript()) {
270 -// $objWriter->startElement($prefix.'vertAlign');
271 -// if ($element->getFont()->getSuperScript()) {
272 -// $objWriter->writeAttribute('val', 'superscript');
273 -// } elseif ($element->getFont()->getSubScript()) {
274 -// $objWriter->writeAttribute('val', 'subscript');
275 -// }
276 -// $objWriter->endElement();
277 -// }
274 + // Superscript / subscript
275 +// if ($element->getFont()->getSuperScript() || $element->getFont()->getSubScript()) {
276 +// $objWriter->startElement($prefix.'vertAlign');
277 +// if ($element->getFont()->getSuperScript()) {
278 +// $objWriter->writeAttribute('val', 'superscript');
279 +// } else if ($element->getFont()->getSubScript()) {
280 +// $objWriter->writeAttribute('val', 'subscript');
281 +// }
282 +// $objWriter->endElement();
283 +// }
278 284 //
279 - $objWriter->endElement();
285 + $objWriter->endElement();
280 286
281 - // t
282 - $objWriter->startElement($prefix.'t');
283 -// $objWriter->writeAttribute('xml:space', 'preserve'); // Excel2010 accepts, Excel2007 complains
284 - $objWriter->writeRawData(PHPExcel_Shared_String::ControlCharacterPHP2OOXML($element->getText()));
285 - $objWriter->endElement();
287 + // t
288 + $objWriter->startElement($prefix.'t');
289 +// $objWriter->writeAttribute('xml:space', 'preserve'); // Excel2010 accepts, Excel2007 complains
290 + $objWriter->writeRawData(PHPExcel_Shared_String::ControlCharacterPHP2OOXML( $element->getText() ));
291 + $objWriter->endElement();
286 292
287 - $objWriter->endElement();
288 - }
289 - }
293 + $objWriter->endElement();
294 + }
295 + }
290 296
291 - /**
292 - * Flip string table (for index searching)
293 - *
294 - * @param array $stringTable Stringtable
295 - * @return array
296 - */
297 - public function flipStringTable($stringTable = array())
298 - {
299 - // Return value
300 - $returnValue = array();
297 + /**
298 + * Flip string table (for index searching)
299 + *
300 + * @param array $stringTable Stringtable
301 + * @return array
302 + */
303 + public function flipStringTable($stringTable = array()) {
304 + // Return value
305 + $returnValue = array();
301 306
302 - // Loop through stringtable and add flipped items to $returnValue
303 - foreach ($stringTable as $key => $value) {
304 - if (! $value instanceof PHPExcel_RichText) {
305 - $returnValue[$value] = $key;
306 - } elseif ($value instanceof PHPExcel_RichText) {
307 - $returnValue[$value->getHashCode()] = $key;
308 - }
309 - }
307 + // Loop through stringtable and add flipped items to $returnValue
308 + foreach ($stringTable as $key => $value) {
309 + if (! $value instanceof PHPExcel_RichText) {
310 + $returnValue[$value] = $key;
311 + } else if ($value instanceof PHPExcel_RichText) {
312 + $returnValue[$value->getHashCode()] = $key;
313 + }
314 + }
310 315
311 - return $returnValue;
312 - }
316 + // Return
317 + return $returnValue;
318 + }
313 319 }