PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.1.2
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.1.2
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 / Reader / Abstract.php

Abstract.php in Visualizer – Tables & Charts Manager with Built-in AI Generator 3.1.2, at vendor/phpoffice/phpexcel/Classes/PHPExcel/Reader/Abstract.php

302 lines 8.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * PHPExcel_Reader_Abstract
5 *
6 * Copyright (c) 2006 - 2015 PHPExcel
7 *
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
12 *
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 *
22 * @category PHPExcel
23 * @package PHPExcel_Reader
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
26 * @version ##VERSION##, ##DATE##
27 */
28 abstract class PHPExcel_Reader_Abstract implements PHPExcel_Reader_IReader
29 {
30 /**
31 * Read data only?
32 * Identifies whether the Reader should only read data values for cells, and ignore any formatting information;
33 * or whether it should read both data and formatting
34 *
35 * @var boolean
36 */
37 protected $readDataOnly = false;
38
39 /**
40 * Read empty cells?
41 * Identifies whether the Reader should read data values for cells all cells, or should ignore cells containing
42 * null value or empty string
43 *
44 * @var boolean
45 */
46 protected $readEmptyCells = true;
47
48 /**
49 * Read charts that are defined in the workbook?
50 * Identifies whether the Reader should read the definitions for any charts that exist in the workbook;
51 *
52 * @var boolean
53 */
54 protected $includeCharts = false;
55
56 /**
57 * Restrict which sheets should be loaded?
58 * This property holds an array of worksheet names to be loaded. If null, then all worksheets will be loaded.
59 *
60 * @var array of string
61 */
62 protected $loadSheetsOnly;
63
64 /**
65 * PHPExcel_Reader_IReadFilter instance
66 *
67 * @var PHPExcel_Reader_IReadFilter
68 */
69 protected $readFilter;
70
71 protected $fileHandle = null;
72
73
74 /**
75 * Read data only?
76 * If this is true, then the Reader will only read data values for cells, it will not read any formatting information.
77 * If false (the default) it will read data and formatting.
78 *
79 * @return boolean
80 */
81 public function getReadDataOnly()
82 {
83 return $this->readDataOnly;
84 }
85
86 /**
87 * Set read data only
88 * Set to true, to advise the Reader only to read data values for cells, and to ignore any formatting information.
89 * Set to false (the default) to advise the Reader to read both data and formatting for cells.
90 *
91 * @param boolean $pValue
92 *
93 * @return PHPExcel_Reader_IReader
94 */
95 public function setReadDataOnly($pValue = false)
96 {
97 $this->readDataOnly = $pValue;
98 return $this;
99 }
100
101 /**
102 * Read empty cells?
103 * If this is true (the default), then the Reader will read data values for all cells, irrespective of value.
104 * If false it will not read data for cells containing a null value or an empty string.
105 *
106 * @return boolean
107 */
108 public function getReadEmptyCells()
109 {
110 return $this->readEmptyCells;
111 }
112
113 /**
114 * Set read empty cells
115 * Set to true (the default) to advise the Reader read data values for all cells, irrespective of value.
116 * Set to false to advise the Reader to ignore cells containing a null value or an empty string.
117 *
118 * @param boolean $pValue
119 *
120 * @return PHPExcel_Reader_IReader
121 */
122 public function setReadEmptyCells($pValue = true)
123 {
124 $this->readEmptyCells = $pValue;
125 return $this;
126 }
127
128 /**
129 * Read charts in workbook?
130 * If this is true, then the Reader will include any charts that exist in the workbook.
131 * Note that a ReadDataOnly value of false overrides, and charts won't be read regardless of the IncludeCharts value.
132 * If false (the default) it will ignore any charts defined in the workbook file.
133 *
134 * @return boolean
135 */
136 public function getIncludeCharts()
137 {
138 return $this->includeCharts;
139 }
140
141 /**
142 * Set read charts in workbook
143 * Set to true, to advise the Reader to include any charts that exist in the workbook.
144 * Note that a ReadDataOnly value of false overrides, and charts won't be read regardless of the IncludeCharts value.
145 * Set to false (the default) to discard charts.
146 *
147 * @param boolean $pValue
148 *
149 * @return PHPExcel_Reader_IReader
150 */
151 public function setIncludeCharts($pValue = false)
152 {
153 $this->includeCharts = (boolean) $pValue;
154 return $this;
155 }
156
157 /**
158 * Get which sheets to load
159 * Returns either an array of worksheet names (the list of worksheets that should be loaded), or a null
160 * indicating that all worksheets in the workbook should be loaded.
161 *
162 * @return mixed
163 */
164 public function getLoadSheetsOnly()
165 {
166 return $this->loadSheetsOnly;
167 }
168
169 /**
170 * Set which sheets to load
171 *
172 * @param mixed $value
173 * This should be either an array of worksheet names to be loaded, or a string containing a single worksheet name.
174 * If NULL, then it tells the Reader to read all worksheets in the workbook
175 *
176 * @return PHPExcel_Reader_IReader
177 */
178 public function setLoadSheetsOnly($value = null)
179 {
180 if ($value === null) {
181 return $this->setLoadAllSheets();
182 }
183
184 $this->loadSheetsOnly = is_array($value) ? $value : array($value);
185 return $this;
186 }
187
188 /**
189 * Set all sheets to load
190 * Tells the Reader to load all worksheets from the workbook.
191 *
192 * @return PHPExcel_Reader_IReader
193 */
194 public function setLoadAllSheets()
195 {
196 $this->loadSheetsOnly = null;
197 return $this;
198 }
199
200 /**
201 * Read filter
202 *
203 * @return PHPExcel_Reader_IReadFilter
204 */
205 public function getReadFilter()
206 {
207 return $this->readFilter;
208 }
209
210 /**
211 * Set read filter
212 *
213 * @param PHPExcel_Reader_IReadFilter $pValue
214 * @return PHPExcel_Reader_IReader
215 */
216 public function setReadFilter(PHPExcel_Reader_IReadFilter $pValue)
217 {
218 $this->readFilter = $pValue;
219 return $this;
220 }
221
222 /**
223 * Open file for reading
224 *
225 * @param string $pFilename
226 * @throws PHPExcel_Reader_Exception
227 * @return resource
228 */
229 protected function openFile($pFilename)
230 {
231 // Check if file exists
232 if (!file_exists($pFilename) || !is_readable($pFilename)) {
233 throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist.");
234 }
235
236 // Open file
237 $this->fileHandle = fopen($pFilename, 'r');
238 if ($this->fileHandle === false) {
239 throw new PHPExcel_Reader_Exception("Could not open file " . $pFilename . " for reading.");
240 }
241 }
242
243 /**
244 * Can the current PHPExcel_Reader_IReader read the file?
245 *
246 * @param string $pFilename
247 * @return boolean
248 * @throws PHPExcel_Reader_Exception
249 */
250 public function canRead($pFilename)
251 {
252 // Check if file exists
253 try {
254 $this->openFile($pFilename);
255 } catch (Exception $e) {
256 return false;
257 }
258
259 $readable = $this->isValidFormat();
260 fclose($this->fileHandle);
261 return $readable;
262 }
263
264 /**
265 * Scan theXML for use of <!ENTITY to prevent XXE/XEE attacks
266 *
267 * @param string $xml
268 * @throws PHPExcel_Reader_Exception
269 */
270 public function securityScan($xml)
271 {
272 $pattern = '/encoding="(.*?)"/';
273 $result = preg_match($pattern, $xml, $matches);
274 if ($result) {
275 $charset = $matches[1];
276 } else {
277 $charset = 'UTF-8';
278 }
279
280 if ($charset !== 'UTF-8') {
281 $xml = mb_convert_encoding($xml, 'UTF-8', $charset);
282 }
283
284 $pattern = '/\\0?' . implode('\\0?', str_split('<!DOCTYPE')) . '\\0?/';
285 if (preg_match($pattern, $xml)) {
286 throw new PHPExcel_Reader_Exception('Detected use of ENTITY in XML, spreadsheet file load() aborted to prevent XXE/XEE attacks');
287 }
288 return $xml;
289 }
290
291 /**
292 * Scan theXML for use of <!ENTITY to prevent XXE/XEE attacks
293 *
294 * @param string $filestream
295 * @throws PHPExcel_Reader_Exception
296 */
297 public function securityScanFile($filestream)
298 {
299 return $this->securityScan(file_get_contents($filestream));
300 }
301 }
302