[289] | 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 | } |
---|