You are here

class PHPExcel_Writer_CSV in Loft Data Grids 6.2

Same name and namespace in other branches
  1. 7.2 vendor/phpoffice/phpexcel/Classes/PHPExcel/Writer/CSV.php \PHPExcel_Writer_CSV

PHPExcel_Writer_CSV

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

Hierarchy

Expanded class hierarchy of PHPExcel_Writer_CSV

File

vendor/phpoffice/phpexcel/Classes/PHPExcel/Writer/CSV.php, line 36

View source
class PHPExcel_Writer_CSV extends PHPExcel_Writer_Abstract 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;

  /**
   * Whether to write a BOM (for UTF8).
   *
   * @var boolean
   */
  private $_useBOM = false;

  /**
   * Whether to write a fully Excel compatible CSV file.
   *
   * @var boolean
   */
  private $_excelCompatibility = 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	PHPExcel_Writer_Exception
   */
  public function save($pFilename = null) {

    // Fetch sheet
    $sheet = $this->_phpExcel
      ->getSheet($this->_sheetIndex);
    $saveDebugLog = PHPExcel_Calculation::getInstance($this->_phpExcel)
      ->getDebugLog()
      ->getWriteDebugLog();
    PHPExcel_Calculation::getInstance($this->_phpExcel)
      ->getDebugLog()
      ->setWriteDebugLog(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 PHPExcel_Writer_Exception("Could not open file {$pFilename} for writing.");
    }
    if ($this->_excelCompatibility) {
      fwrite($fileHandle, "");

      //	Enforce UTF-8 BOM Header
      $this
        ->setEnclosure('"');

      //	Set enclosure to "
      $this
        ->setDelimiter(";");

      //	Set delimiter to a semi-colon
      $this
        ->setLineEnding("\r\n");
      fwrite($fileHandle, 'sep=' . $this
        ->getDelimiter() . $this->_lineEnding);
    }
    elseif ($this->_useBOM) {

      // Write the UTF-8 BOM code if required
      fwrite($fileHandle, "");
    }

    //	Identify the range that we need to extract from the worksheet
    $maxCol = $sheet
      ->getHighestDataColumn();
    $maxRow = $sheet
      ->getHighestDataRow();

    // Write rows to file
    for ($row = 1; $row <= $maxRow; ++$row) {

      // Convert the row to an array...
      $cellsArray = $sheet
        ->rangeToArray('A' . $row . ':' . $maxCol . $row, '', $this->_preCalculateFormulas);

      // ... and write to the file
      $this
        ->_writeLine($fileHandle, $cellsArray[0]);
    }

    // Close file
    fclose($fileHandle);
    PHPExcel_Calculation::setArrayReturnType($saveArrayReturnType);
    PHPExcel_Calculation::getInstance($this->_phpExcel)
      ->getDebugLog()
      ->setWriteDebugLog($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 whether the file should be saved with full Excel Compatibility
   *
   * @return boolean
   */
  public function getExcelCompatibility() {
    return $this->_excelCompatibility;
  }

  /**
   * Set whether the file should be saved with full Excel Compatibility
   *
   * @param	boolean	$pValue		Set the file to be written as a fully Excel compatible csv file
   *								Note that this overrides other settings such as useBOM, enclosure and delimiter
   * @return PHPExcel_Writer_CSV
   */
  public function setExcelCompatibility($pValue = false) {
    $this->_excelCompatibility = $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	PHPExcel_Writer_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 PHPExcel_Writer_Exception("Invalid data row passed to CSV writer.");
    }
  }

}

Members

Namesort descending Modifiers Type Description Overrides
PHPExcel_Writer_Abstract::$_diskCachingDirectory protected property * Disk caching directory * *
PHPExcel_Writer_Abstract::$_includeCharts protected property * Write charts that are defined in the workbook? * Identifies whether the Writer should write definitions for any charts that exist in the PHPExcel object; * *
PHPExcel_Writer_Abstract::$_preCalculateFormulas protected property * Pre-calculate formulas * Forces PHPExcel to recalculate all formulae in a workbook when saving, so that the pre-calculated values are * immediately available to MS Excel or other office spreadsheet viewer when opening the file * * 1
PHPExcel_Writer_Abstract::$_useDiskCaching protected property * Use disk caching where possible? * *
PHPExcel_Writer_Abstract::getDiskCachingDirectory public function * Get disk caching directory * *
PHPExcel_Writer_Abstract::getIncludeCharts public function * Write charts in workbook? * If this is true, then the Writer will write definitions for any charts that exist in the PHPExcel object. * If false (the default) it will ignore any charts defined in the PHPExcel object. * *
PHPExcel_Writer_Abstract::getPreCalculateFormulas public function Get Pre-Calculate Formulas flag * If this is true (the default), then the writer will recalculate all formulae in a workbook when saving, * so that the pre-calculated values are immediately available to MS Excel or other office…
PHPExcel_Writer_Abstract::getUseDiskCaching public function * Get use disk caching where possible? * *
PHPExcel_Writer_Abstract::setIncludeCharts public function * Set write charts in workbook * Set to true, to advise the Writer to include any charts that exist in the PHPExcel object. * Set to false (the default) to ignore charts. * *
PHPExcel_Writer_Abstract::setPreCalculateFormulas public function Set Pre-Calculate Formulas * Set to true (the default) to advise the Writer to calculate all formulae on save * Set to false to prevent precalculation of formulae on save.
PHPExcel_Writer_Abstract::setUseDiskCaching public function * Set use disk caching where possible? * *
PHPExcel_Writer_CSV::$_delimiter private property * Delimiter * *
PHPExcel_Writer_CSV::$_enclosure private property * Enclosure * *
PHPExcel_Writer_CSV::$_excelCompatibility private property * Whether to write a fully Excel compatible CSV file. * *
PHPExcel_Writer_CSV::$_lineEnding private property * Line ending * *
PHPExcel_Writer_CSV::$_phpExcel private property * PHPExcel object * *
PHPExcel_Writer_CSV::$_sheetIndex private property * Sheet index to write * *
PHPExcel_Writer_CSV::$_useBOM private property * Whether to write a BOM (for UTF8). * *
PHPExcel_Writer_CSV::getDelimiter public function * Get delimiter * *
PHPExcel_Writer_CSV::getEnclosure public function * Get enclosure * *
PHPExcel_Writer_CSV::getExcelCompatibility public function * Get whether the file should be saved with full Excel Compatibility * *
PHPExcel_Writer_CSV::getLineEnding public function * Get line ending * *
PHPExcel_Writer_CSV::getSheetIndex public function * Get sheet index * *
PHPExcel_Writer_CSV::getUseBOM public function * Get whether BOM should be used * *
PHPExcel_Writer_CSV::save public function * Save PHPExcel to file * * Overrides PHPExcel_Writer_IWriter::save
PHPExcel_Writer_CSV::setDelimiter public function * Set delimiter * *
PHPExcel_Writer_CSV::setEnclosure public function * Set enclosure * *
PHPExcel_Writer_CSV::setExcelCompatibility public function * Set whether the file should be saved with full Excel Compatibility * *
PHPExcel_Writer_CSV::setLineEnding public function * Set line ending * *
PHPExcel_Writer_CSV::setSheetIndex public function * Set sheet index * *
PHPExcel_Writer_CSV::setUseBOM public function * Set whether BOM should be used * *
PHPExcel_Writer_CSV::_writeLine private function * Write line to CSV file * *
PHPExcel_Writer_CSV::__construct public function * Create a new PHPExcel_Writer_CSV * *