You are here

class PHPExcel_Reader_CSV in Loft Data Grids 7.2

Same name and namespace in other branches
  1. 6.2 vendor/phpoffice/phpexcel/Classes/PHPExcel/Reader/CSV.php \PHPExcel_Reader_CSV

PHPExcel_Reader_CSV

@category PHPExcel @package PHPExcel_Reader @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)

Hierarchy

Expanded class hierarchy of PHPExcel_Reader_CSV

File

vendor/phpoffice/phpexcel/Classes/PHPExcel/Reader/CSV.php, line 45

View source
class PHPExcel_Reader_CSV extends PHPExcel_Reader_Abstract 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 = '"';

  /**
   * 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
   *
   * @var	int
   */
  private $_contiguousRow = -1;

  /**
   * Create a new PHPExcel_Reader_CSV
   */
  public function __construct() {
    $this->_readFilter = new PHPExcel_Reader_DefaultReadFilter();
  }

  /**
   * Validate that the current file is a CSV file
   *
   * @return boolean
   */
  protected function _isValidFormat() {
    return TRUE;
  }

  /**
   * Set input encoding
   *
   * @param string $pValue Input encoding
   */
  public function setInputEncoding($pValue = 'UTF-8') {
    $this->_inputEncoding = $pValue;
    return $this;
  }

  /**
   * Get input encoding
   *
   * @return string
   */
  public function getInputEncoding() {
    return $this->_inputEncoding;
  }

  /**
   * Move filepointer past any BOM marker
   *
   */
  protected function _skipBOM() {
    rewind($this->_fileHandle);
    switch ($this->_inputEncoding) {
      case 'UTF-8':
        fgets($this->_fileHandle, 4) == "" ? fseek($this->_fileHandle, 3) : fseek($this->_fileHandle, 0);
        break;
      case 'UTF-16LE':
        fgets($this->_fileHandle, 3) == "" ? fseek($this->_fileHandle, 2) : fseek($this->_fileHandle, 0);
        break;
      case 'UTF-16BE':
        fgets($this->_fileHandle, 3) == "" ? fseek($this->_fileHandle, 2) : fseek($this->_fileHandle, 0);
        break;
      case 'UTF-32LE':
        fgets($this->_fileHandle, 5) == "" ? fseek($this->_fileHandle, 4) : fseek($this->_fileHandle, 0);
        break;
      case 'UTF-32BE':
        fgets($this->_fileHandle, 5) == "" ? fseek($this->_fileHandle, 4) : fseek($this->_fileHandle, 0);
        break;
      default:
        break;
    }
  }

  /**
   * Return worksheet info (Name, Last Column Letter, Last Column Index, Total Rows, Total Columns)
   *
   * @param 	string 		$pFilename
   * @throws	PHPExcel_Reader_Exception
   */
  public function listWorksheetInfo($pFilename) {

    // Open file
    $this
      ->_openFile($pFilename);
    if (!$this
      ->_isValidFormat()) {
      fclose($this->_fileHandle);
      throw new PHPExcel_Reader_Exception($pFilename . " is an Invalid Spreadsheet file.");
    }
    $fileHandle = $this->_fileHandle;

    // Skip BOM, if any
    $this
      ->_skipBOM();
    $escapeEnclosures = array(
      "\\" . $this->_enclosure,
      $this->_enclosure . $this->_enclosure,
    );
    $worksheetInfo = array();
    $worksheetInfo[0]['worksheetName'] = 'Worksheet';
    $worksheetInfo[0]['lastColumnLetter'] = 'A';
    $worksheetInfo[0]['lastColumnIndex'] = 0;
    $worksheetInfo[0]['totalRows'] = 0;
    $worksheetInfo[0]['totalColumns'] = 0;

    // Loop through each line of the file in turn
    while (($rowData = fgetcsv($fileHandle, 0, $this->_delimiter, $this->_enclosure)) !== FALSE) {
      $worksheetInfo[0]['totalRows']++;
      $worksheetInfo[0]['lastColumnIndex'] = max($worksheetInfo[0]['lastColumnIndex'], count($rowData) - 1);
    }
    $worksheetInfo[0]['lastColumnLetter'] = PHPExcel_Cell::stringFromColumnIndex($worksheetInfo[0]['lastColumnIndex']);
    $worksheetInfo[0]['totalColumns'] = $worksheetInfo[0]['lastColumnIndex'] + 1;

    // Close file
    fclose($fileHandle);
    return $worksheetInfo;
  }

  /**
   * Loads PHPExcel from file
   *
   * @param 	string 		$pFilename
   * @return PHPExcel
   * @throws PHPExcel_Reader_Exception
   */
  public function load($pFilename) {

    // Create new PHPExcel
    $objPHPExcel = new PHPExcel();

    // Load into this instance
    return $this
      ->loadIntoExisting($pFilename, $objPHPExcel);
  }

  /**
   * Loads PHPExcel from file into PHPExcel instance
   *
   * @param 	string 		$pFilename
   * @param	PHPExcel	$objPHPExcel
   * @return 	PHPExcel
   * @throws 	PHPExcel_Reader_Exception
   */
  public function loadIntoExisting($pFilename, PHPExcel $objPHPExcel) {
    $lineEnding = ini_get('auto_detect_line_endings');
    ini_set('auto_detect_line_endings', true);

    // Open file
    $this
      ->_openFile($pFilename);
    if (!$this
      ->_isValidFormat()) {
      fclose($this->_fileHandle);
      throw new PHPExcel_Reader_Exception($pFilename . " is an Invalid Spreadsheet file.");
    }
    $fileHandle = $this->_fileHandle;

    // Skip BOM, if any
    $this
      ->_skipBOM();

    // Create new PHPExcel object
    while ($objPHPExcel
      ->getSheetCount() <= $this->_sheetIndex) {
      $objPHPExcel
        ->createSheet();
    }
    $sheet = $objPHPExcel
      ->setActiveSheetIndex($this->_sheetIndex);
    $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 ? $sheet
        ->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
          $sheet
            ->getCell($columnLetter . $currentRow)
            ->setValue($rowDatum);
        }
        ++$columnLetter;
      }
      ++$currentRow;
    }

    // Close file
    fclose($fileHandle);
    if ($this->_contiguous) {
      $this->_contiguousRow = $currentRow;
    }
    ini_set('auto_detect_line_endings', $lineEnding);

    // Return
    return $objPHPExcel;
  }

  /**
   * Get delimiter
   *
   * @return string
   */
  public function getDelimiter() {
    return $this->_delimiter;
  }

  /**
   * Set delimiter
   *
   * @param	string	$pValue		Delimiter, defaults to ,
   * @return	PHPExcel_Reader_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_Reader_CSV
   */
  public function setEnclosure($pValue = '"') {
    if ($pValue == '') {
      $pValue = '"';
    }
    $this->_enclosure = $pValue;
    return $this;
  }

  /**
   * Get sheet index
   *
   * @return integer
   */
  public function getSheetIndex() {
    return $this->_sheetIndex;
  }

  /**
   * Set sheet index
   *
   * @param	integer		$pValue		Sheet index
   * @return PHPExcel_Reader_CSV
   */
  public function setSheetIndex($pValue = 0) {
    $this->_sheetIndex = $pValue;
    return $this;
  }

  /**
   * Set Contiguous
   *
   * @param boolean $contiguous
   */
  public function setContiguous($contiguous = FALSE) {
    $this->_contiguous = (bool) $contiguous;
    if (!$contiguous) {
      $this->_contiguousRow = -1;
    }
    return $this;
  }

  /**
   * Get Contiguous
   *
   * @return boolean
   */
  public function getContiguous() {
    return $this->_contiguous;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
PHPExcel_Reader_Abstract::$_fileHandle protected property
PHPExcel_Reader_Abstract::$_includeCharts protected property * Read charts that are defined in the workbook? * Identifies whether the Reader should read the definitions for any charts that exist in the workbook; * *
PHPExcel_Reader_Abstract::$_loadSheetsOnly protected property * Restrict which sheets should be loaded? * This property holds an array of worksheet names to be loaded. If null, then all worksheets will be loaded. * *
PHPExcel_Reader_Abstract::$_readDataOnly protected property * Read data only? * Identifies whether the Reader should only read data values for cells, and ignore any formatting information; * or whether it should read both data and formatting * *
PHPExcel_Reader_Abstract::$_readFilter protected property * PHPExcel_Reader_IReadFilter instance * *
PHPExcel_Reader_Abstract::canRead public function * Can the current PHPExcel_Reader_IReader read the file? * * Overrides PHPExcel_Reader_IReader::canRead 5
PHPExcel_Reader_Abstract::getIncludeCharts public function * Read charts in workbook? * If this is true, then the Reader will include any charts that exist in the workbook. * Note that a ReadDataOnly value of false overrides, and charts won't be read regardless of the IncludeCharts value. …
PHPExcel_Reader_Abstract::getLoadSheetsOnly public function * Get which sheets to load * Returns either an array of worksheet names (the list of worksheets that should be loaded), or a null * indicating that all worksheets in the workbook should be loaded. * *
PHPExcel_Reader_Abstract::getReadDataOnly public function * Read data only? * If this is true, then the Reader will only read data values for cells, it will not read any formatting information. * If false (the default) it will read data and formatting. * *
PHPExcel_Reader_Abstract::getReadFilter public function * Read filter * *
PHPExcel_Reader_Abstract::securityScan public function * Scan theXML for use of <!ENTITY to prevent XXE/XEE attacks * * 1
PHPExcel_Reader_Abstract::securityScanFile public function * Scan theXML for use of <!ENTITY to prevent XXE/XEE attacks * *
PHPExcel_Reader_Abstract::setIncludeCharts public function * Set read charts in workbook * Set to true, to advise the Reader to include any charts that exist in the workbook. * Note that a ReadDataOnly value of false overrides, and charts won't be read regardless of the IncludeCharts value. …
PHPExcel_Reader_Abstract::setLoadAllSheets public function * Set all sheets to load * Tells the Reader to load all worksheets from the workbook. * *
PHPExcel_Reader_Abstract::setLoadSheetsOnly public function * Set which sheets to load * *
PHPExcel_Reader_Abstract::setReadDataOnly public function * Set read data only * Set to true, to advise the Reader only to read data values for cells, and to ignore any formatting information. * Set to false (the default) to advise the Reader to read both data and formatting for cells. * *
PHPExcel_Reader_Abstract::setReadFilter public function * Set read filter * *
PHPExcel_Reader_Abstract::_openFile protected function * Open file for reading * *
PHPExcel_Reader_CSV::$_contiguous private property * Load rows contiguously * * @access private *
PHPExcel_Reader_CSV::$_contiguousRow private property * Row counter for loading rows contiguously * *
PHPExcel_Reader_CSV::$_delimiter private property * Delimiter * * @access private *
PHPExcel_Reader_CSV::$_enclosure private property * Enclosure * * @access private *
PHPExcel_Reader_CSV::$_inputEncoding private property * Input encoding * * @access private *
PHPExcel_Reader_CSV::$_sheetIndex private property * Sheet index to read * * @access private *
PHPExcel_Reader_CSV::getContiguous public function * Get Contiguous * *
PHPExcel_Reader_CSV::getDelimiter public function * Get delimiter * *
PHPExcel_Reader_CSV::getEnclosure public function * Get enclosure * *
PHPExcel_Reader_CSV::getInputEncoding public function * Get input encoding * *
PHPExcel_Reader_CSV::getSheetIndex public function * Get sheet index * *
PHPExcel_Reader_CSV::listWorksheetInfo public function * Return worksheet info (Name, Last Column Letter, Last Column Index, Total Rows, Total Columns) * *
PHPExcel_Reader_CSV::load public function * Loads PHPExcel from file * * Overrides PHPExcel_Reader_IReader::load
PHPExcel_Reader_CSV::loadIntoExisting public function * Loads PHPExcel from file into PHPExcel instance * *
PHPExcel_Reader_CSV::setContiguous public function * Set Contiguous * *
PHPExcel_Reader_CSV::setDelimiter public function * Set delimiter * *
PHPExcel_Reader_CSV::setEnclosure public function * Set enclosure * *
PHPExcel_Reader_CSV::setInputEncoding public function * Set input encoding * *
PHPExcel_Reader_CSV::setSheetIndex public function * Set sheet index * *
PHPExcel_Reader_CSV::_isValidFormat protected function * Validate that the current file is a CSV file * *
PHPExcel_Reader_CSV::_skipBOM protected function * Move filepointer past any BOM marker *
PHPExcel_Reader_CSV::__construct public function * Create a new PHPExcel_Reader_CSV