Viewing file: CSV.php (6.15 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php /** * PHPExcel * * Copyright (c) 2006 - 2011 PHPExcel * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * @category PHPExcel * @package PHPExcel_Writer * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel) * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @version 1.7.6, 2011-02-27 */
/** * PHPExcel_Writer_CSV * * @category PHPExcel * @package PHPExcel_Writer * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel) */ class PHPExcel_Writer_CSV implements PHPExcel_Writer_IWriter { /** * PHPExcel object * * @var PHPExcel */ private $_phpExcel;
/** * Delimiter * * @var string */ private $_delimiter = ',';
/** * Enclosure * * @var string */ private $_enclosure = '"';
/** * Line ending * * @var string */ private $_lineEnding = PHP_EOL;
/** * Sheet index to write * * @var int */ private $_sheetIndex = 0;
/** * Pre-calculate formulas * * @var boolean */ private $_preCalculateFormulas = true;
/** * Whether to write a BOM (for UTF8). * * @var boolean */ private $_useBOM = false;
/** * Create a new PHPExcel_Writer_CSV * * @param PHPExcel $phpExcel PHPExcel object */ public function __construct(PHPExcel $phpExcel) { $this->_phpExcel = $phpExcel; }
/** * Save PHPExcel to file * * @param string $pFileName * @throws Exception */ public function save($pFilename = null) { // Fetch sheet $sheet = $this->_phpExcel->getSheet($this->_sheetIndex);
$saveDebugLog = PHPExcel_Calculation::getInstance()->writeDebugLog; PHPExcel_Calculation::getInstance()->writeDebugLog = false; $saveArrayReturnType = PHPExcel_Calculation::getArrayReturnType(); PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE);
// Open file $fileHandle = fopen($pFilename, 'wb+'); if ($fileHandle === false) { throw new Exception("Could not open file $pFilename for writing."); }
if ($this->_useBOM) { // Write the UTF-8 BOM code fwrite($fileHandle, "\xEF\xBB\xBF"); }
// Convert sheet to array $cellsArray = $sheet->toArray('', $this->_preCalculateFormulas);
// Write rows to file foreach ($cellsArray as $row) { $this->_writeLine($fileHandle, $row); }
// Close file fclose($fileHandle);
PHPExcel_Calculation::setArrayReturnType($saveArrayReturnType); PHPExcel_Calculation::getInstance()->writeDebugLog = $saveDebugLog; }
/** * Get delimiter * * @return string */ public function getDelimiter() { return $this->_delimiter; }
/** * Set delimiter * * @param string $pValue Delimiter, defaults to , * @return PHPExcel_Writer_CSV */ public function setDelimiter($pValue = ',') { $this->_delimiter = $pValue; return $this; }
/** * Get enclosure * * @return string */ public function getEnclosure() { return $this->_enclosure; }
/** * Set enclosure * * @param string $pValue Enclosure, defaults to " * @return PHPExcel_Writer_CSV */ public function setEnclosure($pValue = '"') { if ($pValue == '') { $pValue = null; } $this->_enclosure = $pValue; return $this; }
/** * Get line ending * * @return string */ public function getLineEnding() { return $this->_lineEnding; }
/** * Set line ending * * @param string $pValue Line ending, defaults to OS line ending (PHP_EOL) * @return PHPExcel_Writer_CSV */ public function setLineEnding($pValue = PHP_EOL) { $this->_lineEnding = $pValue; return $this; }
/** * Get whether BOM should be used * * @return boolean */ public function getUseBOM() { return $this->_useBOM; }
/** * Set whether BOM should be used * * @param boolean $pValue Use UTF-8 byte-order mark? Defaults to false * @return PHPExcel_Writer_CSV */ public function setUseBOM($pValue = false) { $this->_useBOM = $pValue; return $this; }
/** * Get sheet index * * @return int */ public function getSheetIndex() { return $this->_sheetIndex; }
/** * Set sheet index * * @param int $pValue Sheet index * @return PHPExcel_Writer_CSV */ public function setSheetIndex($pValue = 0) { $this->_sheetIndex = $pValue; return $this; }
/** * Write line to CSV file * * @param mixed $pFileHandle PHP filehandle * @param array $pValues Array containing values in a row * @throws Exception */ private function _writeLine($pFileHandle = null, $pValues = null) { if (is_array($pValues)) { // No leading delimiter $writeDelimiter = false;
// Build the line $line = '';
foreach ($pValues as $element) { // Escape enclosures $element = str_replace($this->_enclosure, $this->_enclosure . $this->_enclosure, $element);
// Add delimiter if ($writeDelimiter) { $line .= $this->_delimiter; } else { $writeDelimiter = true; }
// Add enclosed string $line .= $this->_enclosure . $element . $this->_enclosure; }
// Add line ending $line .= $this->_lineEnding;
// Write to file fwrite($pFileHandle, $line); } else { throw new Exception("Invalid parameters passed."); } }
/** * Get Pre-Calculate Formulas * * @return boolean */ public function getPreCalculateFormulas() { return $this->_preCalculateFormulas; }
/** * Set Pre-Calculate Formulas * * @param boolean $pValue Pre-Calculate Formulas? * @return PHPExcel_Writer_CSV */ public function setPreCalculateFormulas($pValue = true) { $this->_preCalculateFormulas = $pValue; return $this; } }
|