PluginProbe
TablePress – Tables in WordPress made easy / 3.4
TablePress – Tables in WordPress made easy v3.4
3.4 3.3.4 3.3.3 3.3.2 3.3.1 trunk 1.12 1.14 1.9.2 2.0.4 2.1.7 2.1.8 2.2 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.3 2.3.1 2.3.2 2.4 2.4.1 2.4.2 2.4.3 All 45 releases
tablepress / libraries / vendor / PhpSpreadsheet / Reader / Xlsx / SheetViewOptions.php

SheetViewOptions.php in TablePress – Tables in WordPress made easy 3.4, at libraries/vendor/PhpSpreadsheet/Reader/Xlsx/SheetViewOptions.php

140 lines 4.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace TablePress\PhpOffice\PhpSpreadsheet\Reader\Xlsx;
4
5 use TablePress\PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
6 use SimpleXMLElement;
7
8 class SheetViewOptions extends BaseParserClass
9 {
10 private Worksheet $worksheet;
11
12 private ?SimpleXMLElement $worksheetXml;
13
14 public function __construct(Worksheet $workSheet, ?SimpleXMLElement $worksheetXml = null)
15 {
16 $this->worksheet = $workSheet;
17 $this->worksheetXml = $worksheetXml;
18 }
19
20 public function load(bool $readDataOnly, Styles $styleReader): void
21 {
22 if ($this->worksheetXml === null) {
23 return;
24 }
25
26 if (isset($this->worksheetXml->sheetPr)) {
27 $sheetPr = $this->worksheetXml->sheetPr;
28 $this->tabColor($sheetPr, $styleReader);
29 $this->codeName($sheetPr);
30 $this->outlines($sheetPr);
31 $this->pageSetup($sheetPr);
32 }
33
34 if (isset($this->worksheetXml->sheetFormatPr)) {
35 $this->sheetFormat($this->worksheetXml->sheetFormatPr);
36 }
37
38 if (!$readDataOnly && isset($this->worksheetXml->printOptions)) {
39 $this->printOptions($this->worksheetXml->printOptions);
40 }
41 }
42
43 private function tabColor(SimpleXMLElement $sheetPr, Styles $styleReader): void
44 {
45 if (isset($sheetPr->tabColor)) {
46 $this->worksheet->getTabColor()->setARGB($styleReader->readColor($sheetPr->tabColor));
47 }
48 }
49
50 private function codeName(SimpleXMLElement $sheetPrx): void
51 {
52 $sheetPr = $sheetPrx->attributes() ?? [];
53 if (isset($sheetPr['codeName'])) {
54 $this->worksheet->setCodeName((string) $sheetPr['codeName'], false);
55 }
56 }
57
58 private function outlines(SimpleXMLElement $sheetPr): void
59 {
60 if (isset($sheetPr->outlinePr)) {
61 $attr = $sheetPr->outlinePr->attributes() ?? [];
62 if (
63 isset($attr['summaryRight'])
64 && !self::boolean((string) $attr['summaryRight'])
65 ) {
66 $this->worksheet->setShowSummaryRight(false);
67 } else {
68 $this->worksheet->setShowSummaryRight(true);
69 }
70
71 if (
72 isset($attr['summaryBelow'])
73 && !self::boolean((string) $attr['summaryBelow'])
74 ) {
75 $this->worksheet->setShowSummaryBelow(false);
76 } else {
77 $this->worksheet->setShowSummaryBelow(true);
78 }
79 }
80 }
81
82 private function pageSetup(SimpleXMLElement $sheetPr): void
83 {
84 if (isset($sheetPr->pageSetUpPr)) {
85 $attr = $sheetPr->pageSetUpPr->attributes() ?? [];
86 if (
87 isset($attr['fitToPage'])
88 && !self::boolean((string) $attr['fitToPage'])
89 ) {
90 $this->worksheet->getPageSetup()->setFitToPage(false);
91 } else {
92 $this->worksheet->getPageSetup()->setFitToPage(true);
93 }
94 }
95 }
96
97 private function sheetFormat(SimpleXMLElement $sheetFormatPrx): void
98 {
99 $sheetFormatPr = $sheetFormatPrx->attributes() ?? [];
100 if (
101 isset($sheetFormatPr['customHeight'])
102 && self::boolean((string) $sheetFormatPr['customHeight'])
103 && isset($sheetFormatPr['defaultRowHeight'])
104 ) {
105 $this->worksheet->getDefaultRowDimension()
106 ->setRowHeight((float) $sheetFormatPr['defaultRowHeight']);
107 }
108
109 if (isset($sheetFormatPr['defaultColWidth'])) {
110 $this->worksheet->getDefaultColumnDimension()
111 ->setWidth((float) $sheetFormatPr['defaultColWidth']);
112 }
113
114 if (
115 isset($sheetFormatPr['zeroHeight'])
116 && ((string) $sheetFormatPr['zeroHeight'] === '1')
117 ) {
118 $this->worksheet->getDefaultRowDimension()->setZeroHeight(true);
119 }
120 }
121
122 private function printOptions(SimpleXMLElement $printOptionsx): void
123 {
124 $printOptions = $printOptionsx->attributes() ?? [];
125 // Spec is weird. gridLines (default false)
126 // and gridLinesSet (default true) must both be true.
127 if (isset($printOptions['gridLines']) && self::boolean((string) $printOptions['gridLines'])) {
128 if (!isset($printOptions['gridLinesSet']) || self::boolean((string) $printOptions['gridLinesSet'])) {
129 $this->worksheet->setPrintGridlines(true);
130 }
131 }
132 if (isset($printOptions['horizontalCentered']) && self::boolean((string) $printOptions['horizontalCentered'])) {
133 $this->worksheet->getPageSetup()->setHorizontalCentered(true);
134 }
135 if (isset($printOptions['verticalCentered']) && self::boolean((string) $printOptions['verticalCentered'])) {
136 $this->worksheet->getPageSetup()->setVerticalCentered(true);
137 }
138 }
139 }
140