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 / Reader / Abstract.php

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

256 lines 6.9 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_Reader
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_Reader_Abstract
31 *
32 * @category PHPExcel
33 * @package PHPExcel_Reader
34 * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
35 */
36 abstract class PHPExcel_Reader_Abstract implements PHPExcel_Reader_IReader
37 {
38 /**
39 * Read data only?
40 * Identifies whether the Reader should only read data values for cells, and ignore any formatting information;
41 * or whether it should read both data and formatting
42 *
43 * @var boolean
44 */
45 protected $_readDataOnly = FALSE;
46
47 /**
48 * Read charts that are defined in the workbook?
49 * Identifies whether the Reader should read the definitions for any charts that exist in the workbook;
50 *
51 * @var boolean
52 */
53 protected $_includeCharts = FALSE;
54
55 /**
56 * Restrict which sheets should be loaded?
57 * This property holds an array of worksheet names to be loaded. If null, then all worksheets will be loaded.
58 *
59 * @var array of string
60 */
61 protected $_loadSheetsOnly = NULL;
62
63 /**
64 * PHPExcel_Reader_IReadFilter instance
65 *
66 * @var PHPExcel_Reader_IReadFilter
67 */
68 protected $_readFilter = NULL;
69
70 protected $_fileHandle = NULL;
71
72
73 /**
74 * Read data only?
75 * If this is true, then the Reader will only read data values for cells, it will not read any formatting information.
76 * If false (the default) it will read data and formatting.
77 *
78 * @return boolean
79 */
80 public function getReadDataOnly() {
81 return $this->_readDataOnly;
82 }
83
84 /**
85 * Set read data only
86 * Set to true, to advise the Reader only to read data values for cells, and to ignore any formatting information.
87 * Set to false (the default) to advise the Reader to read both data and formatting for cells.
88 *
89 * @param boolean $pValue
90 *
91 * @return PHPExcel_Reader_IReader
92 */
93 public function setReadDataOnly($pValue = FALSE) {
94 $this->_readDataOnly = $pValue;
95 return $this;
96 }
97
98 /**
99 * Read charts in workbook?
100 * If this is true, then the Reader will include any charts that exist in the workbook.
101 * Note that a ReadDataOnly value of false overrides, and charts won't be read regardless of the IncludeCharts value.
102 * If false (the default) it will ignore any charts defined in the workbook file.
103 *
104 * @return boolean
105 */
106 public function getIncludeCharts() {
107 return $this->_includeCharts;
108 }
109
110 /**
111 * Set read charts in workbook
112 * Set to true, to advise the Reader to include any charts that exist in the workbook.
113 * Note that a ReadDataOnly value of false overrides, and charts won't be read regardless of the IncludeCharts value.
114 * Set to false (the default) to discard charts.
115 *
116 * @param boolean $pValue
117 *
118 * @return PHPExcel_Reader_IReader
119 */
120 public function setIncludeCharts($pValue = FALSE) {
121 $this->_includeCharts = (boolean) $pValue;
122 return $this;
123 }
124
125 /**
126 * Get which sheets to load
127 * Returns either an array of worksheet names (the list of worksheets that should be loaded), or a null
128 * indicating that all worksheets in the workbook should be loaded.
129 *
130 * @return mixed
131 */
132 public function getLoadSheetsOnly()
133 {
134 return $this->_loadSheetsOnly;
135 }
136
137 /**
138 * Set which sheets to load
139 *
140 * @param mixed $value
141 * This should be either an array of worksheet names to be loaded, or a string containing a single worksheet name.
142 * If NULL, then it tells the Reader to read all worksheets in the workbook
143 *
144 * @return PHPExcel_Reader_IReader
145 */
146 public function setLoadSheetsOnly($value = NULL)
147 {
148 if ($value === NULL)
149 return $this->setLoadAllSheets();
150
151 $this->_loadSheetsOnly = is_array($value) ?
152 $value : array($value);
153 return $this;
154 }
155
156 /**
157 * Set all sheets to load
158 * Tells the Reader to load all worksheets from the workbook.
159 *
160 * @return PHPExcel_Reader_IReader
161 */
162 public function setLoadAllSheets()
163 {
164 $this->_loadSheetsOnly = NULL;
165 return $this;
166 }
167
168 /**
169 * Read filter
170 *
171 * @return PHPExcel_Reader_IReadFilter
172 */
173 public function getReadFilter() {
174 return $this->_readFilter;
175 }
176
177 /**
178 * Set read filter
179 *
180 * @param PHPExcel_Reader_IReadFilter $pValue
181 * @return PHPExcel_Reader_IReader
182 */
183 public function setReadFilter(PHPExcel_Reader_IReadFilter $pValue) {
184 $this->_readFilter = $pValue;
185 return $this;
186 }
187
188 /**
189 * Open file for reading
190 *
191 * @param string $pFilename
192 * @throws PHPExcel_Reader_Exception
193 * @return resource
194 */
195 protected function _openFile($pFilename)
196 {
197 // Check if file exists
198 if (!file_exists($pFilename) || !is_readable($pFilename)) {
199 throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist.");
200 }
201
202 // Open file
203 $this->_fileHandle = fopen($pFilename, 'r');
204 if ($this->_fileHandle === FALSE) {
205 throw new PHPExcel_Reader_Exception("Could not open file " . $pFilename . " for reading.");
206 }
207 }
208
209 /**
210 * Can the current PHPExcel_Reader_IReader read the file?
211 *
212 * @param string $pFilename
213 * @return boolean
214 * @throws PHPExcel_Reader_Exception
215 */
216 public function canRead($pFilename)
217 {
218 // Check if file exists
219 try {
220 $this->_openFile($pFilename);
221 } catch (Exception $e) {
222 return FALSE;
223 }
224
225 $readable = $this->_isValidFormat();
226 fclose ($this->_fileHandle);
227 return $readable;
228 }
229
230 /**
231 * Scan theXML for use of <!ENTITY to prevent XXE/XEE attacks
232 *
233 * @param string $xml
234 * @throws PHPExcel_Reader_Exception
235 */
236 public function securityScan($xml)
237 {
238 $pattern = '/\\0?' . implode('\\0?', str_split('<!DOCTYPE')) . '\\0?/';
239 if (preg_match($pattern, $xml)) {
240 throw new PHPExcel_Reader_Exception('Detected use of ENTITY in XML, spreadsheet file load() aborted to prevent XXE/XEE attacks');
241 }
242 return $xml;
243 }
244
245 /**
246 * Scan theXML for use of <!ENTITY to prevent XXE/XEE attacks
247 *
248 * @param string $filestream
249 * @throws PHPExcel_Reader_Exception
250 */
251 public function securityScanFile($filestream)
252 {
253 return $this->securityScan(file_get_contents($filestream));
254 }
255 }
256