PHPExcel_Worksheet
[ class tree: PHPExcel_Worksheet ] [ index: PHPExcel_Worksheet ] [ all elements ]

Source for file CellIterator.php

Documentation is available at CellIterator.php

  1. <?php
  2. /**
  3.  * PHPExcel
  4.  *
  5.  * Copyright (c) 2006 - 2009 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_Worksheet
  23.  * @copyright  Copyright (c) 2006 - 2009 PHPExcel (http://www.codeplex.com/PHPExcel)
  24.  * @license    http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt    LGPL
  25.  * @version    1.7.0, 2009-08-10
  26.  */
  27.  
  28.  
  29. /** PHPExcel root directory */
  30. if (!defined('PHPEXCEL_ROOT')) {
  31.     /**
  32.      * @ignore
  33.      */
  34.     define('PHPEXCEL_ROOT'dirname(__FILE__'/../../');
  35. }
  36.  
  37. /** PHPExcel */
  38. require_once PHPEXCEL_ROOT 'PHPExcel.php';
  39.  
  40. /** PHPExcel_Worksheet */
  41. require_once PHPEXCEL_ROOT 'PHPExcel/Worksheet.php';
  42.  
  43. /** PHPExcel_Cell */
  44. require_once PHPEXCEL_ROOT 'PHPExcel/Cell.php';
  45.  
  46.  
  47. /**
  48.  * PHPExcel_Worksheet_CellIterator
  49.  * 
  50.  * Used to iterate rows in a PHPExcel_Worksheet
  51.  *
  52.  * @category   PHPExcel
  53.  * @package    PHPExcel_Worksheet
  54.  * @copyright  Copyright (c) 2006 - 2009 PHPExcel (http://www.codeplex.com/PHPExcel)
  55.  */
  56. class PHPExcel_Worksheet_CellIterator extends IteratorIterator
  57. {
  58.     /**
  59.      * PHPExcel_Worksheet to iterate
  60.      *
  61.      * @var PHPExcel_Worksheet 
  62.      */
  63.     private $_subject;
  64.     
  65.     /**
  66.      * Row index
  67.      *
  68.      * @var int 
  69.      */
  70.     private $_rowIndex;
  71.     
  72.     /**
  73.      * Current iterator position
  74.      *
  75.      * @var int 
  76.      */
  77.     private $_position = 0;
  78.     
  79.     /**
  80.      * Loop only existing cells
  81.      *
  82.      * @var boolean 
  83.      */
  84.     private $_onlyExistingCells = true;
  85.  
  86.     /**
  87.      * Create a new cell iterator
  88.      *
  89.      * @param PHPExcel_Worksheet         $subject 
  90.      * @param int                        $rowIndex 
  91.      */
  92.     public function __construct(PHPExcel_Worksheet $subject null$rowIndex 1{
  93.         // Set subject and row index
  94.         $this->_subject     = $subject;
  95.         $this->_rowIndex     = $rowIndex;
  96.     }
  97.     
  98.     /**
  99.      * Destructor
  100.      */
  101.     public function __destruct({
  102.         unset($this->_subject);
  103.     }
  104.     
  105.     /**
  106.      * Rewind iterator
  107.      */
  108.     public function rewind({
  109.         $this->_position = 0;
  110.     }
  111.  
  112.     /**
  113.      * Current PHPExcel_Cell
  114.      *
  115.      * @return PHPExcel_Cell 
  116.      */
  117.     public function current({
  118.         $cellExists $this->_subject->cellExistsByColumnAndRow($this->_position$this->_rowIndex);
  119.         if ( ($this->_onlyExistingCells && $cellExists|| (!$this->_onlyExistingCells) ) {
  120.             return $this->_subject->getCellByColumnAndRow($this->_position$this->_rowIndex);
  121.         else if ($this->_onlyExistingCells && !$cellExists{
  122.             // Loop untill we find one
  123.             while ($this->valid()) {
  124.                 $this->next();
  125.                 if ($this->_subject->cellExistsByColumnAndRow($this->_position$this->_rowIndex)) {
  126.                     return $this->_subject->getCellByColumnAndRow($this->_position$this->_rowIndex);
  127.                 }
  128.             }
  129.         }
  130.         
  131.         return null;
  132.     }
  133.  
  134.     /**
  135.      * Current key
  136.      *
  137.      * @return int 
  138.      */
  139.     public function key({
  140.         return $this->_position;
  141.     }
  142.  
  143.     /**
  144.      * Next value
  145.      */
  146.     public function next({
  147.         ++$this->_position;
  148.     }
  149.  
  150.     /**
  151.      * More PHPExcel_Cell instances available?
  152.      *
  153.      * @return boolean 
  154.      */
  155.     public function valid({
  156.         return $this->_position < PHPExcel_Cell::columnIndexFromString$this->_subject->getHighestColumn() );
  157.     }
  158.     
  159.     /**
  160.      * Get loop only existing cells
  161.      *
  162.      * @return boolean 
  163.      */
  164.     public function getIterateOnlyExistingCells({
  165.         return $this->_onlyExistingCells;
  166.     }
  167.     
  168.     /**
  169.      * Set loop only existing cells
  170.      *
  171.      * @return boolean 
  172.      */
  173.     public function setIterateOnlyExistingCells($value true{
  174.         $this->_onlyExistingCells = $value;
  175.     }
  176. }

Documentation generated on Mon, 10 Aug 2009 08:02:38 +0200 by phpDocumentor 1.4.1