source: sourcecode/application/libraries/PHPExcel/NamedRange.php @ 1

Last change on this file since 1 was 1, checked in by dungnv, 11 years ago
File size: 5.7 KB
Line 
1<?php
2/**
3 * PHPExcel
4 *
5 * Copyright (c) 2006 - 2014 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
23 * @copyright  Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
24 * @license    http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt    LGPL
25 * @version    1.8.0, 2014-03-02
26 */
27
28
29/**
30 * PHPExcel_NamedRange
31 *
32 * @category   PHPExcel
33 * @package    PHPExcel
34 * @copyright  Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
35 */
36class PHPExcel_NamedRange
37{
38        /**
39         * Range name
40         *
41         * @var string
42         */
43        private $_name;
44
45        /**
46         * Worksheet on which the named range can be resolved
47         *
48         * @var PHPExcel_Worksheet
49         */
50        private $_worksheet;
51
52        /**
53         * Range of the referenced cells
54         *
55         * @var string
56         */
57        private $_range;
58
59        /**
60         * Is the named range local? (i.e. can only be used on $this->_worksheet)
61         *
62         * @var bool
63         */
64        private $_localOnly;
65
66        /**
67         * Scope
68         *
69         * @var PHPExcel_Worksheet
70         */
71        private $_scope;
72
73    /**
74     * Create a new NamedRange
75     *
76     * @param string $pName
77     * @param PHPExcel_Worksheet $pWorksheet
78     * @param string $pRange
79     * @param bool $pLocalOnly
80     * @param PHPExcel_Worksheet|null $pScope   Scope. Only applies when $pLocalOnly = true. Null for global scope.
81     * @throws PHPExcel_Exception
82     */
83    public function __construct($pName = null, PHPExcel_Worksheet $pWorksheet, $pRange = 'A1', $pLocalOnly = false, $pScope = null)
84    {
85        // Validate data
86        if (($pName === NULL) || ($pWorksheet === NULL) || ($pRange === NULL)) {
87                throw new PHPExcel_Exception('Parameters can not be null.');
88        }
89
90        // Set local members
91        $this->_name            = $pName;
92        $this->_worksheet       = $pWorksheet;
93        $this->_range           = $pRange;
94        $this->_localOnly       = $pLocalOnly;
95        $this->_scope           = ($pLocalOnly == true) ?
96                                                                (($pScope == null) ? $pWorksheet : $pScope) : null;
97    }
98
99    /**
100     * Get name
101     *
102     * @return string
103     */
104    public function getName() {
105        return $this->_name;
106    }
107
108    /**
109     * Set name
110     *
111     * @param string $value
112     * @return PHPExcel_NamedRange
113     */
114    public function setName($value = null) {
115        if ($value !== NULL) {
116                // Old title
117                $oldTitle = $this->_name;
118
119                // Re-attach
120                if ($this->_worksheet !== NULL) {
121                        $this->_worksheet->getParent()->removeNamedRange($this->_name,$this->_worksheet);
122                }
123                $this->_name = $value;
124
125                if ($this->_worksheet !== NULL) {
126                        $this->_worksheet->getParent()->addNamedRange($this);
127                }
128
129                // New title
130                $newTitle = $this->_name;
131                PHPExcel_ReferenceHelper::getInstance()->updateNamedFormulas($this->_worksheet->getParent(), $oldTitle, $newTitle);
132        }
133        return $this;
134    }
135
136    /**
137     * Get worksheet
138     *
139     * @return PHPExcel_Worksheet
140     */
141    public function getWorksheet() {
142        return $this->_worksheet;
143    }
144
145    /**
146     * Set worksheet
147     *
148     * @param PHPExcel_Worksheet $value
149     * @return PHPExcel_NamedRange
150     */
151    public function setWorksheet(PHPExcel_Worksheet $value = null) {
152        if ($value !== NULL) {
153                $this->_worksheet = $value;
154        }
155        return $this;
156    }
157
158    /**
159     * Get range
160     *
161     * @return string
162     */
163    public function getRange() {
164        return $this->_range;
165    }
166
167    /**
168     * Set range
169     *
170     * @param string $value
171     * @return PHPExcel_NamedRange
172     */
173    public function setRange($value = null) {
174        if ($value !== NULL) {
175                $this->_range = $value;
176        }
177        return $this;
178    }
179
180    /**
181     * Get localOnly
182     *
183     * @return bool
184     */
185    public function getLocalOnly() {
186        return $this->_localOnly;
187    }
188
189    /**
190     * Set localOnly
191     *
192     * @param bool $value
193     * @return PHPExcel_NamedRange
194     */
195    public function setLocalOnly($value = false) {
196        $this->_localOnly = $value;
197        $this->_scope = $value ? $this->_worksheet : null;
198        return $this;
199    }
200
201    /**
202     * Get scope
203     *
204     * @return PHPExcel_Worksheet|null
205     */
206    public function getScope() {
207        return $this->_scope;
208    }
209
210    /**
211     * Set scope
212     *
213     * @param PHPExcel_Worksheet|null $value
214     * @return PHPExcel_NamedRange
215     */
216    public function setScope(PHPExcel_Worksheet $value = null) {
217        $this->_scope = $value;
218        $this->_localOnly = ($value == null) ? false : true;
219        return $this;
220    }
221
222    /**
223     * Resolve a named range to a regular cell range
224     *
225     * @param string $pNamedRange Named range
226     * @param PHPExcel_Worksheet|null $pSheet Scope. Use null for global scope
227     * @return PHPExcel_NamedRange
228     */
229    public static function resolveRange($pNamedRange = '', PHPExcel_Worksheet $pSheet) {
230                return $pSheet->getParent()->getNamedRange($pNamedRange, $pSheet);
231    }
232
233        /**
234         * Implement PHP __clone to create a deep clone, not just a shallow copy.
235         */
236        public function __clone() {
237                $vars = get_object_vars($this);
238                foreach ($vars as $key => $value) {
239                        if (is_object($value)) {
240                                $this->$key = clone $value;
241                        } else {
242                                $this->$key = $value;
243                        }
244                }
245        }
246}
Note: See TracBrowser for help on using the repository browser.