Viewing file: CSV.php (8.99 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_Reader * @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 root directory */ if (!defined('PHPEXCEL_ROOT')) { /** * @ignore */ define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../'); require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); }
/** * PHPExcel_Reader_CSV * * @category PHPExcel * @package PHPExcel_Reader * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel) */ class PHPExcel_Reader_CSV implements PHPExcel_Reader_IReader { /** * Input encoding * * @access private * @var string */ private $_inputEncoding = 'UTF-8';
/** * Delimiter * * @access private * @var string */ private $_delimiter = ',';
/** * Enclosure * * @access private * @var string */ private $_enclosure = '"';
/** * Line ending * * @access private * @var string */ private $_lineEnding = PHP_EOL;
/** * Sheet index to read * * @access private * @var int */ private $_sheetIndex = 0;
/** * Load rows contiguously * * @access private * @var int */ private $_contiguous = false;
/** * Row counter for loading rows contiguously * * @access private * @var int */ private $_contiguousRow = -1;
/** * PHPExcel_Reader_IReadFilter instance * * @access private * @var PHPExcel_Reader_IReadFilter */ private $_readFilter = null;
/** * Create a new PHPExcel_Reader_CSV */ public function __construct() { $this->_readFilter = new PHPExcel_Reader_DefaultReadFilter(); } // function __construct()
/** * Can the current PHPExcel_Reader_IReader read the file? * * @access public * @param string $pFileName * @return boolean * @throws Exception */ public function canRead($pFilename) { // Check if file exists if (!file_exists($pFilename)) { throw new Exception("Could not open " . $pFilename . " for reading! File does not exist."); }
return true; } // function canRead()
/** * Loads PHPExcel from file * * @access public * @param string $pFilename * @return PHPExcel * @throws Exception */ public function load($pFilename) { // Create new PHPExcel $objPHPExcel = new PHPExcel();
// Load into this instance return $this->loadIntoExisting($pFilename, $objPHPExcel); } // function load()
/** * Read filter * * @access public * @return PHPExcel_Reader_IReadFilter */ public function getReadFilter() { return $this->_readFilter; } // function getReadFilter()
/** * Set read filter * * @access public * @param PHPExcel_Reader_IReadFilter $pValue */ public function setReadFilter(PHPExcel_Reader_IReadFilter $pValue) { $this->_readFilter = $pValue; return $this; } // function setReadFilter()
/** * Set input encoding * * @access public * @param string $pValue Input encoding */ public function setInputEncoding($pValue = 'UTF-8') { $this->_inputEncoding = $pValue; return $this; } // function setInputEncoding()
/** * Get input encoding * * @access public * @return string */ public function getInputEncoding() { return $this->_inputEncoding; } // function getInputEncoding()
/** * Loads PHPExcel from file into PHPExcel instance * * @access public * @param string $pFilename * @param PHPExcel $objPHPExcel * @return PHPExcel * @throws Exception */ public function loadIntoExisting($pFilename, PHPExcel $objPHPExcel) { // Check if file exists if (!file_exists($pFilename)) { throw new Exception("Could not open " . $pFilename . " for reading! File does not exist."); }
// Create new PHPExcel while ($objPHPExcel->getSheetCount() <= $this->_sheetIndex) { $objPHPExcel->createSheet(); } $objPHPExcel->setActiveSheetIndex( $this->_sheetIndex );
// Open file $fileHandle = fopen($pFilename, 'r'); if ($fileHandle === false) { throw new Exception("Could not open file $pFilename for reading."); }
// Skip BOM, if any switch ($this->_inputEncoding) { case 'UTF-8': fgets($fileHandle, 4) == "\xEF\xBB\xBF" ? fseek($fileHandle, 3) : fseek($fileHandle, 0); break; case 'UTF-16LE': fgets($fileHandle, 3) == "\xFF\xFE" ? fseek($fileHandle, 2) : fseek($fileHandle, 0); break; case 'UTF-16BE': fgets($fileHandle, 3) == "\xFE\xFF" ? fseek($fileHandle, 2) : fseek($fileHandle, 0); break; case 'UTF-32LE': fgets($fileHandle, 5) == "\xFF\xFE\x00\x00" ? fseek($fileHandle, 4) : fseek($fileHandle, 0); break; case 'UTF-32BE': fgets($fileHandle, 5) == "\x00\x00\xFE\xFF" ? fseek($fileHandle, 4) : fseek($fileHandle, 0); break; default: break; }
$escapeEnclosures = array( "\\" . $this->_enclosure, $this->_enclosure . $this->_enclosure );
// Set our starting row based on whether we're in contiguous mode or not $currentRow = 1; if ($this->_contiguous) { $currentRow = ($this->_contiguousRow == -1) ? $objPHPExcel->getActiveSheet()->getHighestRow(): $this->_contiguousRow; }
// Loop through each line of the file in turn while (($rowData = fgetcsv($fileHandle, 0, $this->_delimiter, $this->_enclosure)) !== FALSE) { $columnLetter = 'A'; foreach($rowData as $rowDatum) { if ($rowDatum != '' && $this->_readFilter->readCell($columnLetter, $currentRow)) { // Unescape enclosures $rowDatum = str_replace($escapeEnclosures, $this->_enclosure, $rowDatum);
// Convert encoding if necessary if ($this->_inputEncoding !== 'UTF-8') { $rowDatum = PHPExcel_Shared_String::ConvertEncoding($rowDatum, 'UTF-8', $this->_inputEncoding); }
// Set cell value $objPHPExcel->getActiveSheet()->getCell($columnLetter . $currentRow)->setValue($rowDatum); } ++$columnLetter; } ++$currentRow; }
// Close file fclose($fileHandle);
if ($this->_contiguous) { $this->_contiguousRow = $currentRow; }
// Return return $objPHPExcel; } // function loadIntoExisting()
/** * Get delimiter * * @access public * @return string */ public function getDelimiter() { return $this->_delimiter; } // function getDelimiter()
/** * Set delimiter * * @access public * @param string $pValue Delimiter, defaults to , * @return PHPExcel_Reader_CSV */ public function setDelimiter($pValue = ',') { $this->_delimiter = $pValue; return $this; } // function setDelimiter()
/** * Get enclosure * * @access public * @return string */ public function getEnclosure() { return $this->_enclosure; } // function getEnclosure()
/** * Set enclosure * * @access public * @param string $pValue Enclosure, defaults to " * @return PHPExcel_Reader_CSV */ public function setEnclosure($pValue = '"') { if ($pValue == '') { $pValue = '"'; } $this->_enclosure = $pValue; return $this; } // function setEnclosure()
/** * Get line ending * * @access public * @return string */ public function getLineEnding() { return $this->_lineEnding; } // function getLineEnding()
/** * Set line ending * * @access public * @param string $pValue Line ending, defaults to OS line ending (PHP_EOL) * @return PHPExcel_Reader_CSV */ public function setLineEnding($pValue = PHP_EOL) { $this->_lineEnding = $pValue; return $this; } // function setLineEnding()
/** * Get sheet index * * @access public * @return int */ public function getSheetIndex() { return $this->_sheetIndex; } // function getSheetIndex()
/** * Set sheet index * * @access public * @param int $pValue Sheet index * @return PHPExcel_Reader_CSV */ public function setSheetIndex($pValue = 0) { $this->_sheetIndex = $pValue; return $this; } // function setSheetIndex()
/** * Set Contiguous * * @access public * @param string $pValue Input encoding */ public function setContiguous($contiguous = false) { $this->_contiguous = (bool)$contiguous; if (!$contiguous) { $this->_contiguousRow = -1; }
return $this; } // function setInputEncoding()
/** * Get Contiguous * * @access public * @return boolean */ public function getContiguous() { return $this->_contiguous; } // function getSheetIndex()
}
|