当前路径:Classes/PHPExcel/Worksheet/AutoFilter.php <?php /** * PHPExcel_Worksheet_AutoFilter * * Copyright (c) 2006 - 2015 PHPExcel * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * @category PHPExcel * @package PHPExcel_Worksheet * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @version ##VERSION##, ##DATE## */ class PHPExcel_Worksheet_AutoFilter { /** * Autofilter Worksheet * * @var PHPExcel_Worksheet */ private $workSheet; /** * Autofilter Range * * @var string */ private $range = ''; /** * Autofilter Column Ruleset * * @var array of PHPExcel_Worksheet_AutoFilter_Column */ private $columns = array(); /** * Create a new PHPExcel_Worksheet_AutoFilter * * @param string $pRange Cell range (i.e. A1:E10) * @param PHPExcel_Worksheet $pSheet */ public function __construct($pRange = '', PHPExcel_Worksheet $pSheet = null) { $this->range = $pRange; $this->workSheet = $pSheet; } /** * Get AutoFilter Parent Worksheet * * @return PHPExcel_Worksheet */ public function getParent() { return $this->workSheet; } /** * Set AutoFilter Parent Worksheet * * @param PHPExcel_Worksheet $pSheet * @return PHPExcel_Worksheet_AutoFilter */ public function setParent(PHPExcel_Worksheet $pSheet = null) { $this->workSheet = $pSheet; return $this; } /** * Get AutoFilter Range * * @return string */ public function getRange() { return $this->range; } /** * Set AutoFilter Range * * @param string $pRange Cell range (i.e. A1:E10) * @throws PHPExcel_Exception * @return PHPExcel_Worksheet_AutoFilter */ public function setRange($pRange = '') { // Uppercase coordinate $cellAddress = explode('!', strtoupper($pRange)); if (count($cellAddress) > 1) { list($worksheet, $pRange) = $cellAddress; } if (strpos($pRange, ':') !== false) { $this->range = $pRange; } elseif (empty($pRange)) { $this->range = ''; } else { throw new PHPExcel_Exception('Autofilter must be set on a range of cells.'); } if (empty($pRange)) { // Discard all column rules $this->columns = array(); } else { // Discard any column rules that are no longer valid within this range list($rangeStart, $rangeEnd) = PHPExcel_Cell::rangeBoundaries($this->range); foreach ($this->columns as $key => $value) { $colIndex = PHPExcel_Cell::columnIndexFromString($key); if (($rangeStart[0] > $colIndex) || ($rangeEnd[0] < $colIndex)) { unset($this->columns[$key]); } } } return $this; } /** * Get all AutoFilter Columns * * @throws PHPExcel_Exception * @return array of PHPExcel_Worksheet_AutoFilter_Column */ public function getColumns() { return $this->columns; } /** * Validate that the specified column is in the AutoFilter range * * @param string $column Column name (e.g. A) * @throws PHPExcel_Exception * @return integer The column offset within the autofilter range */ public function testColumnInRange($column) { if (empty($this->range)) { throw new PHPExcel_Exception("No autofilter range is defined."); } $columnIndex = PHPExcel_Cell::columnIndexFromString($column); list($rangeStart, $rangeEnd) = PHPExcel_Cell::rangeBoundaries($this->range); if (($rangeStart[0] > $columnIndex) || ($rangeEnd[0] < $columnIndex)) { throw new PHPExcel_Exception("Column is outside of current autofilter range."); } return $columnIndex - $rangeStart[0]; } /** * Get a specified AutoFilter Column Offset within the defined AutoFilter range * * @param string $pColumn Column name (e.g. A) * @throws PHPExcel_Exception * @return integer The offset of the specified column within the autofilter range */ public function getColumnOffset($pColumn) { return $this->testColumnInRange($pColumn); } /** * Get a specified AutoFilter Column * * @param string $pColumn Column name (e.g. A) * @throws PHPExcel_Exception * @return PHPExcel_Worksheet_AutoFilter_Column */ public function getColumn($pColumn) { $this->testColumnInRange($pColumn); if (!isset($this->columns[$pColumn])) { $this->columns[$pColumn] = new PHPExcel_Worksheet_AutoFilter_Column($pColumn, $this); } return $this->columns[$pColumn]; } /** * Get a specified AutoFilter Column by it's offset * * @param integer $pColumnOffset Column offset within range (starting from 0) * @throws PHPExcel_Exception * @return PHPExcel_Worksheet_AutoFilter_Column */ public function getColumnByOffset($pColumnOffset = 0) { list($rangeStart, $rangeEnd) = PHPExcel_Cell::rangeBoundaries($this->range); $pColumn = PHPExcel_Cell::stringFromColumnIndex($rangeStart[0] + $pColumnOffset - 1); return $this->getColumn($pColumn); } /** * Set AutoFilter * * @param PHPExcel_Worksheet_AutoFilter_Column|string $pColumn * A simple string containing a Column ID like 'A' is permitted * @throws PHPExcel_Exception * @return PHPExcel_Worksheet_AutoFilter */ public function setColumn($pColumn) { if ((is_string($pColumn)) && (!empty($pColumn))) { $column = $pColumn; } elseif (is_object($pColumn) && ($pColumn instanceof PHPExcel_Worksheet_AutoFilter_Column)) { $column = $pColumn->getColumnIndex(); } else { throw new PHPExcel_Exception("Column is not within the autofilter range."); } $this->testColumnInRange($column); if (is_string($pColumn)) { $this->columns[$pColumn] = new PHPExcel_Worksheet_AutoFilter_Column($pColumn, $this); } elseif (is_object($pColumn) && ($pColumn instanceof PHPExcel_Worksheet_AutoFilter_Column)) { $pColumn->setParent($this); $this->columns[$column] = $pColumn; } ksort($this->columns); return $this; } /** * Clear a specified AutoFilter Column * * @param string $pColumn Column name (e.g. A) * @throws PHPExcel_Exception * @return PHPExcel_Worksheet_AutoFilter */ public function clearColumn($pColumn) { $this->testColumnInRange($pColumn); if (isset($this->columns[$pColumn])) { unset($this->col...
完整源码文件,请先购买后再查看
相关源码
- 二次元商品购物商城2023-06-06
- 基于PYTHON的书籍线上回收网站2023-06-05
- 社区居民信息管理系统2023-06-01
- 英文版响应式安防企业网站源码2023-05-28
- 汽车维修自适应网站源码2023-05-20
- 图书馆管理系统2023-05-16
关于我们 | 顾问团队 | 发展历程 | 联系我们 | 源码上传
联系电话(Tel):4008-010-151(免长途)
地址:北京市海淀区大恒科技大厦五层 邮编:100080
Floor 5th,Daheng Building,Zhongguancun,Beijing,China,100080
51Aspx.com 版权所有 CopyRight © 2006-2023. 京ICP备09089570号 | 京公网安备11010702000869号
联系电话(Tel):4008-010-151(免长途)
地址:北京市海淀区大恒科技大厦五层 邮编:100080
Floor 5th,Daheng Building,Zhongguancun,Beijing,China,100080
51Aspx.com 版权所有 CopyRight © 2006-2023. 京ICP备09089570号 | 京公网安备11010702000869号