~ubuntu-branches/ubuntu/lucid/phpmyadmin/lucid

« back to all changes in this revision

Viewing changes to libraries/PHPExcel/PHPExcel/Worksheet/CellIterator.php

  • Committer: Bazaar Package Importer
  • Author(s): Michal Čihař
  • Date: 2010-03-08 15:25:00 UTC
  • mfrom: (1.2.8 upstream)
  • Revision ID: james.westby@ubuntu.com-20100308152500-6e8hmuqc5co39de5
Tags: 4:3.3.0-1
* New upstream version.
* Rediff debian/patches.
* Fix permissions on mediawiki export extension.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
}