[ Index ] |
PHP Cross Reference of moodle-2.8 |
[Summary view] [Print] [Text view]
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_Writer_CSV 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_Writer_CSV 31 * 32 * @category PHPExcel 33 * @package PHPExcel_Writer_CSV 34 * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) 35 */ 36 class PHPExcel_Writer_CSV extends PHPExcel_Writer_Abstract implements PHPExcel_Writer_IWriter { 37 /** 38 * PHPExcel object 39 * 40 * @var PHPExcel 41 */ 42 private $_phpExcel; 43 44 /** 45 * Delimiter 46 * 47 * @var string 48 */ 49 private $_delimiter = ','; 50 51 /** 52 * Enclosure 53 * 54 * @var string 55 */ 56 private $_enclosure = '"'; 57 58 /** 59 * Line ending 60 * 61 * @var string 62 */ 63 private $_lineEnding = PHP_EOL; 64 65 /** 66 * Sheet index to write 67 * 68 * @var int 69 */ 70 private $_sheetIndex = 0; 71 72 /** 73 * Whether to write a BOM (for UTF8). 74 * 75 * @var boolean 76 */ 77 private $_useBOM = false; 78 79 /** 80 * Whether to write a fully Excel compatible CSV file. 81 * 82 * @var boolean 83 */ 84 private $_excelCompatibility = false; 85 86 /** 87 * Create a new PHPExcel_Writer_CSV 88 * 89 * @param PHPExcel $phpExcel PHPExcel object 90 */ 91 public function __construct(PHPExcel $phpExcel) { 92 $this->_phpExcel = $phpExcel; 93 } 94 95 /** 96 * Save PHPExcel to file 97 * 98 * @param string $pFilename 99 * @throws PHPExcel_Writer_Exception 100 */ 101 public function save($pFilename = null) { 102 // Fetch sheet 103 $sheet = $this->_phpExcel->getSheet($this->_sheetIndex); 104 105 $saveDebugLog = PHPExcel_Calculation::getInstance($this->_phpExcel)->getDebugLog()->getWriteDebugLog(); 106 PHPExcel_Calculation::getInstance($this->_phpExcel)->getDebugLog()->setWriteDebugLog(FALSE); 107 $saveArrayReturnType = PHPExcel_Calculation::getArrayReturnType(); 108 PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE); 109 110 // Open file 111 $fileHandle = fopen($pFilename, 'wb+'); 112 if ($fileHandle === false) { 113 throw new PHPExcel_Writer_Exception("Could not open file $pFilename for writing."); 114 } 115 116 if ($this->_excelCompatibility) { 117 fwrite($fileHandle, "\xEF\xBB\xBF"); // Enforce UTF-8 BOM Header 118 $this->setEnclosure('"'); // Set enclosure to " 119 $this->setDelimiter(";"); // Set delimiter to a semi-colon 120 $this->setLineEnding("\r\n"); 121 fwrite($fileHandle, 'sep=' . $this->getDelimiter() . $this->_lineEnding); 122 } elseif ($this->_useBOM) { 123 // Write the UTF-8 BOM code if required 124 fwrite($fileHandle, "\xEF\xBB\xBF"); 125 } 126 127 // Identify the range that we need to extract from the worksheet 128 $maxCol = $sheet->getHighestDataColumn(); 129 $maxRow = $sheet->getHighestDataRow(); 130 131 // Write rows to file 132 for($row = 1; $row <= $maxRow; ++$row) { 133 // Convert the row to an array... 134 $cellsArray = $sheet->rangeToArray('A'.$row.':'.$maxCol.$row,'', $this->_preCalculateFormulas); 135 // ... and write to the file 136 $this->_writeLine($fileHandle, $cellsArray[0]); 137 } 138 139 // Close file 140 fclose($fileHandle); 141 142 PHPExcel_Calculation::setArrayReturnType($saveArrayReturnType); 143 PHPExcel_Calculation::getInstance($this->_phpExcel)->getDebugLog()->setWriteDebugLog($saveDebugLog); 144 } 145 146 /** 147 * Get delimiter 148 * 149 * @return string 150 */ 151 public function getDelimiter() { 152 return $this->_delimiter; 153 } 154 155 /** 156 * Set delimiter 157 * 158 * @param string $pValue Delimiter, defaults to , 159 * @return PHPExcel_Writer_CSV 160 */ 161 public function setDelimiter($pValue = ',') { 162 $this->_delimiter = $pValue; 163 return $this; 164 } 165 166 /** 167 * Get enclosure 168 * 169 * @return string 170 */ 171 public function getEnclosure() { 172 return $this->_enclosure; 173 } 174 175 /** 176 * Set enclosure 177 * 178 * @param string $pValue Enclosure, defaults to " 179 * @return PHPExcel_Writer_CSV 180 */ 181 public function setEnclosure($pValue = '"') { 182 if ($pValue == '') { 183 $pValue = null; 184 } 185 $this->_enclosure = $pValue; 186 return $this; 187 } 188 189 /** 190 * Get line ending 191 * 192 * @return string 193 */ 194 public function getLineEnding() { 195 return $this->_lineEnding; 196 } 197 198 /** 199 * Set line ending 200 * 201 * @param string $pValue Line ending, defaults to OS line ending (PHP_EOL) 202 * @return PHPExcel_Writer_CSV 203 */ 204 public function setLineEnding($pValue = PHP_EOL) { 205 $this->_lineEnding = $pValue; 206 return $this; 207 } 208 209 /** 210 * Get whether BOM should be used 211 * 212 * @return boolean 213 */ 214 public function getUseBOM() { 215 return $this->_useBOM; 216 } 217 218 /** 219 * Set whether BOM should be used 220 * 221 * @param boolean $pValue Use UTF-8 byte-order mark? Defaults to false 222 * @return PHPExcel_Writer_CSV 223 */ 224 public function setUseBOM($pValue = false) { 225 $this->_useBOM = $pValue; 226 return $this; 227 } 228 229 /** 230 * Get whether the file should be saved with full Excel Compatibility 231 * 232 * @return boolean 233 */ 234 public function getExcelCompatibility() { 235 return $this->_excelCompatibility; 236 } 237 238 /** 239 * Set whether the file should be saved with full Excel Compatibility 240 * 241 * @param boolean $pValue Set the file to be written as a fully Excel compatible csv file 242 * Note that this overrides other settings such as useBOM, enclosure and delimiter 243 * @return PHPExcel_Writer_CSV 244 */ 245 public function setExcelCompatibility($pValue = false) { 246 $this->_excelCompatibility = $pValue; 247 return $this; 248 } 249 250 /** 251 * Get sheet index 252 * 253 * @return int 254 */ 255 public function getSheetIndex() { 256 return $this->_sheetIndex; 257 } 258 259 /** 260 * Set sheet index 261 * 262 * @param int $pValue Sheet index 263 * @return PHPExcel_Writer_CSV 264 */ 265 public function setSheetIndex($pValue = 0) { 266 $this->_sheetIndex = $pValue; 267 return $this; 268 } 269 270 /** 271 * Write line to CSV file 272 * 273 * @param mixed $pFileHandle PHP filehandle 274 * @param array $pValues Array containing values in a row 275 * @throws PHPExcel_Writer_Exception 276 */ 277 private function _writeLine($pFileHandle = null, $pValues = null) { 278 if (is_array($pValues)) { 279 // No leading delimiter 280 $writeDelimiter = false; 281 282 // Build the line 283 $line = ''; 284 285 foreach ($pValues as $element) { 286 // Escape enclosures 287 $element = str_replace($this->_enclosure, $this->_enclosure . $this->_enclosure, $element); 288 289 // Add delimiter 290 if ($writeDelimiter) { 291 $line .= $this->_delimiter; 292 } else { 293 $writeDelimiter = true; 294 } 295 296 // Add enclosed string 297 $line .= $this->_enclosure . $element . $this->_enclosure; 298 } 299 300 // Add line ending 301 $line .= $this->_lineEnding; 302 303 // Write to file 304 fwrite($pFileHandle, $line); 305 } else { 306 throw new PHPExcel_Writer_Exception("Invalid data row passed to CSV writer."); 307 } 308 } 309 310 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:29:05 2014 | Cross-referenced by PHPXref 0.7.1 |