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 1.8.0, 2014-03-02
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: $this->_loadSheetsOnly = is_array($value) ?
149: $value : array($value);
150: return $this;
151: }
152:
153: /**
154: * Set all sheets to load
155: * Tells the Reader to load all worksheets from the workbook.
156: *
157: * @return PHPExcel_Reader_IReader
158: */
159: public function setLoadAllSheets()
160: {
161: $this->_loadSheetsOnly = NULL;
162: return $this;
163: }
164:
165: /**
166: * Read filter
167: *
168: * @return PHPExcel_Reader_IReadFilter
169: */
170: public function getReadFilter() {
171: return $this->_readFilter;
172: }
173:
174: /**
175: * Set read filter
176: *
177: * @param PHPExcel_Reader_IReadFilter $pValue
178: * @return PHPExcel_Reader_IReader
179: */
180: public function setReadFilter(PHPExcel_Reader_IReadFilter $pValue) {
181: $this->_readFilter = $pValue;
182: return $this;
183: }
184:
185: /**
186: * Open file for reading
187: *
188: * @param string $pFilename
189: * @throws PHPExcel_Reader_Exception
190: * @return resource
191: */
192: protected function _openFile($pFilename)
193: {
194: // Check if file exists
195: if (!file_exists($pFilename) || !is_readable($pFilename)) {
196: throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist.");
197: }
198:
199: // Open file
200: $this->_fileHandle = fopen($pFilename, 'r');
201: if ($this->_fileHandle === FALSE) {
202: throw new PHPExcel_Reader_Exception("Could not open file " . $pFilename . " for reading.");
203: }
204: }
205:
206: /**
207: * Can the current PHPExcel_Reader_IReader read the file?
208: *
209: * @param string $pFilename
210: * @return boolean
211: * @throws PHPExcel_Reader_Exception
212: */
213: public function canRead($pFilename)
214: {
215: // Check if file exists
216: try {
217: $this->_openFile($pFilename);
218: } catch (Exception $e) {
219: return FALSE;
220: }
221:
222: $readable = $this->_isValidFormat();
223: fclose ($this->_fileHandle);
224: return $readable;
225: }
226:
227: }
228: