PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.0.3
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.0.3
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
visualizer / vendor / phpoffice / phpexcel / Classes / PHPExcel / Writer / Excel2007 / Style.php

Style.php in Visualizer – Tables & Charts Manager with Built-in AI Generator 3.0.3, at vendor/phpoffice/phpexcel/Classes/PHPExcel/Writer/Excel2007/Style.php

708 lines 24.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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 ##VERSION##, ##DATE##
26 */
27
28
29 /**
30 * PHPExcel_Writer_Excel2007_Style
31 *
32 * @category PHPExcel
33 * @package PHPExcel_Writer_Excel2007
34 * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
35 */
36 class PHPExcel_Writer_Excel2007_Style extends PHPExcel_Writer_Excel2007_WriterPart
37 {
38 /**
39 * Write styles to XML format
40 *
41 * @param PHPExcel $pPHPExcel
42 * @return string XML Output
43 * @throws PHPExcel_Writer_Exception
44 */
45 public function writeStyles(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 // styleSheet
59 $objWriter->startElement('styleSheet');
60 $objWriter->writeAttribute('xml:space', 'preserve');
61 $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/spreadsheetml/2006/main');
62
63 // numFmts
64 $objWriter->startElement('numFmts');
65 $objWriter->writeAttribute('count', $this->getParentWriter()->getNumFmtHashTable()->count());
66
67 // numFmt
68 for ($i = 0; $i < $this->getParentWriter()->getNumFmtHashTable()->count(); ++$i) {
69 $this->_writeNumFmt($objWriter, $this->getParentWriter()->getNumFmtHashTable()->getByIndex($i), $i);
70 }
71
72 $objWriter->endElement();
73
74 // fonts
75 $objWriter->startElement('fonts');
76 $objWriter->writeAttribute('count', $this->getParentWriter()->getFontHashTable()->count());
77
78 // font
79 for ($i = 0; $i < $this->getParentWriter()->getFontHashTable()->count(); ++$i) {
80 $this->_writeFont($objWriter, $this->getParentWriter()->getFontHashTable()->getByIndex($i));
81 }
82
83 $objWriter->endElement();
84
85 // fills
86 $objWriter->startElement('fills');
87 $objWriter->writeAttribute('count', $this->getParentWriter()->getFillHashTable()->count());
88
89 // fill
90 for ($i = 0; $i < $this->getParentWriter()->getFillHashTable()->count(); ++$i) {
91 $this->_writeFill($objWriter, $this->getParentWriter()->getFillHashTable()->getByIndex($i));
92 }
93
94 $objWriter->endElement();
95
96 // borders
97 $objWriter->startElement('borders');
98 $objWriter->writeAttribute('count', $this->getParentWriter()->getBordersHashTable()->count());
99
100 // border
101 for ($i = 0; $i < $this->getParentWriter()->getBordersHashTable()->count(); ++$i) {
102 $this->_writeBorder($objWriter, $this->getParentWriter()->getBordersHashTable()->getByIndex($i));
103 }
104
105 $objWriter->endElement();
106
107 // cellStyleXfs
108 $objWriter->startElement('cellStyleXfs');
109 $objWriter->writeAttribute('count', 1);
110
111 // xf
112 $objWriter->startElement('xf');
113 $objWriter->writeAttribute('numFmtId', 0);
114 $objWriter->writeAttribute('fontId', 0);
115 $objWriter->writeAttribute('fillId', 0);
116 $objWriter->writeAttribute('borderId', 0);
117 $objWriter->endElement();
118
119 $objWriter->endElement();
120
121 // cellXfs
122 $objWriter->startElement('cellXfs');
123 $objWriter->writeAttribute('count', count($pPHPExcel->getCellXfCollection()));
124
125 // xf
126 foreach ($pPHPExcel->getCellXfCollection() as $cellXf) {
127 $this->_writeCellStyleXf($objWriter, $cellXf, $pPHPExcel);
128 }
129
130 $objWriter->endElement();
131
132 // cellStyles
133 $objWriter->startElement('cellStyles');
134 $objWriter->writeAttribute('count', 1);
135
136 // cellStyle
137 $objWriter->startElement('cellStyle');
138 $objWriter->writeAttribute('name', 'Normal');
139 $objWriter->writeAttribute('xfId', 0);
140 $objWriter->writeAttribute('builtinId', 0);
141 $objWriter->endElement();
142
143 $objWriter->endElement();
144
145 // dxfs
146 $objWriter->startElement('dxfs');
147 $objWriter->writeAttribute('count', $this->getParentWriter()->getStylesConditionalHashTable()->count());
148
149 // dxf
150 for ($i = 0; $i < $this->getParentWriter()->getStylesConditionalHashTable()->count(); ++$i) {
151 $this->_writeCellStyleDxf($objWriter, $this->getParentWriter()->getStylesConditionalHashTable()->getByIndex($i)->getStyle());
152 }
153
154 $objWriter->endElement();
155
156 // tableStyles
157 $objWriter->startElement('tableStyles');
158 $objWriter->writeAttribute('defaultTableStyle', 'TableStyleMedium9');
159 $objWriter->writeAttribute('defaultPivotStyle', 'PivotTableStyle1');
160 $objWriter->endElement();
161
162 $objWriter->endElement();
163
164 // Return
165 return $objWriter->getData();
166 }
167
168 /**
169 * Write Fill
170 *
171 * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
172 * @param PHPExcel_Style_Fill $pFill Fill style
173 * @throws PHPExcel_Writer_Exception
174 */
175 private function _writeFill(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style_Fill $pFill = null)
176 {
177 // Check if this is a pattern type or gradient type
178 if ($pFill->getFillType() === PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR ||
179 $pFill->getFillType() === PHPExcel_Style_Fill::FILL_GRADIENT_PATH) {
180 // Gradient fill
181 $this->_writeGradientFill($objWriter, $pFill);
182 } elseif($pFill->getFillType() !== NULL) {
183 // Pattern fill
184 $this->_writePatternFill($objWriter, $pFill);
185 }
186 }
187
188 /**
189 * Write Gradient Fill
190 *
191 * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
192 * @param PHPExcel_Style_Fill $pFill Fill style
193 * @throws PHPExcel_Writer_Exception
194 */
195 private function _writeGradientFill(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style_Fill $pFill = null)
196 {
197 // fill
198 $objWriter->startElement('fill');
199
200 // gradientFill
201 $objWriter->startElement('gradientFill');
202 $objWriter->writeAttribute('type', $pFill->getFillType());
203 $objWriter->writeAttribute('degree', $pFill->getRotation());
204
205 // stop
206 $objWriter->startElement('stop');
207 $objWriter->writeAttribute('position', '0');
208
209 // color
210 $objWriter->startElement('color');
211 $objWriter->writeAttribute('rgb', $pFill->getStartColor()->getARGB());
212 $objWriter->endElement();
213
214 $objWriter->endElement();
215
216 // stop
217 $objWriter->startElement('stop');
218 $objWriter->writeAttribute('position', '1');
219
220 // color
221 $objWriter->startElement('color');
222 $objWriter->writeAttribute('rgb', $pFill->getEndColor()->getARGB());
223 $objWriter->endElement();
224
225 $objWriter->endElement();
226
227 $objWriter->endElement();
228
229 $objWriter->endElement();
230 }
231
232 /**
233 * Write Pattern Fill
234 *
235 * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
236 * @param PHPExcel_Style_Fill $pFill Fill style
237 * @throws PHPExcel_Writer_Exception
238 */
239 private function _writePatternFill(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style_Fill $pFill = null)
240 {
241 // fill
242 $objWriter->startElement('fill');
243
244 // patternFill
245 $objWriter->startElement('patternFill');
246 $objWriter->writeAttribute('patternType', $pFill->getFillType());
247
248 if ($pFill->getFillType() !== PHPExcel_Style_Fill::FILL_NONE) {
249 // fgColor
250 if ($pFill->getStartColor()->getARGB()) {
251 $objWriter->startElement('fgColor');
252 $objWriter->writeAttribute('rgb', $pFill->getStartColor()->getARGB());
253 $objWriter->endElement();
254 }
255 }
256 if ($pFill->getFillType() !== PHPExcel_Style_Fill::FILL_NONE) {
257 // bgColor
258 if ($pFill->getEndColor()->getARGB()) {
259 $objWriter->startElement('bgColor');
260 $objWriter->writeAttribute('rgb', $pFill->getEndColor()->getARGB());
261 $objWriter->endElement();
262 }
263 }
264
265 $objWriter->endElement();
266
267 $objWriter->endElement();
268 }
269
270 /**
271 * Write Font
272 *
273 * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
274 * @param PHPExcel_Style_Font $pFont Font style
275 * @throws PHPExcel_Writer_Exception
276 */
277 private function _writeFont(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style_Font $pFont = null)
278 {
279 // font
280 $objWriter->startElement('font');
281 // Weird! The order of these elements actually makes a difference when opening Excel2007
282 // files in Excel2003 with the compatibility pack. It's not documented behaviour,
283 // and makes for a real WTF!
284
285 // Bold. We explicitly write this element also when false (like MS Office Excel 2007 does
286 // for conditional formatting). Otherwise it will apparently not be picked up in conditional
287 // formatting style dialog
288 if ($pFont->getBold() !== NULL) {
289 $objWriter->startElement('b');
290 $objWriter->writeAttribute('val', $pFont->getBold() ? '1' : '0');
291 $objWriter->endElement();
292 }
293
294 // Italic
295 if ($pFont->getItalic() !== NULL) {
296 $objWriter->startElement('i');
297 $objWriter->writeAttribute('val', $pFont->getItalic() ? '1' : '0');
298 $objWriter->endElement();
299 }
300
301 // Strikethrough
302 if ($pFont->getStrikethrough() !== NULL) {
303 $objWriter->startElement('strike');
304 $objWriter->writeAttribute('val', $pFont->getStrikethrough() ? '1' : '0');
305 $objWriter->endElement();
306 }
307
308 // Underline
309 if ($pFont->getUnderline() !== NULL) {
310 $objWriter->startElement('u');
311 $objWriter->writeAttribute('val', $pFont->getUnderline());
312 $objWriter->endElement();
313 }
314
315 // Superscript / subscript
316 if ($pFont->getSuperScript() === TRUE || $pFont->getSubScript() === TRUE) {
317 $objWriter->startElement('vertAlign');
318 if ($pFont->getSuperScript() === TRUE) {
319 $objWriter->writeAttribute('val', 'superscript');
320 } else if ($pFont->getSubScript() === TRUE) {
321 $objWriter->writeAttribute('val', 'subscript');
322 }
323 $objWriter->endElement();
324 }
325
326 // Size
327 if ($pFont->getSize() !== NULL) {
328 $objWriter->startElement('sz');
329 $objWriter->writeAttribute('val', $pFont->getSize());
330 $objWriter->endElement();
331 }
332
333 // Foreground color
334 if ($pFont->getColor()->getARGB() !== NULL) {
335 $objWriter->startElement('color');
336 $objWriter->writeAttribute('rgb', $pFont->getColor()->getARGB());
337 $objWriter->endElement();
338 }
339
340 // Name
341 if ($pFont->getName() !== NULL) {
342 $objWriter->startElement('name');
343 $objWriter->writeAttribute('val', $pFont->getName());
344 $objWriter->endElement();
345 }
346
347 $objWriter->endElement();
348 }
349
350 /**
351 * Write Border
352 *
353 * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
354 * @param PHPExcel_Style_Borders $pBorders Borders style
355 * @throws PHPExcel_Writer_Exception
356 */
357 private function _writeBorder(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style_Borders $pBorders = null)
358 {
359 // Write border
360 $objWriter->startElement('border');
361 // Diagonal?
362 switch ($pBorders->getDiagonalDirection()) {
363 case PHPExcel_Style_Borders::DIAGONAL_UP:
364 $objWriter->writeAttribute('diagonalUp', 'true');
365 $objWriter->writeAttribute('diagonalDown', 'false');
366 break;
367 case PHPExcel_Style_Borders::DIAGONAL_DOWN:
368 $objWriter->writeAttribute('diagonalUp', 'false');
369 $objWriter->writeAttribute('diagonalDown', 'true');
370 break;
371 case PHPExcel_Style_Borders::DIAGONAL_BOTH:
372 $objWriter->writeAttribute('diagonalUp', 'true');
373 $objWriter->writeAttribute('diagonalDown', 'true');
374 break;
375 }
376
377 // BorderPr
378 $this->_writeBorderPr($objWriter, 'left', $pBorders->getLeft());
379 $this->_writeBorderPr($objWriter, 'right', $pBorders->getRight());
380 $this->_writeBorderPr($objWriter, 'top', $pBorders->getTop());
381 $this->_writeBorderPr($objWriter, 'bottom', $pBorders->getBottom());
382 $this->_writeBorderPr($objWriter, 'diagonal', $pBorders->getDiagonal());
383 $objWriter->endElement();
384 }
385
386 /**
387 * Write Cell Style Xf
388 *
389 * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
390 * @param PHPExcel_Style $pStyle Style
391 * @param PHPExcel $pPHPExcel Workbook
392 * @throws PHPExcel_Writer_Exception
393 */
394 private function _writeCellStyleXf(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style $pStyle = null, PHPExcel $pPHPExcel = null)
395 {
396 // xf
397 $objWriter->startElement('xf');
398 $objWriter->writeAttribute('xfId', 0);
399 $objWriter->writeAttribute('fontId', (int)$this->getParentWriter()->getFontHashTable()->getIndexForHashCode($pStyle->getFont()->getHashCode()));
400 if ($pStyle->getQuotePrefix()) {
401 $objWriter->writeAttribute('quotePrefix', 1);
402 }
403
404 if ($pStyle->getNumberFormat()->getBuiltInFormatCode() === false) {
405 $objWriter->writeAttribute('numFmtId', (int)($this->getParentWriter()->getNumFmtHashTable()->getIndexForHashCode($pStyle->getNumberFormat()->getHashCode()) + 164) );
406 } else {
407 $objWriter->writeAttribute('numFmtId', (int)$pStyle->getNumberFormat()->getBuiltInFormatCode());
408 }
409
410 $objWriter->writeAttribute('fillId', (int)$this->getParentWriter()->getFillHashTable()->getIndexForHashCode($pStyle->getFill()->getHashCode()));
411 $objWriter->writeAttribute('borderId', (int)$this->getParentWriter()->getBordersHashTable()->getIndexForHashCode($pStyle->getBorders()->getHashCode()));
412
413 // Apply styles?
414 $objWriter->writeAttribute('applyFont', ($pPHPExcel->getDefaultStyle()->getFont()->getHashCode() != $pStyle->getFont()->getHashCode()) ? '1' : '0');
415 $objWriter->writeAttribute('applyNumberFormat', ($pPHPExcel->getDefaultStyle()->getNumberFormat()->getHashCode() != $pStyle->getNumberFormat()->getHashCode()) ? '1' : '0');
416 $objWriter->writeAttribute('applyFill', ($pPHPExcel->getDefaultStyle()->getFill()->getHashCode() != $pStyle->getFill()->getHashCode()) ? '1' : '0');
417 $objWriter->writeAttribute('applyBorder', ($pPHPExcel->getDefaultStyle()->getBorders()->getHashCode() != $pStyle->getBorders()->getHashCode()) ? '1' : '0');
418 $objWriter->writeAttribute('applyAlignment', ($pPHPExcel->getDefaultStyle()->getAlignment()->getHashCode() != $pStyle->getAlignment()->getHashCode()) ? '1' : '0');
419 if ($pStyle->getProtection()->getLocked() != PHPExcel_Style_Protection::PROTECTION_INHERIT || $pStyle->getProtection()->getHidden() != PHPExcel_Style_Protection::PROTECTION_INHERIT) {
420 $objWriter->writeAttribute('applyProtection', 'true');
421 }
422
423 // alignment
424 $objWriter->startElement('alignment');
425 $objWriter->writeAttribute('horizontal', $pStyle->getAlignment()->getHorizontal());
426 $objWriter->writeAttribute('vertical', $pStyle->getAlignment()->getVertical());
427
428 $textRotation = 0;
429 if ($pStyle->getAlignment()->getTextRotation() >= 0) {
430 $textRotation = $pStyle->getAlignment()->getTextRotation();
431 } else if ($pStyle->getAlignment()->getTextRotation() < 0) {
432 $textRotation = 90 - $pStyle->getAlignment()->getTextRotation();
433 }
434 $objWriter->writeAttribute('textRotation', $textRotation);
435
436 $objWriter->writeAttribute('wrapText', ($pStyle->getAlignment()->getWrapText() ? 'true' : 'false'));
437 $objWriter->writeAttribute('shrinkToFit', ($pStyle->getAlignment()->getShrinkToFit() ? 'true' : 'false'));
438
439 if ($pStyle->getAlignment()->getIndent() > 0) {
440 $objWriter->writeAttribute('indent', $pStyle->getAlignment()->getIndent());
441 }
442 if ($pStyle->getAlignment()->getReadorder() > 0) {
443 $objWriter->writeAttribute('readingOrder', $pStyle->getAlignment()->getReadorder());
444 }
445 $objWriter->endElement();
446
447 // protection
448 if ($pStyle->getProtection()->getLocked() != PHPExcel_Style_Protection::PROTECTION_INHERIT || $pStyle->getProtection()->getHidden() != PHPExcel_Style_Protection::PROTECTION_INHERIT) {
449 $objWriter->startElement('protection');
450 if ($pStyle->getProtection()->getLocked() != PHPExcel_Style_Protection::PROTECTION_INHERIT) {
451 $objWriter->writeAttribute('locked', ($pStyle->getProtection()->getLocked() == PHPExcel_Style_Protection::PROTECTION_PROTECTED ? 'true' : 'false'));
452 }
453 if ($pStyle->getProtection()->getHidden() != PHPExcel_Style_Protection::PROTECTION_INHERIT) {
454 $objWriter->writeAttribute('hidden', ($pStyle->getProtection()->getHidden() == PHPExcel_Style_Protection::PROTECTION_PROTECTED ? 'true' : 'false'));
455 }
456 $objWriter->endElement();
457 }
458
459 $objWriter->endElement();
460 }
461
462 /**
463 * Write Cell Style Dxf
464 *
465 * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
466 * @param PHPExcel_Style $pStyle Style
467 * @throws PHPExcel_Writer_Exception
468 */
469 private function _writeCellStyleDxf(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style $pStyle = null)
470 {
471 // dxf
472 $objWriter->startElement('dxf');
473
474 // font
475 $this->_writeFont($objWriter, $pStyle->getFont());
476
477 // numFmt
478 $this->_writeNumFmt($objWriter, $pStyle->getNumberFormat());
479
480 // fill
481 $this->_writeFill($objWriter, $pStyle->getFill());
482
483 // alignment
484 $objWriter->startElement('alignment');
485 if ($pStyle->getAlignment()->getHorizontal() !== NULL) {
486 $objWriter->writeAttribute('horizontal', $pStyle->getAlignment()->getHorizontal());
487 }
488 if ($pStyle->getAlignment()->getVertical() !== NULL) {
489 $objWriter->writeAttribute('vertical', $pStyle->getAlignment()->getVertical());
490 }
491
492 if ($pStyle->getAlignment()->getTextRotation() !== NULL) {
493 $textRotation = 0;
494 if ($pStyle->getAlignment()->getTextRotation() >= 0) {
495 $textRotation = $pStyle->getAlignment()->getTextRotation();
496 } else if ($pStyle->getAlignment()->getTextRotation() < 0) {
497 $textRotation = 90 - $pStyle->getAlignment()->getTextRotation();
498 }
499 $objWriter->writeAttribute('textRotation', $textRotation);
500 }
501 $objWriter->endElement();
502
503 // border
504 $this->_writeBorder($objWriter, $pStyle->getBorders());
505
506 // protection
507 if (($pStyle->getProtection()->getLocked() !== NULL) ||
508 ($pStyle->getProtection()->getHidden() !== NULL)) {
509 if ($pStyle->getProtection()->getLocked() !== PHPExcel_Style_Protection::PROTECTION_INHERIT ||
510 $pStyle->getProtection()->getHidden() !== PHPExcel_Style_Protection::PROTECTION_INHERIT) {
511 $objWriter->startElement('protection');
512 if (($pStyle->getProtection()->getLocked() !== NULL) &&
513 ($pStyle->getProtection()->getLocked() !== PHPExcel_Style_Protection::PROTECTION_INHERIT)) {
514 $objWriter->writeAttribute('locked', ($pStyle->getProtection()->getLocked() == PHPExcel_Style_Protection::PROTECTION_PROTECTED ? 'true' : 'false'));
515 }
516 if (($pStyle->getProtection()->getHidden() !== NULL) &&
517 ($pStyle->getProtection()->getHidden() !== PHPExcel_Style_Protection::PROTECTION_INHERIT)) {
518 $objWriter->writeAttribute('hidden', ($pStyle->getProtection()->getHidden() == PHPExcel_Style_Protection::PROTECTION_PROTECTED ? 'true' : 'false'));
519 }
520 $objWriter->endElement();
521 }
522 }
523
524 $objWriter->endElement();
525 }
526
527 /**
528 * Write BorderPr
529 *
530 * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
531 * @param string $pName Element name
532 * @param PHPExcel_Style_Border $pBorder Border style
533 * @throws PHPExcel_Writer_Exception
534 */
535 private function _writeBorderPr(PHPExcel_Shared_XMLWriter $objWriter = null, $pName = 'left', PHPExcel_Style_Border $pBorder = null)
536 {
537 // Write BorderPr
538 if ($pBorder->getBorderStyle() != PHPExcel_Style_Border::BORDER_NONE) {
539 $objWriter->startElement($pName);
540 $objWriter->writeAttribute('style', $pBorder->getBorderStyle());
541
542 // color
543 $objWriter->startElement('color');
544 $objWriter->writeAttribute('rgb', $pBorder->getColor()->getARGB());
545 $objWriter->endElement();
546
547 $objWriter->endElement();
548 }
549 }
550
551 /**
552 * Write NumberFormat
553 *
554 * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
555 * @param PHPExcel_Style_NumberFormat $pNumberFormat Number Format
556 * @param int $pId Number Format identifier
557 * @throws PHPExcel_Writer_Exception
558 */
559 private function _writeNumFmt(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style_NumberFormat $pNumberFormat = null, $pId = 0)
560 {
561 // Translate formatcode
562 $formatCode = $pNumberFormat->getFormatCode();
563
564 // numFmt
565 if ($formatCode !== NULL) {
566 $objWriter->startElement('numFmt');
567 $objWriter->writeAttribute('numFmtId', ($pId + 164));
568 $objWriter->writeAttribute('formatCode', $formatCode);
569 $objWriter->endElement();
570 }
571 }
572
573 /**
574 * Get an array of all styles
575 *
576 * @param PHPExcel $pPHPExcel
577 * @return PHPExcel_Style[] All styles in PHPExcel
578 * @throws PHPExcel_Writer_Exception
579 */
580 public function allStyles(PHPExcel $pPHPExcel = null)
581 {
582 $aStyles = $pPHPExcel->getCellXfCollection();
583
584 return $aStyles;
585 }
586
587 /**
588 * Get an array of all conditional styles
589 *
590 * @param PHPExcel $pPHPExcel
591 * @return PHPExcel_Style_Conditional[] All conditional styles in PHPExcel
592 * @throws PHPExcel_Writer_Exception
593 */
594 public function allConditionalStyles(PHPExcel $pPHPExcel = null)
595 {
596 // Get an array of all styles
597 $aStyles = array();
598
599 $sheetCount = $pPHPExcel->getSheetCount();
600 for ($i = 0; $i < $sheetCount; ++$i) {
601 foreach ($pPHPExcel->getSheet($i)->getConditionalStylesCollection() as $conditionalStyles) {
602 foreach ($conditionalStyles as $conditionalStyle) {
603 $aStyles[] = $conditionalStyle;
604 }
605 }
606 }
607
608 return $aStyles;
609 }
610
611 /**
612 * Get an array of all fills
613 *
614 * @param PHPExcel $pPHPExcel
615 * @return PHPExcel_Style_Fill[] All fills in PHPExcel
616 * @throws PHPExcel_Writer_Exception
617 */
618 public function allFills(PHPExcel $pPHPExcel = null)
619 {
620 // Get an array of unique fills
621 $aFills = array();
622
623 // Two first fills are predefined
624 $fill0 = new PHPExcel_Style_Fill();
625 $fill0->setFillType(PHPExcel_Style_Fill::FILL_NONE);
626 $aFills[] = $fill0;
627
628 $fill1 = new PHPExcel_Style_Fill();
629 $fill1->setFillType(PHPExcel_Style_Fill::FILL_PATTERN_GRAY125);
630 $aFills[] = $fill1;
631 // The remaining fills
632 $aStyles = $this->allStyles($pPHPExcel);
633 foreach ($aStyles as $style) {
634 if (!array_key_exists($style->getFill()->getHashCode(), $aFills)) {
635 $aFills[ $style->getFill()->getHashCode() ] = $style->getFill();
636 }
637 }
638
639 return $aFills;
640 }
641
642 /**
643 * Get an array of all fonts
644 *
645 * @param PHPExcel $pPHPExcel
646 * @return PHPExcel_Style_Font[] All fonts in PHPExcel
647 * @throws PHPExcel_Writer_Exception
648 */
649 public function allFonts(PHPExcel $pPHPExcel = null)
650 {
651 // Get an array of unique fonts
652 $aFonts = array();
653 $aStyles = $this->allStyles($pPHPExcel);
654
655 foreach ($aStyles as $style) {
656 if (!array_key_exists($style->getFont()->getHashCode(), $aFonts)) {
657 $aFonts[ $style->getFont()->getHashCode() ] = $style->getFont();
658 }
659 }
660
661 return $aFonts;
662 }
663
664 /**
665 * Get an array of all borders
666 *
667 * @param PHPExcel $pPHPExcel
668 * @return PHPExcel_Style_Borders[] All borders in PHPExcel
669 * @throws PHPExcel_Writer_Exception
670 */
671 public function allBorders(PHPExcel $pPHPExcel = null)
672 {
673 // Get an array of unique borders
674 $aBorders = array();
675 $aStyles = $this->allStyles($pPHPExcel);
676
677 foreach ($aStyles as $style) {
678 if (!array_key_exists($style->getBorders()->getHashCode(), $aBorders)) {
679 $aBorders[ $style->getBorders()->getHashCode() ] = $style->getBorders();
680 }
681 }
682
683 return $aBorders;
684 }
685
686 /**
687 * Get an array of all number formats
688 *
689 * @param PHPExcel $pPHPExcel
690 * @return PHPExcel_Style_NumberFormat[] All number formats in PHPExcel
691 * @throws PHPExcel_Writer_Exception
692 */
693 public function allNumberFormats(PHPExcel $pPHPExcel = null)
694 {
695 // Get an array of unique number formats
696 $aNumFmts = array();
697 $aStyles = $this->allStyles($pPHPExcel);
698
699 foreach ($aStyles as $style) {
700 if ($style->getNumberFormat()->getBuiltInFormatCode() === false && !array_key_exists($style->getNumberFormat()->getHashCode(), $aNumFmts)) {
701 $aNumFmts[ $style->getNumberFormat()->getHashCode() ] = $style->getNumberFormat();
702 }
703 }
704
705 return $aNumFmts;
706 }
707 }
708