PageRenderTime 21ms CodeModel.GetById 13ms app.highlight 4ms RepoModel.GetById 1ms app.codeStats 0ms

/PHPExcel/Worksheet/CellIterator.php

https://bitbucket.org/nfredricks/wp-employee-time
PHP | 161 lines | 43 code | 16 blank | 102 comment | 2 complexity | 93d0a813e3a5d927f22c634bbd5ab741 MD5 | raw file
  1<?php
  2/**
  3 * PHPExcel
  4 *
  5 * Copyright (c) 2006 - 2012 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 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
 24 * @license    http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt	LGPL
 25 * @version    1.7.8, 2012-10-12
 26 */
 27
 28
 29/**
 30 * PHPExcel_Worksheet_CellIterator
 31 *
 32 * Used to iterate rows in a PHPExcel_Worksheet
 33 *
 34 * @category   PHPExcel
 35 * @package    PHPExcel_Worksheet
 36 * @copyright  Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
 37 */
 38class PHPExcel_Worksheet_CellIterator implements Iterator
 39{
 40	/**
 41	 * PHPExcel_Worksheet to iterate
 42	 *
 43	 * @var PHPExcel_Worksheet
 44	 */
 45	private $_subject;
 46
 47	/**
 48	 * Row index
 49	 *
 50	 * @var int
 51	 */
 52	private $_rowIndex;
 53
 54	/**
 55	 * Current iterator position
 56	 *
 57	 * @var int
 58	 */
 59	private $_position = 0;
 60
 61	/**
 62	 * Loop only existing cells
 63	 *
 64	 * @var boolean
 65	 */
 66	private $_onlyExistingCells = true;
 67
 68	/**
 69	 * Create a new cell iterator
 70	 *
 71	 * @param PHPExcel_Worksheet 		$subject
 72	 * @param int						$rowIndex
 73	 */
 74	public function __construct(PHPExcel_Worksheet $subject = null, $rowIndex = 1) {
 75		// Set subject and row index
 76		$this->_subject 	= $subject;
 77		$this->_rowIndex 	= $rowIndex;
 78	}
 79
 80	/**
 81	 * Destructor
 82	 */
 83	public function __destruct() {
 84		unset($this->_subject);
 85	}
 86
 87	/**
 88	 * Rewind iterator
 89	 */
 90    public function rewind() {
 91        $this->_position = 0;
 92    }
 93
 94    /**
 95     * Current PHPExcel_Cell
 96     *
 97     * @return PHPExcel_Cell
 98     */
 99    public function current() {
100		return $this->_subject->getCellByColumnAndRow($this->_position, $this->_rowIndex);
101    }
102
103    /**
104     * Current key
105     *
106     * @return int
107     */
108    public function key() {
109        return $this->_position;
110    }
111
112    /**
113     * Next value
114     */
115    public function next() {
116        ++$this->_position;
117    }
118
119    /**
120     * Are there any more PHPExcel_Cell instances available?
121     *
122     * @return boolean
123     */
124    public function valid() {
125        // columnIndexFromString() returns an index based at one,
126        // treat it as a count when comparing it to the base zero
127        // position.
128        $columnCount = PHPExcel_Cell::columnIndexFromString($this->_subject->getHighestColumn());
129
130        if ($this->_onlyExistingCells) {
131            // If we aren't looking at an existing cell, either
132            // because the first column doesn't exist or next() has
133            // been called onto a nonexistent cell, then loop until we
134            // find one, or pass the last column.
135            while ($this->_position < $columnCount &&
136                   !$this->_subject->cellExistsByColumnAndRow($this->_position, $this->_rowIndex)) {
137                ++$this->_position;
138            }
139        }
140
141        return $this->_position < $columnCount;
142    }
143
144	/**
145	 * Get loop only existing cells
146	 *
147	 * @return boolean
148	 */
149    public function getIterateOnlyExistingCells() {
150    	return $this->_onlyExistingCells;
151    }
152
153	/**
154	 * Set the iterator to loop only existing cells
155	 *
156	 * @param	boolean		$value
157	 */
158    public function setIterateOnlyExistingCells($value = true) {
159    	$this->_onlyExistingCells = $value;
160    }
161}