init
This commit is contained in:
846
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/AutoFilter.php
vendored
Normal file
846
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/AutoFilter.php
vendored
Normal file
@@ -0,0 +1,846 @@
|
||||
<?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->columns[$pColumn]);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Shift an AutoFilter Column Rule to a different column
|
||||
*
|
||||
* Note: This method bypasses validation of the destination column to ensure it is within this AutoFilter range.
|
||||
* Nor does it verify whether any column rule already exists at $toColumn, but will simply overrideany existing value.
|
||||
* Use with caution.
|
||||
*
|
||||
* @param string $fromColumn Column name (e.g. A)
|
||||
* @param string $toColumn Column name (e.g. B)
|
||||
* @return PHPExcel_Worksheet_AutoFilter
|
||||
*/
|
||||
public function shiftColumn($fromColumn = null, $toColumn = null)
|
||||
{
|
||||
$fromColumn = strtoupper($fromColumn);
|
||||
$toColumn = strtoupper($toColumn);
|
||||
|
||||
if (($fromColumn !== null) && (isset($this->columns[$fromColumn])) && ($toColumn !== null)) {
|
||||
$this->columns[$fromColumn]->setParent();
|
||||
$this->columns[$fromColumn]->setColumnIndex($toColumn);
|
||||
$this->columns[$toColumn] = $this->columns[$fromColumn];
|
||||
$this->columns[$toColumn]->setParent($this);
|
||||
unset($this->columns[$fromColumn]);
|
||||
|
||||
ksort($this->columns);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Test if cell value is in the defined set of values
|
||||
*
|
||||
* @param mixed $cellValue
|
||||
* @param mixed[] $dataSet
|
||||
* @return boolean
|
||||
*/
|
||||
private static function filterTestInSimpleDataSet($cellValue, $dataSet)
|
||||
{
|
||||
$dataSetValues = $dataSet['filterValues'];
|
||||
$blanks = $dataSet['blanks'];
|
||||
if (($cellValue == '') || ($cellValue === null)) {
|
||||
return $blanks;
|
||||
}
|
||||
return in_array($cellValue, $dataSetValues);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test if cell value is in the defined set of Excel date values
|
||||
*
|
||||
* @param mixed $cellValue
|
||||
* @param mixed[] $dataSet
|
||||
* @return boolean
|
||||
*/
|
||||
private static function filterTestInDateGroupSet($cellValue, $dataSet)
|
||||
{
|
||||
$dateSet = $dataSet['filterValues'];
|
||||
$blanks = $dataSet['blanks'];
|
||||
if (($cellValue == '') || ($cellValue === null)) {
|
||||
return $blanks;
|
||||
}
|
||||
|
||||
if (is_numeric($cellValue)) {
|
||||
$dateValue = PHPExcel_Shared_Date::ExcelToPHP($cellValue);
|
||||
if ($cellValue < 1) {
|
||||
// Just the time part
|
||||
$dtVal = date('His', $dateValue);
|
||||
$dateSet = $dateSet['time'];
|
||||
} elseif ($cellValue == floor($cellValue)) {
|
||||
// Just the date part
|
||||
$dtVal = date('Ymd', $dateValue);
|
||||
$dateSet = $dateSet['date'];
|
||||
} else {
|
||||
// date and time parts
|
||||
$dtVal = date('YmdHis', $dateValue);
|
||||
$dateSet = $dateSet['dateTime'];
|
||||
}
|
||||
foreach ($dateSet as $dateValue) {
|
||||
// Use of substr to extract value at the appropriate group level
|
||||
if (substr($dtVal, 0, strlen($dateValue)) == $dateValue) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Test if cell value is within a set of values defined by a ruleset
|
||||
*
|
||||
* @param mixed $cellValue
|
||||
* @param mixed[] $ruleSet
|
||||
* @return boolean
|
||||
*/
|
||||
private static function filterTestInCustomDataSet($cellValue, $ruleSet)
|
||||
{
|
||||
$dataSet = $ruleSet['filterRules'];
|
||||
$join = $ruleSet['join'];
|
||||
$customRuleForBlanks = isset($ruleSet['customRuleForBlanks']) ? $ruleSet['customRuleForBlanks'] : false;
|
||||
|
||||
if (!$customRuleForBlanks) {
|
||||
// Blank cells are always ignored, so return a FALSE
|
||||
if (($cellValue == '') || ($cellValue === null)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
$returnVal = ($join == PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_AND);
|
||||
foreach ($dataSet as $rule) {
|
||||
if (is_numeric($rule['value'])) {
|
||||
// Numeric values are tested using the appropriate operator
|
||||
switch ($rule['operator']) {
|
||||
case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL:
|
||||
$retVal = ($cellValue == $rule['value']);
|
||||
break;
|
||||
case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_NOTEQUAL:
|
||||
$retVal = ($cellValue != $rule['value']);
|
||||
break;
|
||||
case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_GREATERTHAN:
|
||||
$retVal = ($cellValue > $rule['value']);
|
||||
break;
|
||||
case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_GREATERTHANOREQUAL:
|
||||
$retVal = ($cellValue >= $rule['value']);
|
||||
break;
|
||||
case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_LESSTHAN:
|
||||
$retVal = ($cellValue < $rule['value']);
|
||||
break;
|
||||
case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_LESSTHANOREQUAL:
|
||||
$retVal = ($cellValue <= $rule['value']);
|
||||
break;
|
||||
}
|
||||
} elseif ($rule['value'] == '') {
|
||||
switch ($rule['operator']) {
|
||||
case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL:
|
||||
$retVal = (($cellValue == '') || ($cellValue === null));
|
||||
break;
|
||||
case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_NOTEQUAL:
|
||||
$retVal = (($cellValue != '') && ($cellValue !== null));
|
||||
break;
|
||||
default:
|
||||
$retVal = true;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
// String values are always tested for equality, factoring in for wildcards (hence a regexp test)
|
||||
$retVal = preg_match('/^'.$rule['value'].'$/i', $cellValue);
|
||||
}
|
||||
// If there are multiple conditions, then we need to test both using the appropriate join operator
|
||||
switch ($join) {
|
||||
case PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_OR:
|
||||
$returnVal = $returnVal || $retVal;
|
||||
// Break as soon as we have a TRUE match for OR joins,
|
||||
// to avoid unnecessary additional code execution
|
||||
if ($returnVal) {
|
||||
return $returnVal;
|
||||
}
|
||||
break;
|
||||
case PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_AND:
|
||||
$returnVal = $returnVal && $retVal;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return $returnVal;
|
||||
}
|
||||
|
||||
/**
|
||||
* Test if cell date value is matches a set of values defined by a set of months
|
||||
*
|
||||
* @param mixed $cellValue
|
||||
* @param mixed[] $monthSet
|
||||
* @return boolean
|
||||
*/
|
||||
private static function filterTestInPeriodDateSet($cellValue, $monthSet)
|
||||
{
|
||||
// Blank cells are always ignored, so return a FALSE
|
||||
if (($cellValue == '') || ($cellValue === null)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (is_numeric($cellValue)) {
|
||||
$dateValue = date('m', PHPExcel_Shared_Date::ExcelToPHP($cellValue));
|
||||
if (in_array($dateValue, $monthSet)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Search/Replace arrays to convert Excel wildcard syntax to a regexp syntax for preg_matching
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private static $fromReplace = array('\*', '\?', '~~', '~.*', '~.?');
|
||||
private static $toReplace = array('.*', '.', '~', '\*', '\?');
|
||||
|
||||
|
||||
/**
|
||||
* Convert a dynamic rule daterange to a custom filter range expression for ease of calculation
|
||||
*
|
||||
* @param string $dynamicRuleType
|
||||
* @param PHPExcel_Worksheet_AutoFilter_Column &$filterColumn
|
||||
* @return mixed[]
|
||||
*/
|
||||
private function dynamicFilterDateRange($dynamicRuleType, &$filterColumn)
|
||||
{
|
||||
$rDateType = PHPExcel_Calculation_Functions::getReturnDateType();
|
||||
PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC);
|
||||
$val = $maxVal = null;
|
||||
|
||||
$ruleValues = array();
|
||||
$baseDate = PHPExcel_Calculation_DateTime::DATENOW();
|
||||
// Calculate start/end dates for the required date range based on current date
|
||||
switch ($dynamicRuleType) {
|
||||
case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_LASTWEEK:
|
||||
$baseDate = strtotime('-7 days', $baseDate);
|
||||
break;
|
||||
case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_NEXTWEEK:
|
||||
$baseDate = strtotime('-7 days', $baseDate);
|
||||
break;
|
||||
case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_LASTMONTH:
|
||||
$baseDate = strtotime('-1 month', gmmktime(0, 0, 0, 1, date('m', $baseDate), date('Y', $baseDate)));
|
||||
break;
|
||||
case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_NEXTMONTH:
|
||||
$baseDate = strtotime('+1 month', gmmktime(0, 0, 0, 1, date('m', $baseDate), date('Y', $baseDate)));
|
||||
break;
|
||||
case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_LASTQUARTER:
|
||||
$baseDate = strtotime('-3 month', gmmktime(0, 0, 0, 1, date('m', $baseDate), date('Y', $baseDate)));
|
||||
break;
|
||||
case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_NEXTQUARTER:
|
||||
$baseDate = strtotime('+3 month', gmmktime(0, 0, 0, 1, date('m', $baseDate), date('Y', $baseDate)));
|
||||
break;
|
||||
case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_LASTYEAR:
|
||||
$baseDate = strtotime('-1 year', gmmktime(0, 0, 0, 1, date('m', $baseDate), date('Y', $baseDate)));
|
||||
break;
|
||||
case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_NEXTYEAR:
|
||||
$baseDate = strtotime('+1 year', gmmktime(0, 0, 0, 1, date('m', $baseDate), date('Y', $baseDate)));
|
||||
break;
|
||||
}
|
||||
|
||||
switch ($dynamicRuleType) {
|
||||
case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_TODAY:
|
||||
case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_YESTERDAY:
|
||||
case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_TOMORROW:
|
||||
$maxVal = (int) PHPExcel_Shared_Date::PHPtoExcel(strtotime('+1 day', $baseDate));
|
||||
$val = (int) PHPExcel_Shared_Date::PHPToExcel($baseDate);
|
||||
break;
|
||||
case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_YEARTODATE:
|
||||
$maxVal = (int) PHPExcel_Shared_Date::PHPtoExcel(strtotime('+1 day', $baseDate));
|
||||
$val = (int) PHPExcel_Shared_Date::PHPToExcel(gmmktime(0, 0, 0, 1, 1, date('Y', $baseDate)));
|
||||
break;
|
||||
case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_THISYEAR:
|
||||
case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_LASTYEAR:
|
||||
case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_NEXTYEAR:
|
||||
$maxVal = (int) PHPExcel_Shared_Date::PHPToExcel(gmmktime(0, 0, 0, 31, 12, date('Y', $baseDate)));
|
||||
++$maxVal;
|
||||
$val = (int) PHPExcel_Shared_Date::PHPToExcel(gmmktime(0, 0, 0, 1, 1, date('Y', $baseDate)));
|
||||
break;
|
||||
case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_THISQUARTER:
|
||||
case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_LASTQUARTER:
|
||||
case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_NEXTQUARTER:
|
||||
$thisMonth = date('m', $baseDate);
|
||||
$thisQuarter = floor(--$thisMonth / 3);
|
||||
$maxVal = (int) PHPExcel_Shared_Date::PHPtoExcel(gmmktime(0, 0, 0, date('t', $baseDate), (1+$thisQuarter)*3, date('Y', $baseDate)));
|
||||
++$maxVal;
|
||||
$val = (int) PHPExcel_Shared_Date::PHPToExcel(gmmktime(0, 0, 0, 1, 1+$thisQuarter*3, date('Y', $baseDate)));
|
||||
break;
|
||||
case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_THISMONTH:
|
||||
case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_LASTMONTH:
|
||||
case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_NEXTMONTH:
|
||||
$maxVal = (int) PHPExcel_Shared_Date::PHPtoExcel(gmmktime(0, 0, 0, date('t', $baseDate), date('m', $baseDate), date('Y', $baseDate)));
|
||||
++$maxVal;
|
||||
$val = (int) PHPExcel_Shared_Date::PHPToExcel(gmmktime(0, 0, 0, 1, date('m', $baseDate), date('Y', $baseDate)));
|
||||
break;
|
||||
case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_THISWEEK:
|
||||
case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_LASTWEEK:
|
||||
case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_NEXTWEEK:
|
||||
$dayOfWeek = date('w', $baseDate);
|
||||
$val = (int) PHPExcel_Shared_Date::PHPToExcel($baseDate) - $dayOfWeek;
|
||||
$maxVal = $val + 7;
|
||||
break;
|
||||
}
|
||||
|
||||
switch ($dynamicRuleType) {
|
||||
// Adjust Today dates for Yesterday and Tomorrow
|
||||
case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_YESTERDAY:
|
||||
--$maxVal;
|
||||
--$val;
|
||||
break;
|
||||
case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_TOMORROW:
|
||||
++$maxVal;
|
||||
++$val;
|
||||
break;
|
||||
}
|
||||
|
||||
// Set the filter column rule attributes ready for writing
|
||||
$filterColumn->setAttributes(array('val' => $val, 'maxVal' => $maxVal));
|
||||
|
||||
// Set the rules for identifying rows for hide/show
|
||||
$ruleValues[] = array('operator' => PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_GREATERTHANOREQUAL, 'value' => $val);
|
||||
$ruleValues[] = array('operator' => PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_LESSTHAN, 'value' => $maxVal);
|
||||
PHPExcel_Calculation_Functions::setReturnDateType($rDateType);
|
||||
|
||||
return array('method' => 'filterTestInCustomDataSet', 'arguments' => array('filterRules' => $ruleValues, 'join' => PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_AND));
|
||||
}
|
||||
|
||||
private function calculateTopTenValue($columnID, $startRow, $endRow, $ruleType, $ruleValue)
|
||||
{
|
||||
$range = $columnID.$startRow.':'.$columnID.$endRow;
|
||||
$dataValues = PHPExcel_Calculation_Functions::flattenArray($this->workSheet->rangeToArray($range, null, true, false));
|
||||
|
||||
$dataValues = array_filter($dataValues);
|
||||
if ($ruleType == PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_TOP) {
|
||||
rsort($dataValues);
|
||||
} else {
|
||||
sort($dataValues);
|
||||
}
|
||||
|
||||
return array_pop(array_slice($dataValues, 0, $ruleValue));
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply the AutoFilter rules to the AutoFilter Range
|
||||
*
|
||||
* @throws PHPExcel_Exception
|
||||
* @return PHPExcel_Worksheet_AutoFilter
|
||||
*/
|
||||
public function showHideRows()
|
||||
{
|
||||
list($rangeStart, $rangeEnd) = PHPExcel_Cell::rangeBoundaries($this->range);
|
||||
|
||||
// The heading row should always be visible
|
||||
// echo 'AutoFilter Heading Row ', $rangeStart[1],' is always SHOWN',PHP_EOL;
|
||||
$this->workSheet->getRowDimension($rangeStart[1])->setVisible(true);
|
||||
|
||||
$columnFilterTests = array();
|
||||
foreach ($this->columns as $columnID => $filterColumn) {
|
||||
$rules = $filterColumn->getRules();
|
||||
switch ($filterColumn->getFilterType()) {
|
||||
case PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_FILTER:
|
||||
$ruleValues = array();
|
||||
// Build a list of the filter value selections
|
||||
foreach ($rules as $rule) {
|
||||
$ruleType = $rule->getRuleType();
|
||||
$ruleValues[] = $rule->getValue();
|
||||
}
|
||||
// Test if we want to include blanks in our filter criteria
|
||||
$blanks = false;
|
||||
$ruleDataSet = array_filter($ruleValues);
|
||||
if (count($ruleValues) != count($ruleDataSet)) {
|
||||
$blanks = true;
|
||||
}
|
||||
if ($ruleType == PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_FILTER) {
|
||||
// Filter on absolute values
|
||||
$columnFilterTests[$columnID] = array(
|
||||
'method' => 'filterTestInSimpleDataSet',
|
||||
'arguments' => array('filterValues' => $ruleDataSet, 'blanks' => $blanks)
|
||||
);
|
||||
} else {
|
||||
// Filter on date group values
|
||||
$arguments = array(
|
||||
'date' => array(),
|
||||
'time' => array(),
|
||||
'dateTime' => array(),
|
||||
);
|
||||
foreach ($ruleDataSet as $ruleValue) {
|
||||
$date = $time = '';
|
||||
if ((isset($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_YEAR])) &&
|
||||
($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_YEAR] !== '')) {
|
||||
$date .= sprintf('%04d', $ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_YEAR]);
|
||||
}
|
||||
if ((isset($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_MONTH])) &&
|
||||
($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_MONTH] != '')) {
|
||||
$date .= sprintf('%02d', $ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_MONTH]);
|
||||
}
|
||||
if ((isset($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_DAY])) &&
|
||||
($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_DAY] !== '')) {
|
||||
$date .= sprintf('%02d', $ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_DAY]);
|
||||
}
|
||||
if ((isset($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_HOUR])) &&
|
||||
($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_HOUR] !== '')) {
|
||||
$time .= sprintf('%02d', $ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_HOUR]);
|
||||
}
|
||||
if ((isset($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_MINUTE])) &&
|
||||
($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_MINUTE] !== '')) {
|
||||
$time .= sprintf('%02d', $ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_MINUTE]);
|
||||
}
|
||||
if ((isset($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_SECOND])) &&
|
||||
($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_SECOND] !== '')) {
|
||||
$time .= sprintf('%02d', $ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_SECOND]);
|
||||
}
|
||||
$dateTime = $date . $time;
|
||||
$arguments['date'][] = $date;
|
||||
$arguments['time'][] = $time;
|
||||
$arguments['dateTime'][] = $dateTime;
|
||||
}
|
||||
// Remove empty elements
|
||||
$arguments['date'] = array_filter($arguments['date']);
|
||||
$arguments['time'] = array_filter($arguments['time']);
|
||||
$arguments['dateTime'] = array_filter($arguments['dateTime']);
|
||||
$columnFilterTests[$columnID] = array(
|
||||
'method' => 'filterTestInDateGroupSet',
|
||||
'arguments' => array('filterValues' => $arguments, 'blanks' => $blanks)
|
||||
);
|
||||
}
|
||||
break;
|
||||
case PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_CUSTOMFILTER:
|
||||
$customRuleForBlanks = false;
|
||||
$ruleValues = array();
|
||||
// Build a list of the filter value selections
|
||||
foreach ($rules as $rule) {
|
||||
$ruleType = $rule->getRuleType();
|
||||
$ruleValue = $rule->getValue();
|
||||
if (!is_numeric($ruleValue)) {
|
||||
// Convert to a regexp allowing for regexp reserved characters, wildcards and escaped wildcards
|
||||
$ruleValue = preg_quote($ruleValue);
|
||||
$ruleValue = str_replace(self::$fromReplace, self::$toReplace, $ruleValue);
|
||||
if (trim($ruleValue) == '') {
|
||||
$customRuleForBlanks = true;
|
||||
$ruleValue = trim($ruleValue);
|
||||
}
|
||||
}
|
||||
$ruleValues[] = array('operator' => $rule->getOperator(), 'value' => $ruleValue);
|
||||
}
|
||||
$join = $filterColumn->getJoin();
|
||||
$columnFilterTests[$columnID] = array(
|
||||
'method' => 'filterTestInCustomDataSet',
|
||||
'arguments' => array('filterRules' => $ruleValues, 'join' => $join, 'customRuleForBlanks' => $customRuleForBlanks)
|
||||
);
|
||||
break;
|
||||
case PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_DYNAMICFILTER:
|
||||
$ruleValues = array();
|
||||
foreach ($rules as $rule) {
|
||||
// We should only ever have one Dynamic Filter Rule anyway
|
||||
$dynamicRuleType = $rule->getGrouping();
|
||||
if (($dynamicRuleType == PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_ABOVEAVERAGE) ||
|
||||
($dynamicRuleType == PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_BELOWAVERAGE)) {
|
||||
// Number (Average) based
|
||||
// Calculate the average
|
||||
$averageFormula = '=AVERAGE('.$columnID.($rangeStart[1]+1).':'.$columnID.$rangeEnd[1].')';
|
||||
$average = PHPExcel_Calculation::getInstance()->calculateFormula($averageFormula, null, $this->workSheet->getCell('A1'));
|
||||
// Set above/below rule based on greaterThan or LessTan
|
||||
$operator = ($dynamicRuleType === PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_ABOVEAVERAGE)
|
||||
? PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_GREATERTHAN
|
||||
: PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_LESSTHAN;
|
||||
$ruleValues[] = array('operator' => $operator,
|
||||
'value' => $average
|
||||
);
|
||||
$columnFilterTests[$columnID] = array(
|
||||
'method' => 'filterTestInCustomDataSet',
|
||||
'arguments' => array('filterRules' => $ruleValues, 'join' => PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_OR)
|
||||
);
|
||||
} else {
|
||||
// Date based
|
||||
if ($dynamicRuleType{0} == 'M' || $dynamicRuleType{0} == 'Q') {
|
||||
// Month or Quarter
|
||||
sscanf($dynamicRuleType, '%[A-Z]%d', $periodType, $period);
|
||||
if ($periodType == 'M') {
|
||||
$ruleValues = array($period);
|
||||
} else {
|
||||
--$period;
|
||||
$periodEnd = (1+$period)*3;
|
||||
$periodStart = 1+$period*3;
|
||||
$ruleValues = range($periodStart, $periodEnd);
|
||||
}
|
||||
$columnFilterTests[$columnID] = array(
|
||||
'method' => 'filterTestInPeriodDateSet',
|
||||
'arguments' => $ruleValues
|
||||
);
|
||||
$filterColumn->setAttributes(array());
|
||||
} else {
|
||||
// Date Range
|
||||
$columnFilterTests[$columnID] = $this->dynamicFilterDateRange($dynamicRuleType, $filterColumn);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_TOPTENFILTER:
|
||||
$ruleValues = array();
|
||||
$dataRowCount = $rangeEnd[1] - $rangeStart[1];
|
||||
foreach ($rules as $rule) {
|
||||
// We should only ever have one Dynamic Filter Rule anyway
|
||||
$toptenRuleType = $rule->getGrouping();
|
||||
$ruleValue = $rule->getValue();
|
||||
$ruleOperator = $rule->getOperator();
|
||||
}
|
||||
if ($ruleOperator === PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_PERCENT) {
|
||||
$ruleValue = floor($ruleValue * ($dataRowCount / 100));
|
||||
}
|
||||
if ($ruleValue < 1) {
|
||||
$ruleValue = 1;
|
||||
}
|
||||
if ($ruleValue > 500) {
|
||||
$ruleValue = 500;
|
||||
}
|
||||
|
||||
$maxVal = $this->calculateTopTenValue($columnID, $rangeStart[1]+1, $rangeEnd[1], $toptenRuleType, $ruleValue);
|
||||
|
||||
$operator = ($toptenRuleType == PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_TOP)
|
||||
? PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_GREATERTHANOREQUAL
|
||||
: PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_LESSTHANOREQUAL;
|
||||
$ruleValues[] = array('operator' => $operator, 'value' => $maxVal);
|
||||
$columnFilterTests[$columnID] = array(
|
||||
'method' => 'filterTestInCustomDataSet',
|
||||
'arguments' => array('filterRules' => $ruleValues, 'join' => PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_OR)
|
||||
);
|
||||
$filterColumn->setAttributes(array('maxVal' => $maxVal));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// echo 'Column Filter Test CRITERIA',PHP_EOL;
|
||||
// var_dump($columnFilterTests);
|
||||
//
|
||||
// Execute the column tests for each row in the autoFilter range to determine show/hide,
|
||||
for ($row = $rangeStart[1]+1; $row <= $rangeEnd[1]; ++$row) {
|
||||
// echo 'Testing Row = ', $row,PHP_EOL;
|
||||
$result = true;
|
||||
foreach ($columnFilterTests as $columnID => $columnFilterTest) {
|
||||
// echo 'Testing cell ', $columnID.$row,PHP_EOL;
|
||||
$cellValue = $this->workSheet->getCell($columnID.$row)->getCalculatedValue();
|
||||
// echo 'Value is ', $cellValue,PHP_EOL;
|
||||
// Execute the filter test
|
||||
$result = $result &&
|
||||
call_user_func_array(
|
||||
array('PHPExcel_Worksheet_AutoFilter', $columnFilterTest['method']),
|
||||
array($cellValue, $columnFilterTest['arguments'])
|
||||
);
|
||||
// echo (($result) ? 'VALID' : 'INVALID'),PHP_EOL;
|
||||
// If filter test has resulted in FALSE, exit the loop straightaway rather than running any more tests
|
||||
if (!$result) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
// Set show/hide for the row based on the result of the autoFilter result
|
||||
// echo (($result) ? 'SHOW' : 'HIDE'),PHP_EOL;
|
||||
$this->workSheet->getRowDimension($row)->setVisible($result);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Implement PHP __clone to create a deep clone, not just a shallow copy.
|
||||
*/
|
||||
public function __clone()
|
||||
{
|
||||
$vars = get_object_vars($this);
|
||||
foreach ($vars as $key => $value) {
|
||||
if (is_object($value)) {
|
||||
if ($key == 'workSheet') {
|
||||
// Detach from worksheet
|
||||
$this->{$key} = null;
|
||||
} else {
|
||||
$this->{$key} = clone $value;
|
||||
}
|
||||
} elseif ((is_array($value)) && ($key == 'columns')) {
|
||||
// The columns array of PHPExcel_Worksheet_AutoFilter objects
|
||||
$this->{$key} = array();
|
||||
foreach ($value as $k => $v) {
|
||||
$this->{$key}[$k] = clone $v;
|
||||
// attach the new cloned Column to this new cloned Autofilter object
|
||||
$this->{$key}[$k]->setParent($this);
|
||||
}
|
||||
} else {
|
||||
$this->{$key} = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* toString method replicates previous behavior by returning the range if object is
|
||||
* referenced as a property of its parent.
|
||||
*/
|
||||
public function __toString()
|
||||
{
|
||||
return (string) $this->range;
|
||||
}
|
||||
}
|
||||
405
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/AutoFilter/Column.php
vendored
Normal file
405
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/AutoFilter/Column.php
vendored
Normal file
@@ -0,0 +1,405 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_AutoFilter_Column
|
||||
*
|
||||
* 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_Column
|
||||
{
|
||||
const AUTOFILTER_FILTERTYPE_FILTER = 'filters';
|
||||
const AUTOFILTER_FILTERTYPE_CUSTOMFILTER = 'customFilters';
|
||||
// Supports no more than 2 rules, with an And/Or join criteria
|
||||
// if more than 1 rule is defined
|
||||
const AUTOFILTER_FILTERTYPE_DYNAMICFILTER = 'dynamicFilter';
|
||||
// Even though the filter rule is constant, the filtered data can vary
|
||||
// e.g. filtered by date = TODAY
|
||||
const AUTOFILTER_FILTERTYPE_TOPTENFILTER = 'top10';
|
||||
|
||||
/**
|
||||
* Types of autofilter rules
|
||||
*
|
||||
* @var string[]
|
||||
*/
|
||||
private static $filterTypes = array(
|
||||
// Currently we're not handling
|
||||
// colorFilter
|
||||
// extLst
|
||||
// iconFilter
|
||||
self::AUTOFILTER_FILTERTYPE_FILTER,
|
||||
self::AUTOFILTER_FILTERTYPE_CUSTOMFILTER,
|
||||
self::AUTOFILTER_FILTERTYPE_DYNAMICFILTER,
|
||||
self::AUTOFILTER_FILTERTYPE_TOPTENFILTER,
|
||||
);
|
||||
|
||||
/* Multiple Rule Connections */
|
||||
const AUTOFILTER_COLUMN_JOIN_AND = 'and';
|
||||
const AUTOFILTER_COLUMN_JOIN_OR = 'or';
|
||||
|
||||
/**
|
||||
* Join options for autofilter rules
|
||||
*
|
||||
* @var string[]
|
||||
*/
|
||||
private static $ruleJoins = array(
|
||||
self::AUTOFILTER_COLUMN_JOIN_AND,
|
||||
self::AUTOFILTER_COLUMN_JOIN_OR,
|
||||
);
|
||||
|
||||
/**
|
||||
* Autofilter
|
||||
*
|
||||
* @var PHPExcel_Worksheet_AutoFilter
|
||||
*/
|
||||
private $parent;
|
||||
|
||||
|
||||
/**
|
||||
* Autofilter Column Index
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $columnIndex = '';
|
||||
|
||||
|
||||
/**
|
||||
* Autofilter Column Filter Type
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $filterType = self::AUTOFILTER_FILTERTYPE_FILTER;
|
||||
|
||||
|
||||
/**
|
||||
* Autofilter Multiple Rules And/Or
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $join = self::AUTOFILTER_COLUMN_JOIN_OR;
|
||||
|
||||
|
||||
/**
|
||||
* Autofilter Column Rules
|
||||
*
|
||||
* @var array of PHPExcel_Worksheet_AutoFilter_Column_Rule
|
||||
*/
|
||||
private $ruleset = array();
|
||||
|
||||
|
||||
/**
|
||||
* Autofilter Column Dynamic Attributes
|
||||
*
|
||||
* @var array of mixed
|
||||
*/
|
||||
private $attributes = array();
|
||||
|
||||
|
||||
/**
|
||||
* Create a new PHPExcel_Worksheet_AutoFilter_Column
|
||||
*
|
||||
* @param string $pColumn Column (e.g. A)
|
||||
* @param PHPExcel_Worksheet_AutoFilter $pParent Autofilter for this column
|
||||
*/
|
||||
public function __construct($pColumn, PHPExcel_Worksheet_AutoFilter $pParent = null)
|
||||
{
|
||||
$this->columnIndex = $pColumn;
|
||||
$this->parent = $pParent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get AutoFilter Column Index
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getColumnIndex()
|
||||
{
|
||||
return $this->columnIndex;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set AutoFilter Column Index
|
||||
*
|
||||
* @param string $pColumn Column (e.g. A)
|
||||
* @throws PHPExcel_Exception
|
||||
* @return PHPExcel_Worksheet_AutoFilter_Column
|
||||
*/
|
||||
public function setColumnIndex($pColumn)
|
||||
{
|
||||
// Uppercase coordinate
|
||||
$pColumn = strtoupper($pColumn);
|
||||
if ($this->parent !== null) {
|
||||
$this->parent->testColumnInRange($pColumn);
|
||||
}
|
||||
|
||||
$this->columnIndex = $pColumn;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get this Column's AutoFilter Parent
|
||||
*
|
||||
* @return PHPExcel_Worksheet_AutoFilter
|
||||
*/
|
||||
public function getParent()
|
||||
{
|
||||
return $this->parent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set this Column's AutoFilter Parent
|
||||
*
|
||||
* @param PHPExcel_Worksheet_AutoFilter
|
||||
* @return PHPExcel_Worksheet_AutoFilter_Column
|
||||
*/
|
||||
public function setParent(PHPExcel_Worksheet_AutoFilter $pParent = null)
|
||||
{
|
||||
$this->parent = $pParent;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get AutoFilter Type
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getFilterType()
|
||||
{
|
||||
return $this->filterType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set AutoFilter Type
|
||||
*
|
||||
* @param string $pFilterType
|
||||
* @throws PHPExcel_Exception
|
||||
* @return PHPExcel_Worksheet_AutoFilter_Column
|
||||
*/
|
||||
public function setFilterType($pFilterType = self::AUTOFILTER_FILTERTYPE_FILTER)
|
||||
{
|
||||
if (!in_array($pFilterType, self::$filterTypes)) {
|
||||
throw new PHPExcel_Exception('Invalid filter type for column AutoFilter.');
|
||||
}
|
||||
|
||||
$this->filterType = $pFilterType;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get AutoFilter Multiple Rules And/Or Join
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getJoin()
|
||||
{
|
||||
return $this->join;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set AutoFilter Multiple Rules And/Or
|
||||
*
|
||||
* @param string $pJoin And/Or
|
||||
* @throws PHPExcel_Exception
|
||||
* @return PHPExcel_Worksheet_AutoFilter_Column
|
||||
*/
|
||||
public function setJoin($pJoin = self::AUTOFILTER_COLUMN_JOIN_OR)
|
||||
{
|
||||
// Lowercase And/Or
|
||||
$pJoin = strtolower($pJoin);
|
||||
if (!in_array($pJoin, self::$ruleJoins)) {
|
||||
throw new PHPExcel_Exception('Invalid rule connection for column AutoFilter.');
|
||||
}
|
||||
|
||||
$this->join = $pJoin;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set AutoFilter Attributes
|
||||
*
|
||||
* @param string[] $pAttributes
|
||||
* @throws PHPExcel_Exception
|
||||
* @return PHPExcel_Worksheet_AutoFilter_Column
|
||||
*/
|
||||
public function setAttributes($pAttributes = array())
|
||||
{
|
||||
$this->attributes = $pAttributes;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set An AutoFilter Attribute
|
||||
*
|
||||
* @param string $pName Attribute Name
|
||||
* @param string $pValue Attribute Value
|
||||
* @throws PHPExcel_Exception
|
||||
* @return PHPExcel_Worksheet_AutoFilter_Column
|
||||
*/
|
||||
public function setAttribute($pName, $pValue)
|
||||
{
|
||||
$this->attributes[$pName] = $pValue;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get AutoFilter Column Attributes
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getAttributes()
|
||||
{
|
||||
return $this->attributes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get specific AutoFilter Column Attribute
|
||||
*
|
||||
* @param string $pName Attribute Name
|
||||
* @return string
|
||||
*/
|
||||
public function getAttribute($pName)
|
||||
{
|
||||
if (isset($this->attributes[$pName])) {
|
||||
return $this->attributes[$pName];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all AutoFilter Column Rules
|
||||
*
|
||||
* @throws PHPExcel_Exception
|
||||
* @return array of PHPExcel_Worksheet_AutoFilter_Column_Rule
|
||||
*/
|
||||
public function getRules()
|
||||
{
|
||||
return $this->ruleset;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a specified AutoFilter Column Rule
|
||||
*
|
||||
* @param integer $pIndex Rule index in the ruleset array
|
||||
* @return PHPExcel_Worksheet_AutoFilter_Column_Rule
|
||||
*/
|
||||
public function getRule($pIndex)
|
||||
{
|
||||
if (!isset($this->ruleset[$pIndex])) {
|
||||
$this->ruleset[$pIndex] = new PHPExcel_Worksheet_AutoFilter_Column_Rule($this);
|
||||
}
|
||||
return $this->ruleset[$pIndex];
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new AutoFilter Column Rule in the ruleset
|
||||
*
|
||||
* @return PHPExcel_Worksheet_AutoFilter_Column_Rule
|
||||
*/
|
||||
public function createRule()
|
||||
{
|
||||
$this->ruleset[] = new PHPExcel_Worksheet_AutoFilter_Column_Rule($this);
|
||||
|
||||
return end($this->ruleset);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a new AutoFilter Column Rule to the ruleset
|
||||
*
|
||||
* @param PHPExcel_Worksheet_AutoFilter_Column_Rule $pRule
|
||||
* @param boolean $returnRule Flag indicating whether the rule object or the column object should be returned
|
||||
* @return PHPExcel_Worksheet_AutoFilter_Column|PHPExcel_Worksheet_AutoFilter_Column_Rule
|
||||
*/
|
||||
public function addRule(PHPExcel_Worksheet_AutoFilter_Column_Rule $pRule, $returnRule = true)
|
||||
{
|
||||
$pRule->setParent($this);
|
||||
$this->ruleset[] = $pRule;
|
||||
|
||||
return ($returnRule) ? $pRule : $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a specified AutoFilter Column Rule
|
||||
* If the number of rules is reduced to 1, then we reset And/Or logic to Or
|
||||
*
|
||||
* @param integer $pIndex Rule index in the ruleset array
|
||||
* @return PHPExcel_Worksheet_AutoFilter_Column
|
||||
*/
|
||||
public function deleteRule($pIndex)
|
||||
{
|
||||
if (isset($this->ruleset[$pIndex])) {
|
||||
unset($this->ruleset[$pIndex]);
|
||||
// If we've just deleted down to a single rule, then reset And/Or joining to Or
|
||||
if (count($this->ruleset) <= 1) {
|
||||
$this->setJoin(self::AUTOFILTER_COLUMN_JOIN_OR);
|
||||
}
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete all AutoFilter Column Rules
|
||||
*
|
||||
* @return PHPExcel_Worksheet_AutoFilter_Column
|
||||
*/
|
||||
public function clearRules()
|
||||
{
|
||||
$this->ruleset = array();
|
||||
$this->setJoin(self::AUTOFILTER_COLUMN_JOIN_OR);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Implement PHP __clone to create a deep clone, not just a shallow copy.
|
||||
*/
|
||||
public function __clone()
|
||||
{
|
||||
$vars = get_object_vars($this);
|
||||
foreach ($vars as $key => $value) {
|
||||
if (is_object($value)) {
|
||||
if ($key == 'parent') {
|
||||
// Detach from autofilter parent
|
||||
$this->$key = null;
|
||||
} else {
|
||||
$this->$key = clone $value;
|
||||
}
|
||||
} elseif ((is_array($value)) && ($key == 'ruleset')) {
|
||||
// The columns array of PHPExcel_Worksheet_AutoFilter objects
|
||||
$this->$key = array();
|
||||
foreach ($value as $k => $v) {
|
||||
$this->$key[$k] = clone $v;
|
||||
// attach the new cloned Rule to this new cloned Autofilter Cloned object
|
||||
$this->$key[$k]->setParent($this);
|
||||
}
|
||||
} else {
|
||||
$this->$key = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
468
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/AutoFilter/Column/Rule.php
vendored
Normal file
468
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/AutoFilter/Column/Rule.php
vendored
Normal file
@@ -0,0 +1,468 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_AutoFilter_Column_Rule
|
||||
*
|
||||
* 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_Column_Rule
|
||||
{
|
||||
const AUTOFILTER_RULETYPE_FILTER = 'filter';
|
||||
const AUTOFILTER_RULETYPE_DATEGROUP = 'dateGroupItem';
|
||||
const AUTOFILTER_RULETYPE_CUSTOMFILTER = 'customFilter';
|
||||
const AUTOFILTER_RULETYPE_DYNAMICFILTER = 'dynamicFilter';
|
||||
const AUTOFILTER_RULETYPE_TOPTENFILTER = 'top10Filter';
|
||||
|
||||
private static $ruleTypes = array(
|
||||
// Currently we're not handling
|
||||
// colorFilter
|
||||
// extLst
|
||||
// iconFilter
|
||||
self::AUTOFILTER_RULETYPE_FILTER,
|
||||
self::AUTOFILTER_RULETYPE_DATEGROUP,
|
||||
self::AUTOFILTER_RULETYPE_CUSTOMFILTER,
|
||||
self::AUTOFILTER_RULETYPE_DYNAMICFILTER,
|
||||
self::AUTOFILTER_RULETYPE_TOPTENFILTER,
|
||||
);
|
||||
|
||||
const AUTOFILTER_RULETYPE_DATEGROUP_YEAR = 'year';
|
||||
const AUTOFILTER_RULETYPE_DATEGROUP_MONTH = 'month';
|
||||
const AUTOFILTER_RULETYPE_DATEGROUP_DAY = 'day';
|
||||
const AUTOFILTER_RULETYPE_DATEGROUP_HOUR = 'hour';
|
||||
const AUTOFILTER_RULETYPE_DATEGROUP_MINUTE = 'minute';
|
||||
const AUTOFILTER_RULETYPE_DATEGROUP_SECOND = 'second';
|
||||
|
||||
private static $dateTimeGroups = array(
|
||||
self::AUTOFILTER_RULETYPE_DATEGROUP_YEAR,
|
||||
self::AUTOFILTER_RULETYPE_DATEGROUP_MONTH,
|
||||
self::AUTOFILTER_RULETYPE_DATEGROUP_DAY,
|
||||
self::AUTOFILTER_RULETYPE_DATEGROUP_HOUR,
|
||||
self::AUTOFILTER_RULETYPE_DATEGROUP_MINUTE,
|
||||
self::AUTOFILTER_RULETYPE_DATEGROUP_SECOND,
|
||||
);
|
||||
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_YESTERDAY = 'yesterday';
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_TODAY = 'today';
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_TOMORROW = 'tomorrow';
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_YEARTODATE = 'yearToDate';
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_THISYEAR = 'thisYear';
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_THISQUARTER = 'thisQuarter';
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_THISMONTH = 'thisMonth';
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_THISWEEK = 'thisWeek';
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_LASTYEAR = 'lastYear';
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_LASTQUARTER = 'lastQuarter';
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_LASTMONTH = 'lastMonth';
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_LASTWEEK = 'lastWeek';
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_NEXTYEAR = 'nextYear';
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_NEXTQUARTER = 'nextQuarter';
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_NEXTMONTH = 'nextMonth';
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_NEXTWEEK = 'nextWeek';
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_1 = 'M1';
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_JANUARY = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_1;
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_2 = 'M2';
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_FEBRUARY = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_2;
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_3 = 'M3';
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_MARCH = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_3;
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_4 = 'M4';
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_APRIL = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_4;
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_5 = 'M5';
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_MAY = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_5;
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_6 = 'M6';
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_JUNE = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_6;
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_7 = 'M7';
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_JULY = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_7;
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_8 = 'M8';
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_AUGUST = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_8;
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_9 = 'M9';
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_SEPTEMBER = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_9;
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_10 = 'M10';
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_OCTOBER = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_10;
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_11 = 'M11';
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_NOVEMBER = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_11;
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_12 = 'M12';
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_DECEMBER = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_12;
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_1 = 'Q1';
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_2 = 'Q2';
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_3 = 'Q3';
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_4 = 'Q4';
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_ABOVEAVERAGE = 'aboveAverage';
|
||||
const AUTOFILTER_RULETYPE_DYNAMIC_BELOWAVERAGE = 'belowAverage';
|
||||
|
||||
private static $dynamicTypes = array(
|
||||
self::AUTOFILTER_RULETYPE_DYNAMIC_YESTERDAY,
|
||||
self::AUTOFILTER_RULETYPE_DYNAMIC_TODAY,
|
||||
self::AUTOFILTER_RULETYPE_DYNAMIC_TOMORROW,
|
||||
self::AUTOFILTER_RULETYPE_DYNAMIC_YEARTODATE,
|
||||
self::AUTOFILTER_RULETYPE_DYNAMIC_THISYEAR,
|
||||
self::AUTOFILTER_RULETYPE_DYNAMIC_THISQUARTER,
|
||||
self::AUTOFILTER_RULETYPE_DYNAMIC_THISMONTH,
|
||||
self::AUTOFILTER_RULETYPE_DYNAMIC_THISWEEK,
|
||||
self::AUTOFILTER_RULETYPE_DYNAMIC_LASTYEAR,
|
||||
self::AUTOFILTER_RULETYPE_DYNAMIC_LASTQUARTER,
|
||||
self::AUTOFILTER_RULETYPE_DYNAMIC_LASTMONTH,
|
||||
self::AUTOFILTER_RULETYPE_DYNAMIC_LASTWEEK,
|
||||
self::AUTOFILTER_RULETYPE_DYNAMIC_NEXTYEAR,
|
||||
self::AUTOFILTER_RULETYPE_DYNAMIC_NEXTQUARTER,
|
||||
self::AUTOFILTER_RULETYPE_DYNAMIC_NEXTMONTH,
|
||||
self::AUTOFILTER_RULETYPE_DYNAMIC_NEXTWEEK,
|
||||
self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_1,
|
||||
self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_2,
|
||||
self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_3,
|
||||
self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_4,
|
||||
self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_5,
|
||||
self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_6,
|
||||
self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_7,
|
||||
self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_8,
|
||||
self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_9,
|
||||
self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_10,
|
||||
self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_11,
|
||||
self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_12,
|
||||
self::AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_1,
|
||||
self::AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_2,
|
||||
self::AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_3,
|
||||
self::AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_4,
|
||||
self::AUTOFILTER_RULETYPE_DYNAMIC_ABOVEAVERAGE,
|
||||
self::AUTOFILTER_RULETYPE_DYNAMIC_BELOWAVERAGE,
|
||||
);
|
||||
|
||||
/*
|
||||
* The only valid filter rule operators for filter and customFilter types are:
|
||||
* <xsd:enumeration value="equal"/>
|
||||
* <xsd:enumeration value="lessThan"/>
|
||||
* <xsd:enumeration value="lessThanOrEqual"/>
|
||||
* <xsd:enumeration value="notEqual"/>
|
||||
* <xsd:enumeration value="greaterThanOrEqual"/>
|
||||
* <xsd:enumeration value="greaterThan"/>
|
||||
*/
|
||||
const AUTOFILTER_COLUMN_RULE_EQUAL = 'equal';
|
||||
const AUTOFILTER_COLUMN_RULE_NOTEQUAL = 'notEqual';
|
||||
const AUTOFILTER_COLUMN_RULE_GREATERTHAN = 'greaterThan';
|
||||
const AUTOFILTER_COLUMN_RULE_GREATERTHANOREQUAL = 'greaterThanOrEqual';
|
||||
const AUTOFILTER_COLUMN_RULE_LESSTHAN = 'lessThan';
|
||||
const AUTOFILTER_COLUMN_RULE_LESSTHANOREQUAL = 'lessThanOrEqual';
|
||||
|
||||
private static $operators = array(
|
||||
self::AUTOFILTER_COLUMN_RULE_EQUAL,
|
||||
self::AUTOFILTER_COLUMN_RULE_NOTEQUAL,
|
||||
self::AUTOFILTER_COLUMN_RULE_GREATERTHAN,
|
||||
self::AUTOFILTER_COLUMN_RULE_GREATERTHANOREQUAL,
|
||||
self::AUTOFILTER_COLUMN_RULE_LESSTHAN,
|
||||
self::AUTOFILTER_COLUMN_RULE_LESSTHANOREQUAL,
|
||||
);
|
||||
|
||||
const AUTOFILTER_COLUMN_RULE_TOPTEN_BY_VALUE = 'byValue';
|
||||
const AUTOFILTER_COLUMN_RULE_TOPTEN_PERCENT = 'byPercent';
|
||||
|
||||
private static $topTenValue = array(
|
||||
self::AUTOFILTER_COLUMN_RULE_TOPTEN_BY_VALUE,
|
||||
self::AUTOFILTER_COLUMN_RULE_TOPTEN_PERCENT,
|
||||
);
|
||||
|
||||
const AUTOFILTER_COLUMN_RULE_TOPTEN_TOP = 'top';
|
||||
const AUTOFILTER_COLUMN_RULE_TOPTEN_BOTTOM = 'bottom';
|
||||
|
||||
private static $topTenType = array(
|
||||
self::AUTOFILTER_COLUMN_RULE_TOPTEN_TOP,
|
||||
self::AUTOFILTER_COLUMN_RULE_TOPTEN_BOTTOM,
|
||||
);
|
||||
|
||||
|
||||
/* Rule Operators (Numeric, Boolean etc) */
|
||||
// const AUTOFILTER_COLUMN_RULE_BETWEEN = 'between'; // greaterThanOrEqual 1 && lessThanOrEqual 2
|
||||
/* Rule Operators (Numeric Special) which are translated to standard numeric operators with calculated values */
|
||||
// const AUTOFILTER_COLUMN_RULE_TOPTEN = 'topTen'; // greaterThan calculated value
|
||||
// const AUTOFILTER_COLUMN_RULE_TOPTENPERCENT = 'topTenPercent'; // greaterThan calculated value
|
||||
// const AUTOFILTER_COLUMN_RULE_ABOVEAVERAGE = 'aboveAverage'; // Value is calculated as the average
|
||||
// const AUTOFILTER_COLUMN_RULE_BELOWAVERAGE = 'belowAverage'; // Value is calculated as the average
|
||||
/* Rule Operators (String) which are set as wild-carded values */
|
||||
// const AUTOFILTER_COLUMN_RULE_BEGINSWITH = 'beginsWith'; // A*
|
||||
// const AUTOFILTER_COLUMN_RULE_ENDSWITH = 'endsWith'; // *Z
|
||||
// const AUTOFILTER_COLUMN_RULE_CONTAINS = 'contains'; // *B*
|
||||
// const AUTOFILTER_COLUMN_RULE_DOESNTCONTAIN = 'notEqual'; // notEqual *B*
|
||||
/* Rule Operators (Date Special) which are translated to standard numeric operators with calculated values */
|
||||
// const AUTOFILTER_COLUMN_RULE_BEFORE = 'lessThan';
|
||||
// const AUTOFILTER_COLUMN_RULE_AFTER = 'greaterThan';
|
||||
// const AUTOFILTER_COLUMN_RULE_YESTERDAY = 'yesterday';
|
||||
// const AUTOFILTER_COLUMN_RULE_TODAY = 'today';
|
||||
// const AUTOFILTER_COLUMN_RULE_TOMORROW = 'tomorrow';
|
||||
// const AUTOFILTER_COLUMN_RULE_LASTWEEK = 'lastWeek';
|
||||
// const AUTOFILTER_COLUMN_RULE_THISWEEK = 'thisWeek';
|
||||
// const AUTOFILTER_COLUMN_RULE_NEXTWEEK = 'nextWeek';
|
||||
// const AUTOFILTER_COLUMN_RULE_LASTMONTH = 'lastMonth';
|
||||
// const AUTOFILTER_COLUMN_RULE_THISMONTH = 'thisMonth';
|
||||
// const AUTOFILTER_COLUMN_RULE_NEXTMONTH = 'nextMonth';
|
||||
// const AUTOFILTER_COLUMN_RULE_LASTQUARTER = 'lastQuarter';
|
||||
// const AUTOFILTER_COLUMN_RULE_THISQUARTER = 'thisQuarter';
|
||||
// const AUTOFILTER_COLUMN_RULE_NEXTQUARTER = 'nextQuarter';
|
||||
// const AUTOFILTER_COLUMN_RULE_LASTYEAR = 'lastYear';
|
||||
// const AUTOFILTER_COLUMN_RULE_THISYEAR = 'thisYear';
|
||||
// const AUTOFILTER_COLUMN_RULE_NEXTYEAR = 'nextYear';
|
||||
// const AUTOFILTER_COLUMN_RULE_YEARTODATE = 'yearToDate'; // <dynamicFilter val="40909" type="yearToDate" maxVal="41113"/>
|
||||
// const AUTOFILTER_COLUMN_RULE_ALLDATESINMONTH = 'allDatesInMonth'; // <dynamicFilter type="M2"/> for Month/February
|
||||
// const AUTOFILTER_COLUMN_RULE_ALLDATESINQUARTER = 'allDatesInQuarter'; // <dynamicFilter type="Q2"/> for Quarter 2
|
||||
|
||||
/**
|
||||
* Autofilter Column
|
||||
*
|
||||
* @var PHPExcel_Worksheet_AutoFilter_Column
|
||||
*/
|
||||
private $parent = null;
|
||||
|
||||
|
||||
/**
|
||||
* Autofilter Rule Type
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $ruleType = self::AUTOFILTER_RULETYPE_FILTER;
|
||||
|
||||
|
||||
/**
|
||||
* Autofilter Rule Value
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $value = '';
|
||||
|
||||
/**
|
||||
* Autofilter Rule Operator
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $operator = self::AUTOFILTER_COLUMN_RULE_EQUAL;
|
||||
|
||||
/**
|
||||
* DateTimeGrouping Group Value
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $grouping = '';
|
||||
|
||||
|
||||
/**
|
||||
* Create a new PHPExcel_Worksheet_AutoFilter_Column_Rule
|
||||
*
|
||||
* @param PHPExcel_Worksheet_AutoFilter_Column $pParent
|
||||
*/
|
||||
public function __construct(PHPExcel_Worksheet_AutoFilter_Column $pParent = null)
|
||||
{
|
||||
$this->parent = $pParent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get AutoFilter Rule Type
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getRuleType()
|
||||
{
|
||||
return $this->ruleType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set AutoFilter Rule Type
|
||||
*
|
||||
* @param string $pRuleType
|
||||
* @throws PHPExcel_Exception
|
||||
* @return PHPExcel_Worksheet_AutoFilter_Column
|
||||
*/
|
||||
public function setRuleType($pRuleType = self::AUTOFILTER_RULETYPE_FILTER)
|
||||
{
|
||||
if (!in_array($pRuleType, self::$ruleTypes)) {
|
||||
throw new PHPExcel_Exception('Invalid rule type for column AutoFilter Rule.');
|
||||
}
|
||||
|
||||
$this->ruleType = $pRuleType;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get AutoFilter Rule Value
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getValue()
|
||||
{
|
||||
return $this->value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set AutoFilter Rule Value
|
||||
*
|
||||
* @param string|string[] $pValue
|
||||
* @throws PHPExcel_Exception
|
||||
* @return PHPExcel_Worksheet_AutoFilter_Column_Rule
|
||||
*/
|
||||
public function setValue($pValue = '')
|
||||
{
|
||||
if (is_array($pValue)) {
|
||||
$grouping = -1;
|
||||
foreach ($pValue as $key => $value) {
|
||||
// Validate array entries
|
||||
if (!in_array($key, self::$dateTimeGroups)) {
|
||||
// Remove any invalid entries from the value array
|
||||
unset($pValue[$key]);
|
||||
} else {
|
||||
// Work out what the dateTime grouping will be
|
||||
$grouping = max($grouping, array_search($key, self::$dateTimeGroups));
|
||||
}
|
||||
}
|
||||
if (count($pValue) == 0) {
|
||||
throw new PHPExcel_Exception('Invalid rule value for column AutoFilter Rule.');
|
||||
}
|
||||
// Set the dateTime grouping that we've anticipated
|
||||
$this->setGrouping(self::$dateTimeGroups[$grouping]);
|
||||
}
|
||||
$this->value = $pValue;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get AutoFilter Rule Operator
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getOperator()
|
||||
{
|
||||
return $this->operator;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set AutoFilter Rule Operator
|
||||
*
|
||||
* @param string $pOperator
|
||||
* @throws PHPExcel_Exception
|
||||
* @return PHPExcel_Worksheet_AutoFilter_Column_Rule
|
||||
*/
|
||||
public function setOperator($pOperator = self::AUTOFILTER_COLUMN_RULE_EQUAL)
|
||||
{
|
||||
if (empty($pOperator)) {
|
||||
$pOperator = self::AUTOFILTER_COLUMN_RULE_EQUAL;
|
||||
}
|
||||
if ((!in_array($pOperator, self::$operators)) &&
|
||||
(!in_array($pOperator, self::$topTenValue))) {
|
||||
throw new PHPExcel_Exception('Invalid operator for column AutoFilter Rule.');
|
||||
}
|
||||
$this->operator = $pOperator;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get AutoFilter Rule Grouping
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getGrouping()
|
||||
{
|
||||
return $this->grouping;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set AutoFilter Rule Grouping
|
||||
*
|
||||
* @param string $pGrouping
|
||||
* @throws PHPExcel_Exception
|
||||
* @return PHPExcel_Worksheet_AutoFilter_Column_Rule
|
||||
*/
|
||||
public function setGrouping($pGrouping = null)
|
||||
{
|
||||
if (($pGrouping !== null) &&
|
||||
(!in_array($pGrouping, self::$dateTimeGroups)) &&
|
||||
(!in_array($pGrouping, self::$dynamicTypes)) &&
|
||||
(!in_array($pGrouping, self::$topTenType))) {
|
||||
throw new PHPExcel_Exception('Invalid rule type for column AutoFilter Rule.');
|
||||
}
|
||||
$this->grouping = $pGrouping;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set AutoFilter Rule
|
||||
*
|
||||
* @param string $pOperator
|
||||
* @param string|string[] $pValue
|
||||
* @param string $pGrouping
|
||||
* @throws PHPExcel_Exception
|
||||
* @return PHPExcel_Worksheet_AutoFilter_Column_Rule
|
||||
*/
|
||||
public function setRule($pOperator = self::AUTOFILTER_COLUMN_RULE_EQUAL, $pValue = '', $pGrouping = null)
|
||||
{
|
||||
$this->setOperator($pOperator);
|
||||
$this->setValue($pValue);
|
||||
// Only set grouping if it's been passed in as a user-supplied argument,
|
||||
// otherwise we're calculating it when we setValue() and don't want to overwrite that
|
||||
// If the user supplies an argumnet for grouping, then on their own head be it
|
||||
if ($pGrouping !== null) {
|
||||
$this->setGrouping($pGrouping);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get this Rule's AutoFilter Column Parent
|
||||
*
|
||||
* @return PHPExcel_Worksheet_AutoFilter_Column
|
||||
*/
|
||||
public function getParent()
|
||||
{
|
||||
return $this->parent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set this Rule's AutoFilter Column Parent
|
||||
*
|
||||
* @param PHPExcel_Worksheet_AutoFilter_Column
|
||||
* @return PHPExcel_Worksheet_AutoFilter_Column_Rule
|
||||
*/
|
||||
public function setParent(PHPExcel_Worksheet_AutoFilter_Column $pParent = null)
|
||||
{
|
||||
$this->parent = $pParent;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Implement PHP __clone to create a deep clone, not just a shallow copy.
|
||||
*/
|
||||
public function __clone()
|
||||
{
|
||||
$vars = get_object_vars($this);
|
||||
foreach ($vars as $key => $value) {
|
||||
if (is_object($value)) {
|
||||
if ($key == 'parent') {
|
||||
// Detach from autofilter column parent
|
||||
$this->$key = null;
|
||||
} else {
|
||||
$this->$key = clone $value;
|
||||
}
|
||||
} else {
|
||||
$this->$key = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
507
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/BaseDrawing.php
vendored
Normal file
507
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/BaseDrawing.php
vendored
Normal file
@@ -0,0 +1,507 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_BaseDrawing
|
||||
*
|
||||
* 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_BaseDrawing implements PHPExcel_IComparable
|
||||
{
|
||||
/**
|
||||
* Image counter
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
private static $imageCounter = 0;
|
||||
|
||||
/**
|
||||
* Image index
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
private $imageIndex = 0;
|
||||
|
||||
/**
|
||||
* Name
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $name;
|
||||
|
||||
/**
|
||||
* Description
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description;
|
||||
|
||||
/**
|
||||
* Worksheet
|
||||
*
|
||||
* @var PHPExcel_Worksheet
|
||||
*/
|
||||
protected $worksheet;
|
||||
|
||||
/**
|
||||
* Coordinates
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $coordinates;
|
||||
|
||||
/**
|
||||
* Offset X
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
protected $offsetX;
|
||||
|
||||
/**
|
||||
* Offset Y
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
protected $offsetY;
|
||||
|
||||
/**
|
||||
* Width
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
protected $width;
|
||||
|
||||
/**
|
||||
* Height
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
protected $height;
|
||||
|
||||
/**
|
||||
* Proportional resize
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
protected $resizeProportional;
|
||||
|
||||
/**
|
||||
* Rotation
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
protected $rotation;
|
||||
|
||||
/**
|
||||
* Shadow
|
||||
*
|
||||
* @var PHPExcel_Worksheet_Drawing_Shadow
|
||||
*/
|
||||
protected $shadow;
|
||||
|
||||
/**
|
||||
* Create a new PHPExcel_Worksheet_BaseDrawing
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
// Initialise values
|
||||
$this->name = '';
|
||||
$this->description = '';
|
||||
$this->worksheet = null;
|
||||
$this->coordinates = 'A1';
|
||||
$this->offsetX = 0;
|
||||
$this->offsetY = 0;
|
||||
$this->width = 0;
|
||||
$this->height = 0;
|
||||
$this->resizeProportional = true;
|
||||
$this->rotation = 0;
|
||||
$this->shadow = new PHPExcel_Worksheet_Drawing_Shadow();
|
||||
|
||||
// Set image index
|
||||
self::$imageCounter++;
|
||||
$this->imageIndex = self::$imageCounter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get image index
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getImageIndex()
|
||||
{
|
||||
return $this->imageIndex;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Name
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getName()
|
||||
{
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Name
|
||||
*
|
||||
* @param string $pValue
|
||||
* @return PHPExcel_Worksheet_BaseDrawing
|
||||
*/
|
||||
public function setName($pValue = '')
|
||||
{
|
||||
$this->name = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Description
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getDescription()
|
||||
{
|
||||
return $this->description;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Description
|
||||
*
|
||||
* @param string $pValue
|
||||
* @return PHPExcel_Worksheet_BaseDrawing
|
||||
*/
|
||||
public function setDescription($pValue = '')
|
||||
{
|
||||
$this->description = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Worksheet
|
||||
*
|
||||
* @return PHPExcel_Worksheet
|
||||
*/
|
||||
public function getWorksheet()
|
||||
{
|
||||
return $this->worksheet;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Worksheet
|
||||
*
|
||||
* @param PHPExcel_Worksheet $pValue
|
||||
* @param bool $pOverrideOld If a Worksheet has already been assigned, overwrite it and remove image from old Worksheet?
|
||||
* @throws PHPExcel_Exception
|
||||
* @return PHPExcel_Worksheet_BaseDrawing
|
||||
*/
|
||||
public function setWorksheet(PHPExcel_Worksheet $pValue = null, $pOverrideOld = false)
|
||||
{
|
||||
if (is_null($this->worksheet)) {
|
||||
// Add drawing to PHPExcel_Worksheet
|
||||
$this->worksheet = $pValue;
|
||||
$this->worksheet->getCell($this->coordinates);
|
||||
$this->worksheet->getDrawingCollection()->append($this);
|
||||
} else {
|
||||
if ($pOverrideOld) {
|
||||
// Remove drawing from old PHPExcel_Worksheet
|
||||
$iterator = $this->worksheet->getDrawingCollection()->getIterator();
|
||||
|
||||
while ($iterator->valid()) {
|
||||
if ($iterator->current()->getHashCode() == $this->getHashCode()) {
|
||||
$this->worksheet->getDrawingCollection()->offsetUnset($iterator->key());
|
||||
$this->worksheet = null;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Set new PHPExcel_Worksheet
|
||||
$this->setWorksheet($pValue);
|
||||
} else {
|
||||
throw new PHPExcel_Exception("A PHPExcel_Worksheet has already been assigned. Drawings can only exist on one PHPExcel_Worksheet.");
|
||||
}
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Coordinates
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getCoordinates()
|
||||
{
|
||||
return $this->coordinates;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Coordinates
|
||||
*
|
||||
* @param string $pValue
|
||||
* @return PHPExcel_Worksheet_BaseDrawing
|
||||
*/
|
||||
public function setCoordinates($pValue = 'A1')
|
||||
{
|
||||
$this->coordinates = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get OffsetX
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getOffsetX()
|
||||
{
|
||||
return $this->offsetX;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set OffsetX
|
||||
*
|
||||
* @param int $pValue
|
||||
* @return PHPExcel_Worksheet_BaseDrawing
|
||||
*/
|
||||
public function setOffsetX($pValue = 0)
|
||||
{
|
||||
$this->offsetX = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get OffsetY
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getOffsetY()
|
||||
{
|
||||
return $this->offsetY;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set OffsetY
|
||||
*
|
||||
* @param int $pValue
|
||||
* @return PHPExcel_Worksheet_BaseDrawing
|
||||
*/
|
||||
public function setOffsetY($pValue = 0)
|
||||
{
|
||||
$this->offsetY = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Width
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getWidth()
|
||||
{
|
||||
return $this->width;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Width
|
||||
*
|
||||
* @param int $pValue
|
||||
* @return PHPExcel_Worksheet_BaseDrawing
|
||||
*/
|
||||
public function setWidth($pValue = 0)
|
||||
{
|
||||
// Resize proportional?
|
||||
if ($this->resizeProportional && $pValue != 0) {
|
||||
$ratio = $this->height / ($this->width != 0 ? $this->width : 1);
|
||||
$this->height = round($ratio * $pValue);
|
||||
}
|
||||
|
||||
// Set width
|
||||
$this->width = $pValue;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Height
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getHeight()
|
||||
{
|
||||
return $this->height;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Height
|
||||
*
|
||||
* @param int $pValue
|
||||
* @return PHPExcel_Worksheet_BaseDrawing
|
||||
*/
|
||||
public function setHeight($pValue = 0)
|
||||
{
|
||||
// Resize proportional?
|
||||
if ($this->resizeProportional && $pValue != 0) {
|
||||
$ratio = $this->width / ($this->height != 0 ? $this->height : 1);
|
||||
$this->width = round($ratio * $pValue);
|
||||
}
|
||||
|
||||
// Set height
|
||||
$this->height = $pValue;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set width and height with proportional resize
|
||||
* Example:
|
||||
* <code>
|
||||
* $objDrawing->setResizeProportional(true);
|
||||
* $objDrawing->setWidthAndHeight(160,120);
|
||||
* </code>
|
||||
*
|
||||
* @author Vincent@luo MSN:kele_100@hotmail.com
|
||||
* @param int $width
|
||||
* @param int $height
|
||||
* @return PHPExcel_Worksheet_BaseDrawing
|
||||
*/
|
||||
public function setWidthAndHeight($width = 0, $height = 0)
|
||||
{
|
||||
$xratio = $width / ($this->width != 0 ? $this->width : 1);
|
||||
$yratio = $height / ($this->height != 0 ? $this->height : 1);
|
||||
if ($this->resizeProportional && !($width == 0 || $height == 0)) {
|
||||
if (($xratio * $this->height) < $height) {
|
||||
$this->height = ceil($xratio * $this->height);
|
||||
$this->width = $width;
|
||||
} else {
|
||||
$this->width = ceil($yratio * $this->width);
|
||||
$this->height = $height;
|
||||
}
|
||||
} else {
|
||||
$this->width = $width;
|
||||
$this->height = $height;
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get ResizeProportional
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function getResizeProportional()
|
||||
{
|
||||
return $this->resizeProportional;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set ResizeProportional
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_BaseDrawing
|
||||
*/
|
||||
public function setResizeProportional($pValue = true)
|
||||
{
|
||||
$this->resizeProportional = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Rotation
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getRotation()
|
||||
{
|
||||
return $this->rotation;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Rotation
|
||||
*
|
||||
* @param int $pValue
|
||||
* @return PHPExcel_Worksheet_BaseDrawing
|
||||
*/
|
||||
public function setRotation($pValue = 0)
|
||||
{
|
||||
$this->rotation = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Shadow
|
||||
*
|
||||
* @return PHPExcel_Worksheet_Drawing_Shadow
|
||||
*/
|
||||
public function getShadow()
|
||||
{
|
||||
return $this->shadow;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Shadow
|
||||
*
|
||||
* @param PHPExcel_Worksheet_Drawing_Shadow $pValue
|
||||
* @throws PHPExcel_Exception
|
||||
* @return PHPExcel_Worksheet_BaseDrawing
|
||||
*/
|
||||
public function setShadow(PHPExcel_Worksheet_Drawing_Shadow $pValue = null)
|
||||
{
|
||||
$this->shadow = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get hash code
|
||||
*
|
||||
* @return string Hash code
|
||||
*/
|
||||
public function getHashCode()
|
||||
{
|
||||
return md5(
|
||||
$this->name .
|
||||
$this->description .
|
||||
$this->worksheet->getHashCode() .
|
||||
$this->coordinates .
|
||||
$this->offsetX .
|
||||
$this->offsetY .
|
||||
$this->width .
|
||||
$this->height .
|
||||
$this->rotation .
|
||||
$this->shadow->getHashCode() .
|
||||
__CLASS__
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Implement PHP __clone to create a deep clone, not just a shallow copy.
|
||||
*/
|
||||
public function __clone()
|
||||
{
|
||||
$vars = get_object_vars($this);
|
||||
foreach ($vars as $key => $value) {
|
||||
if (is_object($value)) {
|
||||
$this->$key = clone $value;
|
||||
} else {
|
||||
$this->$key = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
88
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/CellIterator.php
vendored
Normal file
88
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/CellIterator.php
vendored
Normal file
@@ -0,0 +1,88 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_CellIterator
|
||||
*
|
||||
* 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##
|
||||
*/
|
||||
abstract class PHPExcel_Worksheet_CellIterator
|
||||
{
|
||||
/**
|
||||
* PHPExcel_Worksheet to iterate
|
||||
*
|
||||
* @var PHPExcel_Worksheet
|
||||
*/
|
||||
protected $subject;
|
||||
|
||||
/**
|
||||
* Current iterator position
|
||||
*
|
||||
* @var mixed
|
||||
*/
|
||||
protected $position = null;
|
||||
|
||||
/**
|
||||
* Iterate only existing cells
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
protected $onlyExistingCells = false;
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
public function __destruct()
|
||||
{
|
||||
unset($this->subject);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get loop only existing cells
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function getIterateOnlyExistingCells()
|
||||
{
|
||||
return $this->onlyExistingCells;
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate start/end values for "IterateOnlyExistingCells" mode, and adjust if necessary
|
||||
*
|
||||
* @throws PHPExcel_Exception
|
||||
*/
|
||||
abstract protected function adjustForExistingOnlyRange();
|
||||
|
||||
/**
|
||||
* Set the iterator to loop only existing cells
|
||||
*
|
||||
* @param boolean $value
|
||||
* @throws PHPExcel_Exception
|
||||
*/
|
||||
public function setIterateOnlyExistingCells($value = true)
|
||||
{
|
||||
$this->onlyExistingCells = (boolean) $value;
|
||||
|
||||
$this->adjustForExistingOnlyRange();
|
||||
}
|
||||
}
|
||||
86
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/Column.php
vendored
Normal file
86
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/Column.php
vendored
Normal file
@@ -0,0 +1,86 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_Column
|
||||
*
|
||||
* 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_Column
|
||||
{
|
||||
/**
|
||||
* PHPExcel_Worksheet
|
||||
*
|
||||
* @var PHPExcel_Worksheet
|
||||
*/
|
||||
private $parent;
|
||||
|
||||
/**
|
||||
* Column index
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $columnIndex;
|
||||
|
||||
/**
|
||||
* Create a new column
|
||||
*
|
||||
* @param PHPExcel_Worksheet $parent
|
||||
* @param string $columnIndex
|
||||
*/
|
||||
public function __construct(PHPExcel_Worksheet $parent = null, $columnIndex = 'A')
|
||||
{
|
||||
// Set parent and column index
|
||||
$this->parent = $parent;
|
||||
$this->columnIndex = $columnIndex;
|
||||
}
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
public function __destruct()
|
||||
{
|
||||
unset($this->parent);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get column index
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getColumnIndex()
|
||||
{
|
||||
return $this->columnIndex;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get cell iterator
|
||||
*
|
||||
* @param integer $startRow The row number at which to start iterating
|
||||
* @param integer $endRow Optionally, the row number at which to stop iterating
|
||||
* @return PHPExcel_Worksheet_CellIterator
|
||||
*/
|
||||
public function getCellIterator($startRow = 1, $endRow = null)
|
||||
{
|
||||
return new PHPExcel_Worksheet_ColumnCellIterator($this->parent, $this->columnIndex, $startRow, $endRow);
|
||||
}
|
||||
}
|
||||
216
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/ColumnCellIterator.php
vendored
Normal file
216
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/ColumnCellIterator.php
vendored
Normal file
@@ -0,0 +1,216 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_ColumnCellIterator
|
||||
*
|
||||
* 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_ColumnCellIterator extends PHPExcel_Worksheet_CellIterator implements Iterator
|
||||
{
|
||||
/**
|
||||
* Column index
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $columnIndex;
|
||||
|
||||
/**
|
||||
* Start position
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
protected $startRow = 1;
|
||||
|
||||
/**
|
||||
* End position
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
protected $endRow = 1;
|
||||
|
||||
/**
|
||||
* Create a new row iterator
|
||||
*
|
||||
* @param PHPExcel_Worksheet $subject The worksheet to iterate over
|
||||
* @param string $columnIndex The column that we want to iterate
|
||||
* @param integer $startRow The row number at which to start iterating
|
||||
* @param integer $endRow Optionally, the row number at which to stop iterating
|
||||
*/
|
||||
public function __construct(PHPExcel_Worksheet $subject = null, $columnIndex = 'A', $startRow = 1, $endRow = null)
|
||||
{
|
||||
// Set subject
|
||||
$this->subject = $subject;
|
||||
$this->columnIndex = PHPExcel_Cell::columnIndexFromString($columnIndex) - 1;
|
||||
$this->resetEnd($endRow);
|
||||
$this->resetStart($startRow);
|
||||
}
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
public function __destruct()
|
||||
{
|
||||
unset($this->subject);
|
||||
}
|
||||
|
||||
/**
|
||||
* (Re)Set the start row and the current row pointer
|
||||
*
|
||||
* @param integer $startRow The row number at which to start iterating
|
||||
* @return PHPExcel_Worksheet_ColumnCellIterator
|
||||
* @throws PHPExcel_Exception
|
||||
*/
|
||||
public function resetStart($startRow = 1)
|
||||
{
|
||||
$this->startRow = $startRow;
|
||||
$this->adjustForExistingOnlyRange();
|
||||
$this->seek($startRow);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* (Re)Set the end row
|
||||
*
|
||||
* @param integer $endRow The row number at which to stop iterating
|
||||
* @return PHPExcel_Worksheet_ColumnCellIterator
|
||||
* @throws PHPExcel_Exception
|
||||
*/
|
||||
public function resetEnd($endRow = null)
|
||||
{
|
||||
$this->endRow = ($endRow) ? $endRow : $this->subject->getHighestRow();
|
||||
$this->adjustForExistingOnlyRange();
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the row pointer to the selected row
|
||||
*
|
||||
* @param integer $row The row number to set the current pointer at
|
||||
* @return PHPExcel_Worksheet_ColumnCellIterator
|
||||
* @throws PHPExcel_Exception
|
||||
*/
|
||||
public function seek($row = 1)
|
||||
{
|
||||
if (($row < $this->startRow) || ($row > $this->endRow)) {
|
||||
throw new PHPExcel_Exception("Row $row is out of range ({$this->startRow} - {$this->endRow})");
|
||||
} elseif ($this->onlyExistingCells && !($this->subject->cellExistsByColumnAndRow($this->columnIndex, $row))) {
|
||||
throw new PHPExcel_Exception('In "IterateOnlyExistingCells" mode and Cell does not exist');
|
||||
}
|
||||
$this->position = $row;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Rewind the iterator to the starting row
|
||||
*/
|
||||
public function rewind()
|
||||
{
|
||||
$this->position = $this->startRow;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the current cell in this worksheet column
|
||||
*
|
||||
* @return PHPExcel_Worksheet_Row
|
||||
*/
|
||||
public function current()
|
||||
{
|
||||
return $this->subject->getCellByColumnAndRow($this->columnIndex, $this->position);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the current iterator key
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function key()
|
||||
{
|
||||
return $this->position;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the iterator to its next value
|
||||
*/
|
||||
public function next()
|
||||
{
|
||||
do {
|
||||
++$this->position;
|
||||
} while (($this->onlyExistingCells) &&
|
||||
(!$this->subject->cellExistsByColumnAndRow($this->columnIndex, $this->position)) &&
|
||||
($this->position <= $this->endRow));
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the iterator to its previous value
|
||||
*/
|
||||
public function prev()
|
||||
{
|
||||
if ($this->position <= $this->startRow) {
|
||||
throw new PHPExcel_Exception("Row is already at the beginning of range ({$this->startRow} - {$this->endRow})");
|
||||
}
|
||||
|
||||
do {
|
||||
--$this->position;
|
||||
} while (($this->onlyExistingCells) &&
|
||||
(!$this->subject->cellExistsByColumnAndRow($this->columnIndex, $this->position)) &&
|
||||
($this->position >= $this->startRow));
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicate if more rows exist in the worksheet range of rows that we're iterating
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function valid()
|
||||
{
|
||||
return $this->position <= $this->endRow;
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate start/end values for "IterateOnlyExistingCells" mode, and adjust if necessary
|
||||
*
|
||||
* @throws PHPExcel_Exception
|
||||
*/
|
||||
protected function adjustForExistingOnlyRange()
|
||||
{
|
||||
if ($this->onlyExistingCells) {
|
||||
while ((!$this->subject->cellExistsByColumnAndRow($this->columnIndex, $this->startRow)) &&
|
||||
($this->startRow <= $this->endRow)) {
|
||||
++$this->startRow;
|
||||
}
|
||||
if ($this->startRow > $this->endRow) {
|
||||
throw new PHPExcel_Exception('No cells exist within the specified range');
|
||||
}
|
||||
while ((!$this->subject->cellExistsByColumnAndRow($this->columnIndex, $this->endRow)) &&
|
||||
($this->endRow >= $this->startRow)) {
|
||||
--$this->endRow;
|
||||
}
|
||||
if ($this->endRow < $this->startRow) {
|
||||
throw new PHPExcel_Exception('No cells exist within the specified range');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
132
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/ColumnDimension.php
vendored
Normal file
132
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/ColumnDimension.php
vendored
Normal file
@@ -0,0 +1,132 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_ColumnDimension
|
||||
*
|
||||
* 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_ColumnDimension extends PHPExcel_Worksheet_Dimension
|
||||
{
|
||||
/**
|
||||
* Column index
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
private $columnIndex;
|
||||
|
||||
/**
|
||||
* Column width
|
||||
*
|
||||
* When this is set to a negative value, the column width should be ignored by IWriter
|
||||
*
|
||||
* @var double
|
||||
*/
|
||||
private $width = -1;
|
||||
|
||||
/**
|
||||
* Auto size?
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
private $autoSize = false;
|
||||
|
||||
/**
|
||||
* Create a new PHPExcel_Worksheet_ColumnDimension
|
||||
*
|
||||
* @param string $pIndex Character column index
|
||||
*/
|
||||
public function __construct($pIndex = 'A')
|
||||
{
|
||||
// Initialise values
|
||||
$this->columnIndex = $pIndex;
|
||||
|
||||
// set dimension as unformatted by default
|
||||
parent::__construct(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get ColumnIndex
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getColumnIndex()
|
||||
{
|
||||
return $this->columnIndex;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set ColumnIndex
|
||||
*
|
||||
* @param string $pValue
|
||||
* @return PHPExcel_Worksheet_ColumnDimension
|
||||
*/
|
||||
public function setColumnIndex($pValue)
|
||||
{
|
||||
$this->columnIndex = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Width
|
||||
*
|
||||
* @return double
|
||||
*/
|
||||
public function getWidth()
|
||||
{
|
||||
return $this->width;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Width
|
||||
*
|
||||
* @param double $pValue
|
||||
* @return PHPExcel_Worksheet_ColumnDimension
|
||||
*/
|
||||
public function setWidth($pValue = -1)
|
||||
{
|
||||
$this->width = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Auto Size
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function getAutoSize()
|
||||
{
|
||||
return $this->autoSize;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Auto Size
|
||||
*
|
||||
* @param bool $pValue
|
||||
* @return PHPExcel_Worksheet_ColumnDimension
|
||||
*/
|
||||
public function setAutoSize($pValue = false)
|
||||
{
|
||||
$this->autoSize = $pValue;
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
201
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/ColumnIterator.php
vendored
Normal file
201
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/ColumnIterator.php
vendored
Normal file
@@ -0,0 +1,201 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_ColumnIterator
|
||||
*
|
||||
* 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_ColumnIterator implements Iterator
|
||||
{
|
||||
/**
|
||||
* PHPExcel_Worksheet to iterate
|
||||
*
|
||||
* @var PHPExcel_Worksheet
|
||||
*/
|
||||
private $subject;
|
||||
|
||||
/**
|
||||
* Current iterator position
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
private $position = 0;
|
||||
|
||||
/**
|
||||
* Start position
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
private $startColumn = 0;
|
||||
|
||||
|
||||
/**
|
||||
* End position
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
private $endColumn = 0;
|
||||
|
||||
|
||||
/**
|
||||
* Create a new column iterator
|
||||
*
|
||||
* @param PHPExcel_Worksheet $subject The worksheet to iterate over
|
||||
* @param string $startColumn The column address at which to start iterating
|
||||
* @param string $endColumn Optionally, the column address at which to stop iterating
|
||||
*/
|
||||
public function __construct(PHPExcel_Worksheet $subject = null, $startColumn = 'A', $endColumn = null)
|
||||
{
|
||||
// Set subject
|
||||
$this->subject = $subject;
|
||||
$this->resetEnd($endColumn);
|
||||
$this->resetStart($startColumn);
|
||||
}
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
public function __destruct()
|
||||
{
|
||||
unset($this->subject);
|
||||
}
|
||||
|
||||
/**
|
||||
* (Re)Set the start column and the current column pointer
|
||||
*
|
||||
* @param integer $startColumn The column address at which to start iterating
|
||||
* @return PHPExcel_Worksheet_ColumnIterator
|
||||
* @throws PHPExcel_Exception
|
||||
*/
|
||||
public function resetStart($startColumn = 'A')
|
||||
{
|
||||
$startColumnIndex = PHPExcel_Cell::columnIndexFromString($startColumn) - 1;
|
||||
if ($startColumnIndex > PHPExcel_Cell::columnIndexFromString($this->subject->getHighestColumn()) - 1) {
|
||||
throw new PHPExcel_Exception("Start column ({$startColumn}) is beyond highest column ({$this->subject->getHighestColumn()})");
|
||||
}
|
||||
|
||||
$this->startColumn = $startColumnIndex;
|
||||
if ($this->endColumn < $this->startColumn) {
|
||||
$this->endColumn = $this->startColumn;
|
||||
}
|
||||
$this->seek($startColumn);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* (Re)Set the end column
|
||||
*
|
||||
* @param string $endColumn The column address at which to stop iterating
|
||||
* @return PHPExcel_Worksheet_ColumnIterator
|
||||
*/
|
||||
public function resetEnd($endColumn = null)
|
||||
{
|
||||
$endColumn = ($endColumn) ? $endColumn : $this->subject->getHighestColumn();
|
||||
$this->endColumn = PHPExcel_Cell::columnIndexFromString($endColumn) - 1;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the column pointer to the selected column
|
||||
*
|
||||
* @param string $column The column address to set the current pointer at
|
||||
* @return PHPExcel_Worksheet_ColumnIterator
|
||||
* @throws PHPExcel_Exception
|
||||
*/
|
||||
public function seek($column = 'A')
|
||||
{
|
||||
$column = PHPExcel_Cell::columnIndexFromString($column) - 1;
|
||||
if (($column < $this->startColumn) || ($column > $this->endColumn)) {
|
||||
throw new PHPExcel_Exception("Column $column is out of range ({$this->startColumn} - {$this->endColumn})");
|
||||
}
|
||||
$this->position = $column;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Rewind the iterator to the starting column
|
||||
*/
|
||||
public function rewind()
|
||||
{
|
||||
$this->position = $this->startColumn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the current column in this worksheet
|
||||
*
|
||||
* @return PHPExcel_Worksheet_Column
|
||||
*/
|
||||
public function current()
|
||||
{
|
||||
return new PHPExcel_Worksheet_Column($this->subject, PHPExcel_Cell::stringFromColumnIndex($this->position));
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the current iterator key
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function key()
|
||||
{
|
||||
return PHPExcel_Cell::stringFromColumnIndex($this->position);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the iterator to its next value
|
||||
*/
|
||||
public function next()
|
||||
{
|
||||
++$this->position;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the iterator to its previous value
|
||||
*
|
||||
* @throws PHPExcel_Exception
|
||||
*/
|
||||
public function prev()
|
||||
{
|
||||
if ($this->position <= $this->startColumn) {
|
||||
throw new PHPExcel_Exception(
|
||||
"Column is already at the beginning of range (" .
|
||||
PHPExcel_Cell::stringFromColumnIndex($this->endColumn) . " - " .
|
||||
PHPExcel_Cell::stringFromColumnIndex($this->endColumn) . ")"
|
||||
);
|
||||
}
|
||||
|
||||
--$this->position;
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicate if more columns exist in the worksheet range of columns that we're iterating
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function valid()
|
||||
{
|
||||
return $this->position <= $this->endColumn;
|
||||
}
|
||||
}
|
||||
178
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/Dimension.php
vendored
Normal file
178
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/Dimension.php
vendored
Normal file
@@ -0,0 +1,178 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_Dimension
|
||||
*
|
||||
* 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##
|
||||
*/
|
||||
abstract class PHPExcel_Worksheet_Dimension
|
||||
{
|
||||
/**
|
||||
* Visible?
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
private $visible = true;
|
||||
|
||||
/**
|
||||
* Outline level
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
private $outlineLevel = 0;
|
||||
|
||||
/**
|
||||
* Collapsed
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
private $collapsed = false;
|
||||
|
||||
/**
|
||||
* Index to cellXf. Null value means row has no explicit cellXf format.
|
||||
*
|
||||
* @var int|null
|
||||
*/
|
||||
private $xfIndex;
|
||||
|
||||
/**
|
||||
* Create a new PHPExcel_Worksheet_Dimension
|
||||
*
|
||||
* @param int $pIndex Numeric row index
|
||||
*/
|
||||
public function __construct($initialValue = null)
|
||||
{
|
||||
// set dimension as unformatted by default
|
||||
$this->xfIndex = $initialValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Visible
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function getVisible()
|
||||
{
|
||||
return $this->visible;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Visible
|
||||
*
|
||||
* @param bool $pValue
|
||||
* @return PHPExcel_Worksheet_Dimension
|
||||
*/
|
||||
public function setVisible($pValue = true)
|
||||
{
|
||||
$this->visible = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Outline Level
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getOutlineLevel()
|
||||
{
|
||||
return $this->outlineLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Outline Level
|
||||
*
|
||||
* Value must be between 0 and 7
|
||||
*
|
||||
* @param int $pValue
|
||||
* @throws PHPExcel_Exception
|
||||
* @return PHPExcel_Worksheet_Dimension
|
||||
*/
|
||||
public function setOutlineLevel($pValue)
|
||||
{
|
||||
if ($pValue < 0 || $pValue > 7) {
|
||||
throw new PHPExcel_Exception("Outline level must range between 0 and 7.");
|
||||
}
|
||||
|
||||
$this->outlineLevel = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Collapsed
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function getCollapsed()
|
||||
{
|
||||
return $this->collapsed;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Collapsed
|
||||
*
|
||||
* @param bool $pValue
|
||||
* @return PHPExcel_Worksheet_Dimension
|
||||
*/
|
||||
public function setCollapsed($pValue = true)
|
||||
{
|
||||
$this->collapsed = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get index to cellXf
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getXfIndex()
|
||||
{
|
||||
return $this->xfIndex;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set index to cellXf
|
||||
*
|
||||
* @param int $pValue
|
||||
* @return PHPExcel_Worksheet_Dimension
|
||||
*/
|
||||
public function setXfIndex($pValue = 0)
|
||||
{
|
||||
$this->xfIndex = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Implement PHP __clone to create a deep clone, not just a shallow copy.
|
||||
*/
|
||||
public function __clone()
|
||||
{
|
||||
$vars = get_object_vars($this);
|
||||
foreach ($vars as $key => $value) {
|
||||
if (is_object($value)) {
|
||||
$this->$key = clone $value;
|
||||
} else {
|
||||
$this->$key = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
147
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/Drawing.php
vendored
Normal file
147
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/Drawing.php
vendored
Normal file
@@ -0,0 +1,147 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_Drawing
|
||||
*
|
||||
* 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_Drawing
|
||||
* @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_Drawing extends PHPExcel_Worksheet_BaseDrawing implements PHPExcel_IComparable {
|
||||
|
||||
/**
|
||||
* Path
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $path;
|
||||
|
||||
/**
|
||||
* Create a new PHPExcel_Worksheet_Drawing
|
||||
*/
|
||||
public function __construct() {
|
||||
// Initialise values
|
||||
$this->path = '';
|
||||
|
||||
// Initialize parent
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Filename
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getFilename() {
|
||||
return basename($this->path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get indexed filename (using image index)
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getIndexedFilename() {
|
||||
$fileName = $this->getFilename();
|
||||
$fileName = str_replace(' ', '_', $fileName);
|
||||
return str_replace('.' . $this->getExtension(), '', $fileName) . $this->getImageIndex() . '.' . $this->getExtension();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Extension
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getExtension() {
|
||||
$exploded = explode(".", basename($this->path));
|
||||
return $exploded[count($exploded) - 1];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Path
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getPath() {
|
||||
return $this->path;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Path
|
||||
*
|
||||
* @param string $pValue File path
|
||||
* @param boolean $pVerifyFile Verify file
|
||||
* @throws PHPExcel_Exception
|
||||
* @return PHPExcel_Worksheet_Drawing
|
||||
*/
|
||||
public function setPath($pValue = '', $pVerifyFile = true) {
|
||||
if ($pVerifyFile) {
|
||||
if (file_exists($pValue)) {
|
||||
$this->path = $pValue;
|
||||
|
||||
if ($this->width == 0 && $this->height == 0) {
|
||||
try {
|
||||
if (is_array(getimagesize($pValue))) {
|
||||
// Get width/height
|
||||
list($this->width, $this->height) = getimagesize($pValue);
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
//throw new PHPExcel_Exception("File $pValue not found!");
|
||||
}
|
||||
} else {
|
||||
$this->path = $pValue;
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get hash code
|
||||
*
|
||||
* @return string Hash code
|
||||
*/
|
||||
public function getHashCode() {
|
||||
return md5(
|
||||
$this->path .
|
||||
parent::getHashCode() .
|
||||
__CLASS__
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Implement PHP __clone to create a deep clone, not just a shallow copy.
|
||||
*/
|
||||
public function __clone() {
|
||||
$vars = get_object_vars($this);
|
||||
foreach ($vars as $key => $value) {
|
||||
if (is_object($value)) {
|
||||
$this->$key = clone $value;
|
||||
} else {
|
||||
$this->$key = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
296
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/Drawing/Shadow.php
vendored
Normal file
296
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/Drawing/Shadow.php
vendored
Normal file
@@ -0,0 +1,296 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_Drawing_Shadow
|
||||
*
|
||||
* 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_Drawing
|
||||
* @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_Drawing_Shadow implements PHPExcel_IComparable
|
||||
{
|
||||
/* Shadow alignment */
|
||||
const SHADOW_BOTTOM = 'b';
|
||||
const SHADOW_BOTTOM_LEFT = 'bl';
|
||||
const SHADOW_BOTTOM_RIGHT = 'br';
|
||||
const SHADOW_CENTER = 'ctr';
|
||||
const SHADOW_LEFT = 'l';
|
||||
const SHADOW_TOP = 't';
|
||||
const SHADOW_TOP_LEFT = 'tl';
|
||||
const SHADOW_TOP_RIGHT = 'tr';
|
||||
|
||||
/**
|
||||
* Visible
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
private $visible;
|
||||
|
||||
/**
|
||||
* Blur radius
|
||||
*
|
||||
* Defaults to 6
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
private $blurRadius;
|
||||
|
||||
/**
|
||||
* Shadow distance
|
||||
*
|
||||
* Defaults to 2
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
private $distance;
|
||||
|
||||
/**
|
||||
* Shadow direction (in degrees)
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
private $direction;
|
||||
|
||||
/**
|
||||
* Shadow alignment
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
private $alignment;
|
||||
|
||||
/**
|
||||
* Color
|
||||
*
|
||||
* @var PHPExcel_Style_Color
|
||||
*/
|
||||
private $color;
|
||||
|
||||
/**
|
||||
* Alpha
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
private $alpha;
|
||||
|
||||
/**
|
||||
* Create a new PHPExcel_Worksheet_Drawing_Shadow
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
// Initialise values
|
||||
$this->visible = false;
|
||||
$this->blurRadius = 6;
|
||||
$this->distance = 2;
|
||||
$this->direction = 0;
|
||||
$this->alignment = PHPExcel_Worksheet_Drawing_Shadow::SHADOW_BOTTOM_RIGHT;
|
||||
$this->color = new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_BLACK);
|
||||
$this->alpha = 50;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Visible
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function getVisible()
|
||||
{
|
||||
return $this->visible;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Visible
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_Drawing_Shadow
|
||||
*/
|
||||
public function setVisible($pValue = false)
|
||||
{
|
||||
$this->visible = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Blur radius
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getBlurRadius()
|
||||
{
|
||||
return $this->blurRadius;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Blur radius
|
||||
*
|
||||
* @param int $pValue
|
||||
* @return PHPExcel_Worksheet_Drawing_Shadow
|
||||
*/
|
||||
public function setBlurRadius($pValue = 6)
|
||||
{
|
||||
$this->blurRadius = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Shadow distance
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getDistance()
|
||||
{
|
||||
return $this->distance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Shadow distance
|
||||
*
|
||||
* @param int $pValue
|
||||
* @return PHPExcel_Worksheet_Drawing_Shadow
|
||||
*/
|
||||
public function setDistance($pValue = 2)
|
||||
{
|
||||
$this->distance = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Shadow direction (in degrees)
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getDirection()
|
||||
{
|
||||
return $this->direction;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Shadow direction (in degrees)
|
||||
*
|
||||
* @param int $pValue
|
||||
* @return PHPExcel_Worksheet_Drawing_Shadow
|
||||
*/
|
||||
public function setDirection($pValue = 0)
|
||||
{
|
||||
$this->direction = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Shadow alignment
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getAlignment()
|
||||
{
|
||||
return $this->alignment;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Shadow alignment
|
||||
*
|
||||
* @param int $pValue
|
||||
* @return PHPExcel_Worksheet_Drawing_Shadow
|
||||
*/
|
||||
public function setAlignment($pValue = 0)
|
||||
{
|
||||
$this->alignment = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Color
|
||||
*
|
||||
* @return PHPExcel_Style_Color
|
||||
*/
|
||||
public function getColor()
|
||||
{
|
||||
return $this->color;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Color
|
||||
*
|
||||
* @param PHPExcel_Style_Color $pValue
|
||||
* @throws PHPExcel_Exception
|
||||
* @return PHPExcel_Worksheet_Drawing_Shadow
|
||||
*/
|
||||
public function setColor(PHPExcel_Style_Color $pValue = null)
|
||||
{
|
||||
$this->color = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Alpha
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getAlpha()
|
||||
{
|
||||
return $this->alpha;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Alpha
|
||||
*
|
||||
* @param int $pValue
|
||||
* @return PHPExcel_Worksheet_Drawing_Shadow
|
||||
*/
|
||||
public function setAlpha($pValue = 0)
|
||||
{
|
||||
$this->alpha = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get hash code
|
||||
*
|
||||
* @return string Hash code
|
||||
*/
|
||||
public function getHashCode()
|
||||
{
|
||||
return md5(
|
||||
($this->visible ? 't' : 'f') .
|
||||
$this->blurRadius .
|
||||
$this->distance .
|
||||
$this->direction .
|
||||
$this->alignment .
|
||||
$this->color->getHashCode() .
|
||||
$this->alpha .
|
||||
__CLASS__
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Implement PHP __clone to create a deep clone, not just a shallow copy.
|
||||
*/
|
||||
public function __clone()
|
||||
{
|
||||
$vars = get_object_vars($this);
|
||||
foreach ($vars as $key => $value) {
|
||||
if (is_object($value)) {
|
||||
$this->$key = clone $value;
|
||||
} else {
|
||||
$this->$key = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
494
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/HeaderFooter.php
vendored
Normal file
494
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/HeaderFooter.php
vendored
Normal file
@@ -0,0 +1,494 @@
|
||||
<?php
|
||||
/**
|
||||
* PHPExcel_Worksheet_HeaderFooter
|
||||
*
|
||||
* 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,241 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##
|
||||
*
|
||||
* <code>
|
||||
* Header/Footer Formatting Syntax taken from Office Open XML Part 4 - Markup Language Reference, page 1970:
|
||||
*
|
||||
* There are a number of formatting codes that can be written inline with the actual header / footer text, which
|
||||
* affect the formatting in the header or footer.
|
||||
*
|
||||
* Example: This example shows the text "Center Bold Header" on the first line (center section), and the date on
|
||||
* the second line (center section).
|
||||
* &CCenter &"-,Bold"Bold&"-,Regular"Header_x000A_&D
|
||||
*
|
||||
* General Rules:
|
||||
* There is no required order in which these codes must appear.
|
||||
*
|
||||
* The first occurrence of the following codes turns the formatting ON, the second occurrence turns it OFF again:
|
||||
* - strikethrough
|
||||
* - superscript
|
||||
* - subscript
|
||||
* Superscript and subscript cannot both be ON at same time. Whichever comes first wins and the other is ignored,
|
||||
* while the first is ON.
|
||||
* &L - code for "left section" (there are three header / footer locations, "left", "center", and "right"). When
|
||||
* two or more occurrences of this section marker exist, the contents from all markers are concatenated, in the
|
||||
* order of appearance, and placed into the left section.
|
||||
* &P - code for "current page #"
|
||||
* &N - code for "total pages"
|
||||
* &font size - code for "text font size", where font size is a font size in points.
|
||||
* &K - code for "text font color"
|
||||
* RGB Color is specified as RRGGBB
|
||||
* Theme Color is specifed as TTSNN where TT is the theme color Id, S is either "+" or "-" of the tint/shade
|
||||
* value, NN is the tint/shade value.
|
||||
* &S - code for "text strikethrough" on / off
|
||||
* &X - code for "text super script" on / off
|
||||
* &Y - code for "text subscript" on / off
|
||||
* &C - code for "center section". When two or more occurrences of this section marker exist, the contents
|
||||
* from all markers are concatenated, in the order of appearance, and placed into the center section.
|
||||
*
|
||||
* &D - code for "date"
|
||||
* &T - code for "time"
|
||||
* &G - code for "picture as background"
|
||||
* &U - code for "text single underline"
|
||||
* &E - code for "double underline"
|
||||
* &R - code for "right section". When two or more occurrences of this section marker exist, the contents
|
||||
* from all markers are concatenated, in the order of appearance, and placed into the right section.
|
||||
* &Z - code for "this workbook's file path"
|
||||
* &F - code for "this workbook's file name"
|
||||
* &A - code for "sheet tab name"
|
||||
* &+ - code for add to page #.
|
||||
* &- - code for subtract from page #.
|
||||
* &"font name,font type" - code for "text font name" and "text font type", where font name and font type
|
||||
* are strings specifying the name and type of the font, separated by a comma. When a hyphen appears in font
|
||||
* name, it means "none specified". Both of font name and font type can be localized values.
|
||||
* &"-,Bold" - code for "bold font style"
|
||||
* &B - also means "bold font style".
|
||||
* &"-,Regular" - code for "regular font style"
|
||||
* &"-,Italic" - code for "italic font style"
|
||||
* &I - also means "italic font style"
|
||||
* &"-,Bold Italic" code for "bold italic font style"
|
||||
* &O - code for "outline style"
|
||||
* &H - code for "shadow style"
|
||||
* </code>
|
||||
*
|
||||
*/
|
||||
class PHPExcel_Worksheet_HeaderFooter
|
||||
{
|
||||
/* Header/footer image location */
|
||||
const IMAGE_HEADER_LEFT = 'LH';
|
||||
const IMAGE_HEADER_CENTER = 'CH';
|
||||
const IMAGE_HEADER_RIGHT = 'RH';
|
||||
const IMAGE_FOOTER_LEFT = 'LF';
|
||||
const IMAGE_FOOTER_CENTER = 'CF';
|
||||
const IMAGE_FOOTER_RIGHT = 'RF';
|
||||
|
||||
/**
|
||||
* OddHeader
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $oddHeader = '';
|
||||
|
||||
/**
|
||||
* OddFooter
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $oddFooter = '';
|
||||
|
||||
/**
|
||||
* EvenHeader
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $evenHeader = '';
|
||||
|
||||
/**
|
||||
* EvenFooter
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $evenFooter = '';
|
||||
|
||||
/**
|
||||
* FirstHeader
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $firstHeader = '';
|
||||
|
||||
/**
|
||||
* FirstFooter
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $firstFooter = '';
|
||||
|
||||
/**
|
||||
* Different header for Odd/Even, defaults to false
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
private $differentOddEven = false;
|
||||
|
||||
/**
|
||||
* Different header for first page, defaults to false
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
private $differentFirst = false;
|
||||
|
||||
/**
|
||||
* Scale with document, defaults to true
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
private $scaleWithDocument = true;
|
||||
|
||||
/**
|
||||
* Align with margins, defaults to true
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
private $alignWithMargins = true;
|
||||
|
||||
/**
|
||||
* Header/footer images
|
||||
*
|
||||
* @var PHPExcel_Worksheet_HeaderFooterDrawing[]
|
||||
*/
|
||||
private $headerFooterImages = array();
|
||||
|
||||
/**
|
||||
* Create a new PHPExcel_Worksheet_HeaderFooter
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Get OddHeader
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getOddHeader()
|
||||
{
|
||||
return $this->oddHeader;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set OddHeader
|
||||
*
|
||||
* @param string $pValue
|
||||
* @return PHPExcel_Worksheet_HeaderFooter
|
||||
*/
|
||||
public function setOddHeader($pValue)
|
||||
{
|
||||
$this->oddHeader = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get OddFooter
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getOddFooter()
|
||||
{
|
||||
return $this->oddFooter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set OddFooter
|
||||
*
|
||||
* @param string $pValue
|
||||
* @return PHPExcel_Worksheet_HeaderFooter
|
||||
*/
|
||||
public function setOddFooter($pValue)
|
||||
{
|
||||
$this->oddFooter = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get EvenHeader
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getEvenHeader()
|
||||
{
|
||||
return $this->evenHeader;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set EvenHeader
|
||||
*
|
||||
* @param string $pValue
|
||||
* @return PHPExcel_Worksheet_HeaderFooter
|
||||
*/
|
||||
public function setEvenHeader($pValue)
|
||||
{
|
||||
$this->evenHeader = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get EvenFooter
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getEvenFooter()
|
||||
{
|
||||
return $this->evenFooter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set EvenFooter
|
||||
*
|
||||
* @param string $pValue
|
||||
* @return PHPExcel_Worksheet_HeaderFooter
|
||||
*/
|
||||
public function setEvenFooter($pValue)
|
||||
{
|
||||
$this->evenFooter = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get FirstHeader
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getFirstHeader()
|
||||
{
|
||||
return $this->firstHeader;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set FirstHeader
|
||||
*
|
||||
* @param string $pValue
|
||||
* @return PHPExcel_Worksheet_HeaderFooter
|
||||
*/
|
||||
public function setFirstHeader($pValue)
|
||||
{
|
||||
$this->firstHeader = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get FirstFooter
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getFirstFooter()
|
||||
{
|
||||
return $this->firstFooter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set FirstFooter
|
||||
*
|
||||
* @param string $pValue
|
||||
* @return PHPExcel_Worksheet_HeaderFooter
|
||||
*/
|
||||
public function setFirstFooter($pValue)
|
||||
{
|
||||
$this->firstFooter = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get DifferentOddEven
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function getDifferentOddEven()
|
||||
{
|
||||
return $this->differentOddEven;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set DifferentOddEven
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_HeaderFooter
|
||||
*/
|
||||
public function setDifferentOddEven($pValue = false)
|
||||
{
|
||||
$this->differentOddEven = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get DifferentFirst
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function getDifferentFirst()
|
||||
{
|
||||
return $this->differentFirst;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set DifferentFirst
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_HeaderFooter
|
||||
*/
|
||||
public function setDifferentFirst($pValue = false)
|
||||
{
|
||||
$this->differentFirst = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get ScaleWithDocument
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function getScaleWithDocument()
|
||||
{
|
||||
return $this->scaleWithDocument;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set ScaleWithDocument
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_HeaderFooter
|
||||
*/
|
||||
public function setScaleWithDocument($pValue = true)
|
||||
{
|
||||
$this->scaleWithDocument = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get AlignWithMargins
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function getAlignWithMargins()
|
||||
{
|
||||
return $this->alignWithMargins;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set AlignWithMargins
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_HeaderFooter
|
||||
*/
|
||||
public function setAlignWithMargins($pValue = true)
|
||||
{
|
||||
$this->alignWithMargins = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add header/footer image
|
||||
*
|
||||
* @param PHPExcel_Worksheet_HeaderFooterDrawing $image
|
||||
* @param string $location
|
||||
* @throws PHPExcel_Exception
|
||||
* @return PHPExcel_Worksheet_HeaderFooter
|
||||
*/
|
||||
public function addImage(PHPExcel_Worksheet_HeaderFooterDrawing $image = null, $location = self::IMAGE_HEADER_LEFT)
|
||||
{
|
||||
$this->headerFooterImages[$location] = $image;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove header/footer image
|
||||
*
|
||||
* @param string $location
|
||||
* @throws PHPExcel_Exception
|
||||
* @return PHPExcel_Worksheet_HeaderFooter
|
||||
*/
|
||||
public function removeImage($location = self::IMAGE_HEADER_LEFT)
|
||||
{
|
||||
if (isset($this->headerFooterImages[$location])) {
|
||||
unset($this->headerFooterImages[$location]);
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set header/footer images
|
||||
*
|
||||
* @param PHPExcel_Worksheet_HeaderFooterDrawing[] $images
|
||||
* @throws PHPExcel_Exception
|
||||
* @return PHPExcel_Worksheet_HeaderFooter
|
||||
*/
|
||||
public function setImages($images)
|
||||
{
|
||||
if (!is_array($images)) {
|
||||
throw new PHPExcel_Exception('Invalid parameter!');
|
||||
}
|
||||
|
||||
$this->headerFooterImages = $images;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get header/footer images
|
||||
*
|
||||
* @return PHPExcel_Worksheet_HeaderFooterDrawing[]
|
||||
*/
|
||||
public function getImages()
|
||||
{
|
||||
// Sort array
|
||||
$images = array();
|
||||
if (isset($this->headerFooterImages[self::IMAGE_HEADER_LEFT])) {
|
||||
$images[self::IMAGE_HEADER_LEFT] = $this->headerFooterImages[self::IMAGE_HEADER_LEFT];
|
||||
}
|
||||
if (isset($this->headerFooterImages[self::IMAGE_HEADER_CENTER])) {
|
||||
$images[self::IMAGE_HEADER_CENTER] = $this->headerFooterImages[self::IMAGE_HEADER_CENTER];
|
||||
}
|
||||
if (isset($this->headerFooterImages[self::IMAGE_HEADER_RIGHT])) {
|
||||
$images[self::IMAGE_HEADER_RIGHT] = $this->headerFooterImages[self::IMAGE_HEADER_RIGHT];
|
||||
}
|
||||
if (isset($this->headerFooterImages[self::IMAGE_FOOTER_LEFT])) {
|
||||
$images[self::IMAGE_FOOTER_LEFT] = $this->headerFooterImages[self::IMAGE_FOOTER_LEFT];
|
||||
}
|
||||
if (isset($this->headerFooterImages[self::IMAGE_FOOTER_CENTER])) {
|
||||
$images[self::IMAGE_FOOTER_CENTER] = $this->headerFooterImages[self::IMAGE_FOOTER_CENTER];
|
||||
}
|
||||
if (isset($this->headerFooterImages[self::IMAGE_FOOTER_RIGHT])) {
|
||||
$images[self::IMAGE_FOOTER_RIGHT] = $this->headerFooterImages[self::IMAGE_FOOTER_RIGHT];
|
||||
}
|
||||
$this->headerFooterImages = $images;
|
||||
|
||||
return $this->headerFooterImages;
|
||||
}
|
||||
|
||||
/**
|
||||
* Implement PHP __clone to create a deep clone, not just a shallow copy.
|
||||
*/
|
||||
public function __clone()
|
||||
{
|
||||
$vars = get_object_vars($this);
|
||||
foreach ($vars as $key => $value) {
|
||||
if (is_object($value)) {
|
||||
$this->$key = clone $value;
|
||||
} else {
|
||||
$this->$key = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
361
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/HeaderFooterDrawing.php
vendored
Normal file
361
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/HeaderFooterDrawing.php
vendored
Normal file
@@ -0,0 +1,361 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_HeaderFooterDrawing
|
||||
*
|
||||
* 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_HeaderFooterDrawing extends PHPExcel_Worksheet_Drawing implements PHPExcel_IComparable
|
||||
{
|
||||
/**
|
||||
* Path
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $path;
|
||||
|
||||
/**
|
||||
* Name
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $name;
|
||||
|
||||
/**
|
||||
* Offset X
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
protected $offsetX;
|
||||
|
||||
/**
|
||||
* Offset Y
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
protected $offsetY;
|
||||
|
||||
/**
|
||||
* Width
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
protected $width;
|
||||
|
||||
/**
|
||||
* Height
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
protected $height;
|
||||
|
||||
/**
|
||||
* Proportional resize
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
protected $resizeProportional;
|
||||
|
||||
/**
|
||||
* Create a new PHPExcel_Worksheet_HeaderFooterDrawing
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
// Initialise values
|
||||
$this->path = '';
|
||||
$this->name = '';
|
||||
$this->offsetX = 0;
|
||||
$this->offsetY = 0;
|
||||
$this->width = 0;
|
||||
$this->height = 0;
|
||||
$this->resizeProportional = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Name
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getName()
|
||||
{
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Name
|
||||
*
|
||||
* @param string $pValue
|
||||
* @return PHPExcel_Worksheet_HeaderFooterDrawing
|
||||
*/
|
||||
public function setName($pValue = '')
|
||||
{
|
||||
$this->name = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get OffsetX
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getOffsetX()
|
||||
{
|
||||
return $this->offsetX;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set OffsetX
|
||||
*
|
||||
* @param int $pValue
|
||||
* @return PHPExcel_Worksheet_HeaderFooterDrawing
|
||||
*/
|
||||
public function setOffsetX($pValue = 0)
|
||||
{
|
||||
$this->offsetX = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get OffsetY
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getOffsetY()
|
||||
{
|
||||
return $this->offsetY;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set OffsetY
|
||||
*
|
||||
* @param int $pValue
|
||||
* @return PHPExcel_Worksheet_HeaderFooterDrawing
|
||||
*/
|
||||
public function setOffsetY($pValue = 0)
|
||||
{
|
||||
$this->offsetY = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Width
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getWidth()
|
||||
{
|
||||
return $this->width;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Width
|
||||
*
|
||||
* @param int $pValue
|
||||
* @return PHPExcel_Worksheet_HeaderFooterDrawing
|
||||
*/
|
||||
public function setWidth($pValue = 0)
|
||||
{
|
||||
// Resize proportional?
|
||||
if ($this->resizeProportional && $pValue != 0) {
|
||||
$ratio = $this->width / $this->height;
|
||||
$this->height = round($ratio * $pValue);
|
||||
}
|
||||
|
||||
// Set width
|
||||
$this->width = $pValue;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Height
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getHeight()
|
||||
{
|
||||
return $this->height;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Height
|
||||
*
|
||||
* @param int $pValue
|
||||
* @return PHPExcel_Worksheet_HeaderFooterDrawing
|
||||
*/
|
||||
public function setHeight($pValue = 0)
|
||||
{
|
||||
// Resize proportional?
|
||||
if ($this->resizeProportional && $pValue != 0) {
|
||||
$ratio = $this->width / $this->height;
|
||||
$this->width = round($ratio * $pValue);
|
||||
}
|
||||
|
||||
// Set height
|
||||
$this->height = $pValue;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set width and height with proportional resize
|
||||
* Example:
|
||||
* <code>
|
||||
* $objDrawing->setResizeProportional(true);
|
||||
* $objDrawing->setWidthAndHeight(160,120);
|
||||
* </code>
|
||||
*
|
||||
* @author Vincent@luo MSN:kele_100@hotmail.com
|
||||
* @param int $width
|
||||
* @param int $height
|
||||
* @return PHPExcel_Worksheet_HeaderFooterDrawing
|
||||
*/
|
||||
public function setWidthAndHeight($width = 0, $height = 0)
|
||||
{
|
||||
$xratio = $width / $this->width;
|
||||
$yratio = $height / $this->height;
|
||||
if ($this->resizeProportional && !($width == 0 || $height == 0)) {
|
||||
if (($xratio * $this->height) < $height) {
|
||||
$this->height = ceil($xratio * $this->height);
|
||||
$this->width = $width;
|
||||
} else {
|
||||
$this->width = ceil($yratio * $this->width);
|
||||
$this->height = $height;
|
||||
}
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get ResizeProportional
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function getResizeProportional()
|
||||
{
|
||||
return $this->resizeProportional;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set ResizeProportional
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_HeaderFooterDrawing
|
||||
*/
|
||||
public function setResizeProportional($pValue = true)
|
||||
{
|
||||
$this->resizeProportional = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Filename
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getFilename()
|
||||
{
|
||||
return basename($this->path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Extension
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getExtension()
|
||||
{
|
||||
$parts = explode(".", basename($this->path));
|
||||
return end($parts);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Path
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getPath()
|
||||
{
|
||||
return $this->path;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Path
|
||||
*
|
||||
* @param string $pValue File path
|
||||
* @param boolean $pVerifyFile Verify file
|
||||
* @throws PHPExcel_Exception
|
||||
* @return PHPExcel_Worksheet_HeaderFooterDrawing
|
||||
*/
|
||||
public function setPath($pValue = '', $pVerifyFile = true)
|
||||
{
|
||||
if ($pVerifyFile) {
|
||||
if (file_exists($pValue)) {
|
||||
$this->path = $pValue;
|
||||
|
||||
if ($this->width == 0 && $this->height == 0) {
|
||||
// Get width/height
|
||||
list($this->width, $this->height) = getimagesize($pValue);
|
||||
}
|
||||
} else {
|
||||
throw new PHPExcel_Exception("File $pValue not found!");
|
||||
}
|
||||
} else {
|
||||
$this->path = $pValue;
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get hash code
|
||||
*
|
||||
* @return string Hash code
|
||||
*/
|
||||
public function getHashCode()
|
||||
{
|
||||
return md5(
|
||||
$this->path .
|
||||
$this->name .
|
||||
$this->offsetX .
|
||||
$this->offsetY .
|
||||
$this->width .
|
||||
$this->height .
|
||||
__CLASS__
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Implement PHP __clone to create a deep clone, not just a shallow copy.
|
||||
*/
|
||||
public function __clone()
|
||||
{
|
||||
$vars = get_object_vars($this);
|
||||
foreach ($vars as $key => $value) {
|
||||
if (is_object($value)) {
|
||||
$this->$key = clone $value;
|
||||
} else {
|
||||
$this->$key = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
201
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/MemoryDrawing.php
vendored
Normal file
201
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/MemoryDrawing.php
vendored
Normal file
@@ -0,0 +1,201 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_MemoryDrawing
|
||||
*
|
||||
* 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_MemoryDrawing extends PHPExcel_Worksheet_BaseDrawing implements PHPExcel_IComparable
|
||||
{
|
||||
/* Rendering functions */
|
||||
const RENDERING_DEFAULT = 'imagepng';
|
||||
const RENDERING_PNG = 'imagepng';
|
||||
const RENDERING_GIF = 'imagegif';
|
||||
const RENDERING_JPEG = 'imagejpeg';
|
||||
|
||||
/* MIME types */
|
||||
const MIMETYPE_DEFAULT = 'image/png';
|
||||
const MIMETYPE_PNG = 'image/png';
|
||||
const MIMETYPE_GIF = 'image/gif';
|
||||
const MIMETYPE_JPEG = 'image/jpeg';
|
||||
|
||||
/**
|
||||
* Image resource
|
||||
*
|
||||
* @var resource
|
||||
*/
|
||||
private $imageResource;
|
||||
|
||||
/**
|
||||
* Rendering function
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $renderingFunction;
|
||||
|
||||
/**
|
||||
* Mime type
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $mimeType;
|
||||
|
||||
/**
|
||||
* Unique name
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $uniqueName;
|
||||
|
||||
/**
|
||||
* Create a new PHPExcel_Worksheet_MemoryDrawing
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
// Initialise values
|
||||
$this->imageResource = null;
|
||||
$this->renderingFunction = self::RENDERING_DEFAULT;
|
||||
$this->mimeType = self::MIMETYPE_DEFAULT;
|
||||
$this->uniqueName = md5(rand(0, 9999). time() . rand(0, 9999));
|
||||
|
||||
// Initialize parent
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get image resource
|
||||
*
|
||||
* @return resource
|
||||
*/
|
||||
public function getImageResource()
|
||||
{
|
||||
return $this->imageResource;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set image resource
|
||||
*
|
||||
* @param $value resource
|
||||
* @return PHPExcel_Worksheet_MemoryDrawing
|
||||
*/
|
||||
public function setImageResource($value = null)
|
||||
{
|
||||
$this->imageResource = $value;
|
||||
|
||||
if (!is_null($this->imageResource)) {
|
||||
// Get width/height
|
||||
$this->width = imagesx($this->imageResource);
|
||||
$this->height = imagesy($this->imageResource);
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get rendering function
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getRenderingFunction()
|
||||
{
|
||||
return $this->renderingFunction;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set rendering function
|
||||
*
|
||||
* @param string $value
|
||||
* @return PHPExcel_Worksheet_MemoryDrawing
|
||||
*/
|
||||
public function setRenderingFunction($value = PHPExcel_Worksheet_MemoryDrawing::RENDERING_DEFAULT)
|
||||
{
|
||||
$this->renderingFunction = $value;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get mime type
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getMimeType()
|
||||
{
|
||||
return $this->mimeType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set mime type
|
||||
*
|
||||
* @param string $value
|
||||
* @return PHPExcel_Worksheet_MemoryDrawing
|
||||
*/
|
||||
public function setMimeType($value = PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_DEFAULT)
|
||||
{
|
||||
$this->mimeType = $value;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get indexed filename (using image index)
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getIndexedFilename()
|
||||
{
|
||||
$extension = strtolower($this->getMimeType());
|
||||
$extension = explode('/', $extension);
|
||||
$extension = $extension[1];
|
||||
|
||||
return $this->uniqueName . $this->getImageIndex() . '.' . $extension;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get hash code
|
||||
*
|
||||
* @return string Hash code
|
||||
*/
|
||||
public function getHashCode()
|
||||
{
|
||||
return md5(
|
||||
$this->renderingFunction .
|
||||
$this->mimeType .
|
||||
$this->uniqueName .
|
||||
parent::getHashCode() .
|
||||
__CLASS__
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Implement PHP __clone to create a deep clone, not just a shallow copy.
|
||||
*/
|
||||
public function __clone()
|
||||
{
|
||||
$vars = get_object_vars($this);
|
||||
foreach ($vars as $key => $value) {
|
||||
if (is_object($value)) {
|
||||
$this->$key = clone $value;
|
||||
} else {
|
||||
$this->$key = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
233
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/PageMargins.php
vendored
Normal file
233
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/PageMargins.php
vendored
Normal file
@@ -0,0 +1,233 @@
|
||||
<?php
|
||||
/**
|
||||
* PHPExcel
|
||||
*
|
||||
* 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##
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_PageMargins
|
||||
*
|
||||
* @category PHPExcel
|
||||
* @package PHPExcel_Worksheet
|
||||
* @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
*/
|
||||
class PHPExcel_Worksheet_PageMargins
|
||||
{
|
||||
/**
|
||||
* Left
|
||||
*
|
||||
* @var double
|
||||
*/
|
||||
private $left = 0.7;
|
||||
|
||||
/**
|
||||
* Right
|
||||
*
|
||||
* @var double
|
||||
*/
|
||||
private $right = 0.7;
|
||||
|
||||
/**
|
||||
* Top
|
||||
*
|
||||
* @var double
|
||||
*/
|
||||
private $top = 0.75;
|
||||
|
||||
/**
|
||||
* Bottom
|
||||
*
|
||||
* @var double
|
||||
*/
|
||||
private $bottom = 0.75;
|
||||
|
||||
/**
|
||||
* Header
|
||||
*
|
||||
* @var double
|
||||
*/
|
||||
private $header = 0.3;
|
||||
|
||||
/**
|
||||
* Footer
|
||||
*
|
||||
* @var double
|
||||
*/
|
||||
private $footer = 0.3;
|
||||
|
||||
/**
|
||||
* Create a new PHPExcel_Worksheet_PageMargins
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Left
|
||||
*
|
||||
* @return double
|
||||
*/
|
||||
public function getLeft()
|
||||
{
|
||||
return $this->left;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Left
|
||||
*
|
||||
* @param double $pValue
|
||||
* @return PHPExcel_Worksheet_PageMargins
|
||||
*/
|
||||
public function setLeft($pValue)
|
||||
{
|
||||
$this->left = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Right
|
||||
*
|
||||
* @return double
|
||||
*/
|
||||
public function getRight()
|
||||
{
|
||||
return $this->right;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Right
|
||||
*
|
||||
* @param double $pValue
|
||||
* @return PHPExcel_Worksheet_PageMargins
|
||||
*/
|
||||
public function setRight($pValue)
|
||||
{
|
||||
$this->right = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Top
|
||||
*
|
||||
* @return double
|
||||
*/
|
||||
public function getTop()
|
||||
{
|
||||
return $this->top;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Top
|
||||
*
|
||||
* @param double $pValue
|
||||
* @return PHPExcel_Worksheet_PageMargins
|
||||
*/
|
||||
public function setTop($pValue)
|
||||
{
|
||||
$this->top = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Bottom
|
||||
*
|
||||
* @return double
|
||||
*/
|
||||
public function getBottom()
|
||||
{
|
||||
return $this->bottom;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Bottom
|
||||
*
|
||||
* @param double $pValue
|
||||
* @return PHPExcel_Worksheet_PageMargins
|
||||
*/
|
||||
public function setBottom($pValue)
|
||||
{
|
||||
$this->bottom = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Header
|
||||
*
|
||||
* @return double
|
||||
*/
|
||||
public function getHeader()
|
||||
{
|
||||
return $this->header;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Header
|
||||
*
|
||||
* @param double $pValue
|
||||
* @return PHPExcel_Worksheet_PageMargins
|
||||
*/
|
||||
public function setHeader($pValue)
|
||||
{
|
||||
$this->header = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Footer
|
||||
*
|
||||
* @return double
|
||||
*/
|
||||
public function getFooter()
|
||||
{
|
||||
return $this->footer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Footer
|
||||
*
|
||||
* @param double $pValue
|
||||
* @return PHPExcel_Worksheet_PageMargins
|
||||
*/
|
||||
public function setFooter($pValue)
|
||||
{
|
||||
$this->footer = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Implement PHP __clone to create a deep clone, not just a shallow copy.
|
||||
*/
|
||||
public function __clone()
|
||||
{
|
||||
$vars = get_object_vars($this);
|
||||
foreach ($vars as $key => $value) {
|
||||
if (is_object($value)) {
|
||||
$this->$key = clone $value;
|
||||
} else {
|
||||
$this->$key = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
839
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/PageSetup.php
vendored
Normal file
839
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/PageSetup.php
vendored
Normal file
@@ -0,0 +1,839 @@
|
||||
<?php
|
||||
/**
|
||||
* PHPExcel
|
||||
*
|
||||
* 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##
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_PageSetup
|
||||
*
|
||||
* <code>
|
||||
* Paper size taken from Office Open XML Part 4 - Markup Language Reference, page 1988:
|
||||
*
|
||||
* 1 = Letter paper (8.5 in. by 11 in.)
|
||||
* 2 = Letter small paper (8.5 in. by 11 in.)
|
||||
* 3 = Tabloid paper (11 in. by 17 in.)
|
||||
* 4 = Ledger paper (17 in. by 11 in.)
|
||||
* 5 = Legal paper (8.5 in. by 14 in.)
|
||||
* 6 = Statement paper (5.5 in. by 8.5 in.)
|
||||
* 7 = Executive paper (7.25 in. by 10.5 in.)
|
||||
* 8 = A3 paper (297 mm by 420 mm)
|
||||
* 9 = A4 paper (210 mm by 297 mm)
|
||||
* 10 = A4 small paper (210 mm by 297 mm)
|
||||
* 11 = A5 paper (148 mm by 210 mm)
|
||||
* 12 = B4 paper (250 mm by 353 mm)
|
||||
* 13 = B5 paper (176 mm by 250 mm)
|
||||
* 14 = Folio paper (8.5 in. by 13 in.)
|
||||
* 15 = Quarto paper (215 mm by 275 mm)
|
||||
* 16 = Standard paper (10 in. by 14 in.)
|
||||
* 17 = Standard paper (11 in. by 17 in.)
|
||||
* 18 = Note paper (8.5 in. by 11 in.)
|
||||
* 19 = #9 envelope (3.875 in. by 8.875 in.)
|
||||
* 20 = #10 envelope (4.125 in. by 9.5 in.)
|
||||
* 21 = #11 envelope (4.5 in. by 10.375 in.)
|
||||
* 22 = #12 envelope (4.75 in. by 11 in.)
|
||||
* 23 = #14 envelope (5 in. by 11.5 in.)
|
||||
* 24 = C paper (17 in. by 22 in.)
|
||||
* 25 = D paper (22 in. by 34 in.)
|
||||
* 26 = E paper (34 in. by 44 in.)
|
||||
* 27 = DL envelope (110 mm by 220 mm)
|
||||
* 28 = C5 envelope (162 mm by 229 mm)
|
||||
* 29 = C3 envelope (324 mm by 458 mm)
|
||||
* 30 = C4 envelope (229 mm by 324 mm)
|
||||
* 31 = C6 envelope (114 mm by 162 mm)
|
||||
* 32 = C65 envelope (114 mm by 229 mm)
|
||||
* 33 = B4 envelope (250 mm by 353 mm)
|
||||
* 34 = B5 envelope (176 mm by 250 mm)
|
||||
* 35 = B6 envelope (176 mm by 125 mm)
|
||||
* 36 = Italy envelope (110 mm by 230 mm)
|
||||
* 37 = Monarch envelope (3.875 in. by 7.5 in.).
|
||||
* 38 = 6 3/4 envelope (3.625 in. by 6.5 in.)
|
||||
* 39 = US standard fanfold (14.875 in. by 11 in.)
|
||||
* 40 = German standard fanfold (8.5 in. by 12 in.)
|
||||
* 41 = German legal fanfold (8.5 in. by 13 in.)
|
||||
* 42 = ISO B4 (250 mm by 353 mm)
|
||||
* 43 = Japanese double postcard (200 mm by 148 mm)
|
||||
* 44 = Standard paper (9 in. by 11 in.)
|
||||
* 45 = Standard paper (10 in. by 11 in.)
|
||||
* 46 = Standard paper (15 in. by 11 in.)
|
||||
* 47 = Invite envelope (220 mm by 220 mm)
|
||||
* 50 = Letter extra paper (9.275 in. by 12 in.)
|
||||
* 51 = Legal extra paper (9.275 in. by 15 in.)
|
||||
* 52 = Tabloid extra paper (11.69 in. by 18 in.)
|
||||
* 53 = A4 extra paper (236 mm by 322 mm)
|
||||
* 54 = Letter transverse paper (8.275 in. by 11 in.)
|
||||
* 55 = A4 transverse paper (210 mm by 297 mm)
|
||||
* 56 = Letter extra transverse paper (9.275 in. by 12 in.)
|
||||
* 57 = SuperA/SuperA/A4 paper (227 mm by 356 mm)
|
||||
* 58 = SuperB/SuperB/A3 paper (305 mm by 487 mm)
|
||||
* 59 = Letter plus paper (8.5 in. by 12.69 in.)
|
||||
* 60 = A4 plus paper (210 mm by 330 mm)
|
||||
* 61 = A5 transverse paper (148 mm by 210 mm)
|
||||
* 62 = JIS B5 transverse paper (182 mm by 257 mm)
|
||||
* 63 = A3 extra paper (322 mm by 445 mm)
|
||||
* 64 = A5 extra paper (174 mm by 235 mm)
|
||||
* 65 = ISO B5 extra paper (201 mm by 276 mm)
|
||||
* 66 = A2 paper (420 mm by 594 mm)
|
||||
* 67 = A3 transverse paper (297 mm by 420 mm)
|
||||
* 68 = A3 extra transverse paper (322 mm by 445 mm)
|
||||
* </code>
|
||||
*
|
||||
* @category PHPExcel
|
||||
* @package PHPExcel_Worksheet
|
||||
* @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
*/
|
||||
class PHPExcel_Worksheet_PageSetup
|
||||
{
|
||||
/* Paper size */
|
||||
const PAPERSIZE_LETTER = 1;
|
||||
const PAPERSIZE_LETTER_SMALL = 2;
|
||||
const PAPERSIZE_TABLOID = 3;
|
||||
const PAPERSIZE_LEDGER = 4;
|
||||
const PAPERSIZE_LEGAL = 5;
|
||||
const PAPERSIZE_STATEMENT = 6;
|
||||
const PAPERSIZE_EXECUTIVE = 7;
|
||||
const PAPERSIZE_A3 = 8;
|
||||
const PAPERSIZE_A4 = 9;
|
||||
const PAPERSIZE_A4_SMALL = 10;
|
||||
const PAPERSIZE_A5 = 11;
|
||||
const PAPERSIZE_B4 = 12;
|
||||
const PAPERSIZE_B5 = 13;
|
||||
const PAPERSIZE_FOLIO = 14;
|
||||
const PAPERSIZE_QUARTO = 15;
|
||||
const PAPERSIZE_STANDARD_1 = 16;
|
||||
const PAPERSIZE_STANDARD_2 = 17;
|
||||
const PAPERSIZE_NOTE = 18;
|
||||
const PAPERSIZE_NO9_ENVELOPE = 19;
|
||||
const PAPERSIZE_NO10_ENVELOPE = 20;
|
||||
const PAPERSIZE_NO11_ENVELOPE = 21;
|
||||
const PAPERSIZE_NO12_ENVELOPE = 22;
|
||||
const PAPERSIZE_NO14_ENVELOPE = 23;
|
||||
const PAPERSIZE_C = 24;
|
||||
const PAPERSIZE_D = 25;
|
||||
const PAPERSIZE_E = 26;
|
||||
const PAPERSIZE_DL_ENVELOPE = 27;
|
||||
const PAPERSIZE_C5_ENVELOPE = 28;
|
||||
const PAPERSIZE_C3_ENVELOPE = 29;
|
||||
const PAPERSIZE_C4_ENVELOPE = 30;
|
||||
const PAPERSIZE_C6_ENVELOPE = 31;
|
||||
const PAPERSIZE_C65_ENVELOPE = 32;
|
||||
const PAPERSIZE_B4_ENVELOPE = 33;
|
||||
const PAPERSIZE_B5_ENVELOPE = 34;
|
||||
const PAPERSIZE_B6_ENVELOPE = 35;
|
||||
const PAPERSIZE_ITALY_ENVELOPE = 36;
|
||||
const PAPERSIZE_MONARCH_ENVELOPE = 37;
|
||||
const PAPERSIZE_6_3_4_ENVELOPE = 38;
|
||||
const PAPERSIZE_US_STANDARD_FANFOLD = 39;
|
||||
const PAPERSIZE_GERMAN_STANDARD_FANFOLD = 40;
|
||||
const PAPERSIZE_GERMAN_LEGAL_FANFOLD = 41;
|
||||
const PAPERSIZE_ISO_B4 = 42;
|
||||
const PAPERSIZE_JAPANESE_DOUBLE_POSTCARD = 43;
|
||||
const PAPERSIZE_STANDARD_PAPER_1 = 44;
|
||||
const PAPERSIZE_STANDARD_PAPER_2 = 45;
|
||||
const PAPERSIZE_STANDARD_PAPER_3 = 46;
|
||||
const PAPERSIZE_INVITE_ENVELOPE = 47;
|
||||
const PAPERSIZE_LETTER_EXTRA_PAPER = 48;
|
||||
const PAPERSIZE_LEGAL_EXTRA_PAPER = 49;
|
||||
const PAPERSIZE_TABLOID_EXTRA_PAPER = 50;
|
||||
const PAPERSIZE_A4_EXTRA_PAPER = 51;
|
||||
const PAPERSIZE_LETTER_TRANSVERSE_PAPER = 52;
|
||||
const PAPERSIZE_A4_TRANSVERSE_PAPER = 53;
|
||||
const PAPERSIZE_LETTER_EXTRA_TRANSVERSE_PAPER = 54;
|
||||
const PAPERSIZE_SUPERA_SUPERA_A4_PAPER = 55;
|
||||
const PAPERSIZE_SUPERB_SUPERB_A3_PAPER = 56;
|
||||
const PAPERSIZE_LETTER_PLUS_PAPER = 57;
|
||||
const PAPERSIZE_A4_PLUS_PAPER = 58;
|
||||
const PAPERSIZE_A5_TRANSVERSE_PAPER = 59;
|
||||
const PAPERSIZE_JIS_B5_TRANSVERSE_PAPER = 60;
|
||||
const PAPERSIZE_A3_EXTRA_PAPER = 61;
|
||||
const PAPERSIZE_A5_EXTRA_PAPER = 62;
|
||||
const PAPERSIZE_ISO_B5_EXTRA_PAPER = 63;
|
||||
const PAPERSIZE_A2_PAPER = 64;
|
||||
const PAPERSIZE_A3_TRANSVERSE_PAPER = 65;
|
||||
const PAPERSIZE_A3_EXTRA_TRANSVERSE_PAPER = 66;
|
||||
|
||||
/* Page orientation */
|
||||
const ORIENTATION_DEFAULT = 'default';
|
||||
const ORIENTATION_LANDSCAPE = 'landscape';
|
||||
const ORIENTATION_PORTRAIT = 'portrait';
|
||||
|
||||
/* Print Range Set Method */
|
||||
const SETPRINTRANGE_OVERWRITE = 'O';
|
||||
const SETPRINTRANGE_INSERT = 'I';
|
||||
|
||||
|
||||
/**
|
||||
* Paper size
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
private $paperSize = PHPExcel_Worksheet_PageSetup::PAPERSIZE_LETTER;
|
||||
|
||||
/**
|
||||
* Orientation
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $orientation = PHPExcel_Worksheet_PageSetup::ORIENTATION_DEFAULT;
|
||||
|
||||
/**
|
||||
* Scale (Print Scale)
|
||||
*
|
||||
* Print scaling. Valid values range from 10 to 400
|
||||
* This setting is overridden when fitToWidth and/or fitToHeight are in use
|
||||
*
|
||||
* @var int?
|
||||
*/
|
||||
private $scale = 100;
|
||||
|
||||
/**
|
||||
* Fit To Page
|
||||
* Whether scale or fitToWith / fitToHeight applies
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
private $fitToPage = false;
|
||||
|
||||
/**
|
||||
* Fit To Height
|
||||
* Number of vertical pages to fit on
|
||||
*
|
||||
* @var int?
|
||||
*/
|
||||
private $fitToHeight = 1;
|
||||
|
||||
/**
|
||||
* Fit To Width
|
||||
* Number of horizontal pages to fit on
|
||||
*
|
||||
* @var int?
|
||||
*/
|
||||
private $fitToWidth = 1;
|
||||
|
||||
/**
|
||||
* Columns to repeat at left
|
||||
*
|
||||
* @var array Containing start column and end column, empty array if option unset
|
||||
*/
|
||||
private $columnsToRepeatAtLeft = array('', '');
|
||||
|
||||
/**
|
||||
* Rows to repeat at top
|
||||
*
|
||||
* @var array Containing start row number and end row number, empty array if option unset
|
||||
*/
|
||||
private $rowsToRepeatAtTop = array(0, 0);
|
||||
|
||||
/**
|
||||
* Center page horizontally
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
private $horizontalCentered = false;
|
||||
|
||||
/**
|
||||
* Center page vertically
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
private $verticalCentered = false;
|
||||
|
||||
/**
|
||||
* Print area
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $printArea = null;
|
||||
|
||||
/**
|
||||
* First page number
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
private $firstPageNumber = null;
|
||||
|
||||
/**
|
||||
* Create a new PHPExcel_Worksheet_PageSetup
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Paper Size
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getPaperSize()
|
||||
{
|
||||
return $this->paperSize;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Paper Size
|
||||
*
|
||||
* @param int $pValue
|
||||
* @return PHPExcel_Worksheet_PageSetup
|
||||
*/
|
||||
public function setPaperSize($pValue = PHPExcel_Worksheet_PageSetup::PAPERSIZE_LETTER)
|
||||
{
|
||||
$this->paperSize = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Orientation
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getOrientation()
|
||||
{
|
||||
return $this->orientation;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Orientation
|
||||
*
|
||||
* @param string $pValue
|
||||
* @return PHPExcel_Worksheet_PageSetup
|
||||
*/
|
||||
public function setOrientation($pValue = PHPExcel_Worksheet_PageSetup::ORIENTATION_DEFAULT)
|
||||
{
|
||||
$this->orientation = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Scale
|
||||
*
|
||||
* @return int?
|
||||
*/
|
||||
public function getScale()
|
||||
{
|
||||
return $this->scale;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Scale
|
||||
*
|
||||
* Print scaling. Valid values range from 10 to 400
|
||||
* This setting is overridden when fitToWidth and/or fitToHeight are in use
|
||||
*
|
||||
* @param int? $pValue
|
||||
* @param boolean $pUpdate Update fitToPage so scaling applies rather than fitToHeight / fitToWidth
|
||||
* @return PHPExcel_Worksheet_PageSetup
|
||||
* @throws PHPExcel_Exception
|
||||
*/
|
||||
public function setScale($pValue = 100, $pUpdate = true)
|
||||
{
|
||||
// Microsoft Office Excel 2007 only allows setting a scale between 10 and 400 via the user interface,
|
||||
// but it is apparently still able to handle any scale >= 0, where 0 results in 100
|
||||
if (($pValue >= 0) || is_null($pValue)) {
|
||||
$this->scale = $pValue;
|
||||
if ($pUpdate) {
|
||||
$this->fitToPage = false;
|
||||
}
|
||||
} else {
|
||||
throw new PHPExcel_Exception("Scale must not be negative");
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Fit To Page
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function getFitToPage()
|
||||
{
|
||||
return $this->fitToPage;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Fit To Page
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_PageSetup
|
||||
*/
|
||||
public function setFitToPage($pValue = true)
|
||||
{
|
||||
$this->fitToPage = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Fit To Height
|
||||
*
|
||||
* @return int?
|
||||
*/
|
||||
public function getFitToHeight()
|
||||
{
|
||||
return $this->fitToHeight;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Fit To Height
|
||||
*
|
||||
* @param int? $pValue
|
||||
* @param boolean $pUpdate Update fitToPage so it applies rather than scaling
|
||||
* @return PHPExcel_Worksheet_PageSetup
|
||||
*/
|
||||
public function setFitToHeight($pValue = 1, $pUpdate = true)
|
||||
{
|
||||
$this->fitToHeight = $pValue;
|
||||
if ($pUpdate) {
|
||||
$this->fitToPage = true;
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Fit To Width
|
||||
*
|
||||
* @return int?
|
||||
*/
|
||||
public function getFitToWidth()
|
||||
{
|
||||
return $this->fitToWidth;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Fit To Width
|
||||
*
|
||||
* @param int? $pValue
|
||||
* @param boolean $pUpdate Update fitToPage so it applies rather than scaling
|
||||
* @return PHPExcel_Worksheet_PageSetup
|
||||
*/
|
||||
public function setFitToWidth($pValue = 1, $pUpdate = true)
|
||||
{
|
||||
$this->fitToWidth = $pValue;
|
||||
if ($pUpdate) {
|
||||
$this->fitToPage = true;
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Is Columns to repeat at left set?
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function isColumnsToRepeatAtLeftSet()
|
||||
{
|
||||
if (is_array($this->columnsToRepeatAtLeft)) {
|
||||
if ($this->columnsToRepeatAtLeft[0] != '' && $this->columnsToRepeatAtLeft[1] != '') {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Columns to repeat at left
|
||||
*
|
||||
* @return array Containing start column and end column, empty array if option unset
|
||||
*/
|
||||
public function getColumnsToRepeatAtLeft()
|
||||
{
|
||||
return $this->columnsToRepeatAtLeft;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Columns to repeat at left
|
||||
*
|
||||
* @param array $pValue Containing start column and end column, empty array if option unset
|
||||
* @return PHPExcel_Worksheet_PageSetup
|
||||
*/
|
||||
public function setColumnsToRepeatAtLeft($pValue = null)
|
||||
{
|
||||
if (is_array($pValue)) {
|
||||
$this->columnsToRepeatAtLeft = $pValue;
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Columns to repeat at left by start and end
|
||||
*
|
||||
* @param string $pStart
|
||||
* @param string $pEnd
|
||||
* @return PHPExcel_Worksheet_PageSetup
|
||||
*/
|
||||
public function setColumnsToRepeatAtLeftByStartAndEnd($pStart = 'A', $pEnd = 'A')
|
||||
{
|
||||
$this->columnsToRepeatAtLeft = array($pStart, $pEnd);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Is Rows to repeat at top set?
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function isRowsToRepeatAtTopSet()
|
||||
{
|
||||
if (is_array($this->rowsToRepeatAtTop)) {
|
||||
if ($this->rowsToRepeatAtTop[0] != 0 && $this->rowsToRepeatAtTop[1] != 0) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Rows to repeat at top
|
||||
*
|
||||
* @return array Containing start column and end column, empty array if option unset
|
||||
*/
|
||||
public function getRowsToRepeatAtTop()
|
||||
{
|
||||
return $this->rowsToRepeatAtTop;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Rows to repeat at top
|
||||
*
|
||||
* @param array $pValue Containing start column and end column, empty array if option unset
|
||||
* @return PHPExcel_Worksheet_PageSetup
|
||||
*/
|
||||
public function setRowsToRepeatAtTop($pValue = null)
|
||||
{
|
||||
if (is_array($pValue)) {
|
||||
$this->rowsToRepeatAtTop = $pValue;
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Rows to repeat at top by start and end
|
||||
*
|
||||
* @param int $pStart
|
||||
* @param int $pEnd
|
||||
* @return PHPExcel_Worksheet_PageSetup
|
||||
*/
|
||||
public function setRowsToRepeatAtTopByStartAndEnd($pStart = 1, $pEnd = 1)
|
||||
{
|
||||
$this->rowsToRepeatAtTop = array($pStart, $pEnd);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get center page horizontally
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function getHorizontalCentered()
|
||||
{
|
||||
return $this->horizontalCentered;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set center page horizontally
|
||||
*
|
||||
* @param bool $value
|
||||
* @return PHPExcel_Worksheet_PageSetup
|
||||
*/
|
||||
public function setHorizontalCentered($value = false)
|
||||
{
|
||||
$this->horizontalCentered = $value;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get center page vertically
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function getVerticalCentered()
|
||||
{
|
||||
return $this->verticalCentered;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set center page vertically
|
||||
*
|
||||
* @param bool $value
|
||||
* @return PHPExcel_Worksheet_PageSetup
|
||||
*/
|
||||
public function setVerticalCentered($value = false)
|
||||
{
|
||||
$this->verticalCentered = $value;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get print area
|
||||
*
|
||||
* @param int $index Identifier for a specific print area range if several ranges have been set
|
||||
* Default behaviour, or a index value of 0, will return all ranges as a comma-separated string
|
||||
* Otherwise, the specific range identified by the value of $index will be returned
|
||||
* Print areas are numbered from 1
|
||||
* @throws PHPExcel_Exception
|
||||
* @return string
|
||||
*/
|
||||
public function getPrintArea($index = 0)
|
||||
{
|
||||
if ($index == 0) {
|
||||
return $this->printArea;
|
||||
}
|
||||
$printAreas = explode(',', $this->printArea);
|
||||
if (isset($printAreas[$index-1])) {
|
||||
return $printAreas[$index-1];
|
||||
}
|
||||
throw new PHPExcel_Exception("Requested Print Area does not exist");
|
||||
}
|
||||
|
||||
/**
|
||||
* Is print area set?
|
||||
*
|
||||
* @param int $index Identifier for a specific print area range if several ranges have been set
|
||||
* Default behaviour, or an index value of 0, will identify whether any print range is set
|
||||
* Otherwise, existence of the range identified by the value of $index will be returned
|
||||
* Print areas are numbered from 1
|
||||
* @return boolean
|
||||
*/
|
||||
public function isPrintAreaSet($index = 0)
|
||||
{
|
||||
if ($index == 0) {
|
||||
return !is_null($this->printArea);
|
||||
}
|
||||
$printAreas = explode(',', $this->printArea);
|
||||
return isset($printAreas[$index-1]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear a print area
|
||||
*
|
||||
* @param int $index Identifier for a specific print area range if several ranges have been set
|
||||
* Default behaviour, or an index value of 0, will clear all print ranges that are set
|
||||
* Otherwise, the range identified by the value of $index will be removed from the series
|
||||
* Print areas are numbered from 1
|
||||
* @return PHPExcel_Worksheet_PageSetup
|
||||
*/
|
||||
public function clearPrintArea($index = 0)
|
||||
{
|
||||
if ($index == 0) {
|
||||
$this->printArea = null;
|
||||
} else {
|
||||
$printAreas = explode(',', $this->printArea);
|
||||
if (isset($printAreas[$index-1])) {
|
||||
unset($printAreas[$index-1]);
|
||||
$this->printArea = implode(',', $printAreas);
|
||||
}
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set print area. e.g. 'A1:D10' or 'A1:D10,G5:M20'
|
||||
*
|
||||
* @param string $value
|
||||
* @param int $index Identifier for a specific print area range allowing several ranges to be set
|
||||
* When the method is "O"verwrite, then a positive integer index will overwrite that indexed
|
||||
* entry in the print areas list; a negative index value will identify which entry to
|
||||
* overwrite working bacward through the print area to the list, with the last entry as -1.
|
||||
* Specifying an index value of 0, will overwrite <b>all</b> existing print ranges.
|
||||
* When the method is "I"nsert, then a positive index will insert after that indexed entry in
|
||||
* the print areas list, while a negative index will insert before the indexed entry.
|
||||
* Specifying an index value of 0, will always append the new print range at the end of the
|
||||
* list.
|
||||
* Print areas are numbered from 1
|
||||
* @param string $method Determines the method used when setting multiple print areas
|
||||
* Default behaviour, or the "O" method, overwrites existing print area
|
||||
* The "I" method, inserts the new print area before any specified index, or at the end of the list
|
||||
* @return PHPExcel_Worksheet_PageSetup
|
||||
* @throws PHPExcel_Exception
|
||||
*/
|
||||
public function setPrintArea($value, $index = 0, $method = self::SETPRINTRANGE_OVERWRITE)
|
||||
{
|
||||
if (strpos($value, '!') !== false) {
|
||||
throw new PHPExcel_Exception('Cell coordinate must not specify a worksheet.');
|
||||
} elseif (strpos($value, ':') === false) {
|
||||
throw new PHPExcel_Exception('Cell coordinate must be a range of cells.');
|
||||
} elseif (strpos($value, '$') !== false) {
|
||||
throw new PHPExcel_Exception('Cell coordinate must not be absolute.');
|
||||
}
|
||||
$value = strtoupper($value);
|
||||
|
||||
if ($method == self::SETPRINTRANGE_OVERWRITE) {
|
||||
if ($index == 0) {
|
||||
$this->printArea = $value;
|
||||
} else {
|
||||
$printAreas = explode(',', $this->printArea);
|
||||
if ($index < 0) {
|
||||
$index = count($printAreas) - abs($index) + 1;
|
||||
}
|
||||
if (($index <= 0) || ($index > count($printAreas))) {
|
||||
throw new PHPExcel_Exception('Invalid index for setting print range.');
|
||||
}
|
||||
$printAreas[$index-1] = $value;
|
||||
$this->printArea = implode(',', $printAreas);
|
||||
}
|
||||
} elseif ($method == self::SETPRINTRANGE_INSERT) {
|
||||
if ($index == 0) {
|
||||
$this->printArea .= ($this->printArea == '') ? $value : ','.$value;
|
||||
} else {
|
||||
$printAreas = explode(',', $this->printArea);
|
||||
if ($index < 0) {
|
||||
$index = abs($index) - 1;
|
||||
}
|
||||
if ($index > count($printAreas)) {
|
||||
throw new PHPExcel_Exception('Invalid index for setting print range.');
|
||||
}
|
||||
$printAreas = array_merge(array_slice($printAreas, 0, $index), array($value), array_slice($printAreas, $index));
|
||||
$this->printArea = implode(',', $printAreas);
|
||||
}
|
||||
} else {
|
||||
throw new PHPExcel_Exception('Invalid method for setting print range.');
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a new print area (e.g. 'A1:D10' or 'A1:D10,G5:M20') to the list of print areas
|
||||
*
|
||||
* @param string $value
|
||||
* @param int $index Identifier for a specific print area range allowing several ranges to be set
|
||||
* A positive index will insert after that indexed entry in the print areas list, while a
|
||||
* negative index will insert before the indexed entry.
|
||||
* Specifying an index value of 0, will always append the new print range at the end of the
|
||||
* list.
|
||||
* Print areas are numbered from 1
|
||||
* @return PHPExcel_Worksheet_PageSetup
|
||||
* @throws PHPExcel_Exception
|
||||
*/
|
||||
public function addPrintArea($value, $index = -1)
|
||||
{
|
||||
return $this->setPrintArea($value, $index, self::SETPRINTRANGE_INSERT);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set print area
|
||||
*
|
||||
* @param int $column1 Column 1
|
||||
* @param int $row1 Row 1
|
||||
* @param int $column2 Column 2
|
||||
* @param int $row2 Row 2
|
||||
* @param int $index Identifier for a specific print area range allowing several ranges to be set
|
||||
* When the method is "O"verwrite, then a positive integer index will overwrite that indexed
|
||||
* entry in the print areas list; a negative index value will identify which entry to
|
||||
* overwrite working bacward through the print area to the list, with the last entry as -1.
|
||||
* Specifying an index value of 0, will overwrite <b>all</b> existing print ranges.
|
||||
* When the method is "I"nsert, then a positive index will insert after that indexed entry in
|
||||
* the print areas list, while a negative index will insert before the indexed entry.
|
||||
* Specifying an index value of 0, will always append the new print range at the end of the
|
||||
* list.
|
||||
* Print areas are numbered from 1
|
||||
* @param string $method Determines the method used when setting multiple print areas
|
||||
* Default behaviour, or the "O" method, overwrites existing print area
|
||||
* The "I" method, inserts the new print area before any specified index, or at the end of the list
|
||||
* @return PHPExcel_Worksheet_PageSetup
|
||||
* @throws PHPExcel_Exception
|
||||
*/
|
||||
public function setPrintAreaByColumnAndRow($column1, $row1, $column2, $row2, $index = 0, $method = self::SETPRINTRANGE_OVERWRITE)
|
||||
{
|
||||
return $this->setPrintArea(
|
||||
PHPExcel_Cell::stringFromColumnIndex($column1) . $row1 . ':' . PHPExcel_Cell::stringFromColumnIndex($column2) . $row2,
|
||||
$index,
|
||||
$method
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a new print area to the list of print areas
|
||||
*
|
||||
* @param int $column1 Start Column for the print area
|
||||
* @param int $row1 Start Row for the print area
|
||||
* @param int $column2 End Column for the print area
|
||||
* @param int $row2 End Row for the print area
|
||||
* @param int $index Identifier for a specific print area range allowing several ranges to be set
|
||||
* A positive index will insert after that indexed entry in the print areas list, while a
|
||||
* negative index will insert before the indexed entry.
|
||||
* Specifying an index value of 0, will always append the new print range at the end of the
|
||||
* list.
|
||||
* Print areas are numbered from 1
|
||||
* @return PHPExcel_Worksheet_PageSetup
|
||||
* @throws PHPExcel_Exception
|
||||
*/
|
||||
public function addPrintAreaByColumnAndRow($column1, $row1, $column2, $row2, $index = -1)
|
||||
{
|
||||
return $this->setPrintArea(
|
||||
PHPExcel_Cell::stringFromColumnIndex($column1) . $row1 . ':' . PHPExcel_Cell::stringFromColumnIndex($column2) . $row2,
|
||||
$index,
|
||||
self::SETPRINTRANGE_INSERT
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get first page number
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getFirstPageNumber()
|
||||
{
|
||||
return $this->firstPageNumber;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set first page number
|
||||
*
|
||||
* @param int $value
|
||||
* @return PHPExcel_Worksheet_HeaderFooter
|
||||
*/
|
||||
public function setFirstPageNumber($value = null)
|
||||
{
|
||||
$this->firstPageNumber = $value;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset first page number
|
||||
*
|
||||
* @return PHPExcel_Worksheet_HeaderFooter
|
||||
*/
|
||||
public function resetFirstPageNumber()
|
||||
{
|
||||
return $this->setFirstPageNumber(null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Implement PHP __clone to create a deep clone, not just a shallow copy.
|
||||
*/
|
||||
public function __clone()
|
||||
{
|
||||
$vars = get_object_vars($this);
|
||||
foreach ($vars as $key => $value) {
|
||||
if (is_object($value)) {
|
||||
$this->$key = clone $value;
|
||||
} else {
|
||||
$this->$key = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
581
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/Protection.php
vendored
Normal file
581
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/Protection.php
vendored
Normal file
@@ -0,0 +1,581 @@
|
||||
<?php
|
||||
/**
|
||||
* PHPExcel
|
||||
*
|
||||
* 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##
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_Protection
|
||||
*
|
||||
* @category PHPExcel
|
||||
* @package PHPExcel_Worksheet
|
||||
* @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
*/
|
||||
class PHPExcel_Worksheet_Protection
|
||||
{
|
||||
/**
|
||||
* Sheet
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
private $sheet = false;
|
||||
|
||||
/**
|
||||
* Objects
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
private $objects = false;
|
||||
|
||||
/**
|
||||
* Scenarios
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
private $scenarios = false;
|
||||
|
||||
/**
|
||||
* Format cells
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
private $formatCells = false;
|
||||
|
||||
/**
|
||||
* Format columns
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
private $formatColumns = false;
|
||||
|
||||
/**
|
||||
* Format rows
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
private $formatRows = false;
|
||||
|
||||
/**
|
||||
* Insert columns
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
private $insertColumns = false;
|
||||
|
||||
/**
|
||||
* Insert rows
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
private $insertRows = false;
|
||||
|
||||
/**
|
||||
* Insert hyperlinks
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
private $insertHyperlinks = false;
|
||||
|
||||
/**
|
||||
* Delete columns
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
private $deleteColumns = false;
|
||||
|
||||
/**
|
||||
* Delete rows
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
private $deleteRows = false;
|
||||
|
||||
/**
|
||||
* Select locked cells
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
private $selectLockedCells = false;
|
||||
|
||||
/**
|
||||
* Sort
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
private $sort = false;
|
||||
|
||||
/**
|
||||
* AutoFilter
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
private $autoFilter = false;
|
||||
|
||||
/**
|
||||
* Pivot tables
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
private $pivotTables = false;
|
||||
|
||||
/**
|
||||
* Select unlocked cells
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
private $selectUnlockedCells = false;
|
||||
|
||||
/**
|
||||
* Password
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $password = '';
|
||||
|
||||
/**
|
||||
* Create a new PHPExcel_Worksheet_Protection
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Is some sort of protection enabled?
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function isProtectionEnabled()
|
||||
{
|
||||
return $this->sheet ||
|
||||
$this->objects ||
|
||||
$this->scenarios ||
|
||||
$this->formatCells ||
|
||||
$this->formatColumns ||
|
||||
$this->formatRows ||
|
||||
$this->insertColumns ||
|
||||
$this->insertRows ||
|
||||
$this->insertHyperlinks ||
|
||||
$this->deleteColumns ||
|
||||
$this->deleteRows ||
|
||||
$this->selectLockedCells ||
|
||||
$this->sort ||
|
||||
$this->autoFilter ||
|
||||
$this->pivotTables ||
|
||||
$this->selectUnlockedCells;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Sheet
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function getSheet()
|
||||
{
|
||||
return $this->sheet;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Sheet
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_Protection
|
||||
*/
|
||||
public function setSheet($pValue = false)
|
||||
{
|
||||
$this->sheet = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Objects
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function getObjects()
|
||||
{
|
||||
return $this->objects;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Objects
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_Protection
|
||||
*/
|
||||
public function setObjects($pValue = false)
|
||||
{
|
||||
$this->objects = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Scenarios
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function getScenarios()
|
||||
{
|
||||
return $this->scenarios;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Scenarios
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_Protection
|
||||
*/
|
||||
public function setScenarios($pValue = false)
|
||||
{
|
||||
$this->scenarios = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get FormatCells
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function getFormatCells()
|
||||
{
|
||||
return $this->formatCells;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set FormatCells
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_Protection
|
||||
*/
|
||||
public function setFormatCells($pValue = false)
|
||||
{
|
||||
$this->formatCells = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get FormatColumns
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function getFormatColumns()
|
||||
{
|
||||
return $this->formatColumns;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set FormatColumns
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_Protection
|
||||
*/
|
||||
public function setFormatColumns($pValue = false)
|
||||
{
|
||||
$this->formatColumns = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get FormatRows
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function getFormatRows()
|
||||
{
|
||||
return $this->formatRows;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set FormatRows
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_Protection
|
||||
*/
|
||||
public function setFormatRows($pValue = false)
|
||||
{
|
||||
$this->formatRows = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get InsertColumns
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function getInsertColumns()
|
||||
{
|
||||
return $this->insertColumns;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set InsertColumns
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_Protection
|
||||
*/
|
||||
public function setInsertColumns($pValue = false)
|
||||
{
|
||||
$this->insertColumns = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get InsertRows
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function getInsertRows()
|
||||
{
|
||||
return $this->insertRows;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set InsertRows
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_Protection
|
||||
*/
|
||||
public function setInsertRows($pValue = false)
|
||||
{
|
||||
$this->insertRows = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get InsertHyperlinks
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function getInsertHyperlinks()
|
||||
{
|
||||
return $this->insertHyperlinks;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set InsertHyperlinks
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_Protection
|
||||
*/
|
||||
public function setInsertHyperlinks($pValue = false)
|
||||
{
|
||||
$this->insertHyperlinks = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get DeleteColumns
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function getDeleteColumns()
|
||||
{
|
||||
return $this->deleteColumns;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set DeleteColumns
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_Protection
|
||||
*/
|
||||
public function setDeleteColumns($pValue = false)
|
||||
{
|
||||
$this->deleteColumns = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get DeleteRows
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function getDeleteRows()
|
||||
{
|
||||
return $this->deleteRows;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set DeleteRows
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_Protection
|
||||
*/
|
||||
public function setDeleteRows($pValue = false)
|
||||
{
|
||||
$this->deleteRows = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get SelectLockedCells
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function getSelectLockedCells()
|
||||
{
|
||||
return $this->selectLockedCells;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set SelectLockedCells
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_Protection
|
||||
*/
|
||||
public function setSelectLockedCells($pValue = false)
|
||||
{
|
||||
$this->selectLockedCells = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Sort
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function getSort()
|
||||
{
|
||||
return $this->sort;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Sort
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_Protection
|
||||
*/
|
||||
public function setSort($pValue = false)
|
||||
{
|
||||
$this->sort = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get AutoFilter
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function getAutoFilter()
|
||||
{
|
||||
return $this->autoFilter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set AutoFilter
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_Protection
|
||||
*/
|
||||
public function setAutoFilter($pValue = false)
|
||||
{
|
||||
$this->autoFilter = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get PivotTables
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function getPivotTables()
|
||||
{
|
||||
return $this->pivotTables;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set PivotTables
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_Protection
|
||||
*/
|
||||
public function setPivotTables($pValue = false)
|
||||
{
|
||||
$this->pivotTables = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get SelectUnlockedCells
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function getSelectUnlockedCells()
|
||||
{
|
||||
return $this->selectUnlockedCells;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set SelectUnlockedCells
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_Protection
|
||||
*/
|
||||
public function setSelectUnlockedCells($pValue = false)
|
||||
{
|
||||
$this->selectUnlockedCells = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Password (hashed)
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getPassword()
|
||||
{
|
||||
return $this->password;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Password
|
||||
*
|
||||
* @param string $pValue
|
||||
* @param boolean $pAlreadyHashed If the password has already been hashed, set this to true
|
||||
* @return PHPExcel_Worksheet_Protection
|
||||
*/
|
||||
public function setPassword($pValue = '', $pAlreadyHashed = false)
|
||||
{
|
||||
if (!$pAlreadyHashed) {
|
||||
$pValue = PHPExcel_Shared_PasswordHasher::hashPassword($pValue);
|
||||
}
|
||||
$this->password = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Implement PHP __clone to create a deep clone, not just a shallow copy.
|
||||
*/
|
||||
public function __clone()
|
||||
{
|
||||
$vars = get_object_vars($this);
|
||||
foreach ($vars as $key => $value) {
|
||||
if (is_object($value)) {
|
||||
$this->$key = clone $value;
|
||||
} else {
|
||||
$this->$key = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
86
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/Row.php
vendored
Normal file
86
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/Row.php
vendored
Normal file
@@ -0,0 +1,86 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_Row
|
||||
*
|
||||
* 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_Row
|
||||
{
|
||||
/**
|
||||
* PHPExcel_Worksheet
|
||||
*
|
||||
* @var PHPExcel_Worksheet
|
||||
*/
|
||||
private $parent;
|
||||
|
||||
/**
|
||||
* Row index
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
private $rowIndex = 0;
|
||||
|
||||
/**
|
||||
* Create a new row
|
||||
*
|
||||
* @param PHPExcel_Worksheet $parent
|
||||
* @param int $rowIndex
|
||||
*/
|
||||
public function __construct(PHPExcel_Worksheet $parent = null, $rowIndex = 1)
|
||||
{
|
||||
// Set parent and row index
|
||||
$this->parent = $parent;
|
||||
$this->rowIndex = $rowIndex;
|
||||
}
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
public function __destruct()
|
||||
{
|
||||
unset($this->parent);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get row index
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getRowIndex()
|
||||
{
|
||||
return $this->rowIndex;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get cell iterator
|
||||
*
|
||||
* @param string $startColumn The column address at which to start iterating
|
||||
* @param string $endColumn Optionally, the column address at which to stop iterating
|
||||
* @return PHPExcel_Worksheet_CellIterator
|
||||
*/
|
||||
public function getCellIterator($startColumn = 'A', $endColumn = null)
|
||||
{
|
||||
return new PHPExcel_Worksheet_RowCellIterator($this->parent, $this->rowIndex, $startColumn, $endColumn);
|
||||
}
|
||||
}
|
||||
225
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/RowCellIterator.php
vendored
Normal file
225
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/RowCellIterator.php
vendored
Normal file
@@ -0,0 +1,225 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_RowCellIterator
|
||||
*
|
||||
* 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_RowCellIterator extends PHPExcel_Worksheet_CellIterator implements Iterator
|
||||
{
|
||||
/**
|
||||
* Row index
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
protected $rowIndex;
|
||||
|
||||
/**
|
||||
* Start position
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
protected $startColumn = 0;
|
||||
|
||||
/**
|
||||
* End position
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
protected $endColumn = 0;
|
||||
|
||||
/**
|
||||
* Create a new column iterator
|
||||
*
|
||||
* @param PHPExcel_Worksheet $subject The worksheet to iterate over
|
||||
* @param integer $rowIndex The row that we want to iterate
|
||||
* @param string $startColumn The column address at which to start iterating
|
||||
* @param string $endColumn Optionally, the column address at which to stop iterating
|
||||
*/
|
||||
public function __construct(PHPExcel_Worksheet $subject = null, $rowIndex = 1, $startColumn = 'A', $endColumn = null)
|
||||
{
|
||||
// Set subject and row index
|
||||
$this->subject = $subject;
|
||||
$this->rowIndex = $rowIndex;
|
||||
$this->resetEnd($endColumn);
|
||||
$this->resetStart($startColumn);
|
||||
}
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
public function __destruct()
|
||||
{
|
||||
unset($this->subject);
|
||||
}
|
||||
|
||||
/**
|
||||
* (Re)Set the start column and the current column pointer
|
||||
*
|
||||
* @param integer $startColumn The column address at which to start iterating
|
||||
* @return PHPExcel_Worksheet_RowCellIterator
|
||||
* @throws PHPExcel_Exception
|
||||
*/
|
||||
public function resetStart($startColumn = 'A')
|
||||
{
|
||||
$startColumnIndex = PHPExcel_Cell::columnIndexFromString($startColumn) - 1;
|
||||
$this->startColumn = $startColumnIndex;
|
||||
$this->adjustForExistingOnlyRange();
|
||||
$this->seek(PHPExcel_Cell::stringFromColumnIndex($this->startColumn));
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* (Re)Set the end column
|
||||
*
|
||||
* @param string $endColumn The column address at which to stop iterating
|
||||
* @return PHPExcel_Worksheet_RowCellIterator
|
||||
* @throws PHPExcel_Exception
|
||||
*/
|
||||
public function resetEnd($endColumn = null)
|
||||
{
|
||||
$endColumn = ($endColumn) ? $endColumn : $this->subject->getHighestColumn();
|
||||
$this->endColumn = PHPExcel_Cell::columnIndexFromString($endColumn) - 1;
|
||||
$this->adjustForExistingOnlyRange();
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the column pointer to the selected column
|
||||
*
|
||||
* @param string $column The column address to set the current pointer at
|
||||
* @return PHPExcel_Worksheet_RowCellIterator
|
||||
* @throws PHPExcel_Exception
|
||||
*/
|
||||
public function seek($column = 'A')
|
||||
{
|
||||
$column = PHPExcel_Cell::columnIndexFromString($column) - 1;
|
||||
if (($column < $this->startColumn) || ($column > $this->endColumn)) {
|
||||
throw new PHPExcel_Exception("Column $column is out of range ({$this->startColumn} - {$this->endColumn})");
|
||||
} elseif ($this->onlyExistingCells && !($this->subject->cellExistsByColumnAndRow($column, $this->rowIndex))) {
|
||||
throw new PHPExcel_Exception('In "IterateOnlyExistingCells" mode and Cell does not exist');
|
||||
}
|
||||
$this->position = $column;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Rewind the iterator to the starting column
|
||||
*/
|
||||
public function rewind()
|
||||
{
|
||||
$this->position = $this->startColumn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the current cell in this worksheet row
|
||||
*
|
||||
* @return PHPExcel_Cell
|
||||
*/
|
||||
public function current()
|
||||
{
|
||||
return $this->subject->getCellByColumnAndRow($this->position, $this->rowIndex);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the current iterator key
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function key()
|
||||
{
|
||||
return PHPExcel_Cell::stringFromColumnIndex($this->position);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the iterator to its next value
|
||||
*/
|
||||
public function next()
|
||||
{
|
||||
do {
|
||||
++$this->position;
|
||||
} while (($this->onlyExistingCells) &&
|
||||
(!$this->subject->cellExistsByColumnAndRow($this->position, $this->rowIndex)) &&
|
||||
($this->position <= $this->endColumn));
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the iterator to its previous value
|
||||
*
|
||||
* @throws PHPExcel_Exception
|
||||
*/
|
||||
public function prev()
|
||||
{
|
||||
if ($this->position <= $this->startColumn) {
|
||||
throw new PHPExcel_Exception(
|
||||
"Column is already at the beginning of range (" .
|
||||
PHPExcel_Cell::stringFromColumnIndex($this->endColumn) . " - " .
|
||||
PHPExcel_Cell::stringFromColumnIndex($this->endColumn) . ")"
|
||||
);
|
||||
}
|
||||
|
||||
do {
|
||||
--$this->position;
|
||||
} while (($this->onlyExistingCells) &&
|
||||
(!$this->subject->cellExistsByColumnAndRow($this->position, $this->rowIndex)) &&
|
||||
($this->position >= $this->startColumn));
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicate if more columns exist in the worksheet range of columns that we're iterating
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function valid()
|
||||
{
|
||||
return $this->position <= $this->endColumn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate start/end values for "IterateOnlyExistingCells" mode, and adjust if necessary
|
||||
*
|
||||
* @throws PHPExcel_Exception
|
||||
*/
|
||||
protected function adjustForExistingOnlyRange()
|
||||
{
|
||||
if ($this->onlyExistingCells) {
|
||||
while ((!$this->subject->cellExistsByColumnAndRow($this->startColumn, $this->rowIndex)) &&
|
||||
($this->startColumn <= $this->endColumn)) {
|
||||
++$this->startColumn;
|
||||
}
|
||||
if ($this->startColumn > $this->endColumn) {
|
||||
throw new PHPExcel_Exception('No cells exist within the specified range');
|
||||
}
|
||||
while ((!$this->subject->cellExistsByColumnAndRow($this->endColumn, $this->rowIndex)) &&
|
||||
($this->endColumn >= $this->startColumn)) {
|
||||
--$this->endColumn;
|
||||
}
|
||||
if ($this->endColumn < $this->startColumn) {
|
||||
throw new PHPExcel_Exception('No cells exist within the specified range');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
132
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/RowDimension.php
vendored
Normal file
132
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/RowDimension.php
vendored
Normal file
@@ -0,0 +1,132 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_RowDimension
|
||||
*
|
||||
* 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_RowDimension extends PHPExcel_Worksheet_Dimension
|
||||
{
|
||||
/**
|
||||
* Row index
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
private $rowIndex;
|
||||
|
||||
/**
|
||||
* Row height (in pt)
|
||||
*
|
||||
* When this is set to a negative value, the row height should be ignored by IWriter
|
||||
*
|
||||
* @var double
|
||||
*/
|
||||
private $height = -1;
|
||||
|
||||
/**
|
||||
* ZeroHeight for Row?
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
private $zeroHeight = false;
|
||||
|
||||
/**
|
||||
* Create a new PHPExcel_Worksheet_RowDimension
|
||||
*
|
||||
* @param int $pIndex Numeric row index
|
||||
*/
|
||||
public function __construct($pIndex = 0)
|
||||
{
|
||||
// Initialise values
|
||||
$this->rowIndex = $pIndex;
|
||||
|
||||
// set dimension as unformatted by default
|
||||
parent::__construct(null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Row Index
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getRowIndex()
|
||||
{
|
||||
return $this->rowIndex;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Row Index
|
||||
*
|
||||
* @param int $pValue
|
||||
* @return PHPExcel_Worksheet_RowDimension
|
||||
*/
|
||||
public function setRowIndex($pValue)
|
||||
{
|
||||
$this->rowIndex = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Row Height
|
||||
*
|
||||
* @return double
|
||||
*/
|
||||
public function getRowHeight()
|
||||
{
|
||||
return $this->height;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Row Height
|
||||
*
|
||||
* @param double $pValue
|
||||
* @return PHPExcel_Worksheet_RowDimension
|
||||
*/
|
||||
public function setRowHeight($pValue = -1)
|
||||
{
|
||||
$this->height = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get ZeroHeight
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function getZeroHeight()
|
||||
{
|
||||
return $this->zeroHeight;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set ZeroHeight
|
||||
*
|
||||
* @param bool $pValue
|
||||
* @return PHPExcel_Worksheet_RowDimension
|
||||
*/
|
||||
public function setZeroHeight($pValue = false)
|
||||
{
|
||||
$this->zeroHeight = $pValue;
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
192
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/RowIterator.php
vendored
Normal file
192
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/RowIterator.php
vendored
Normal file
@@ -0,0 +1,192 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_RowIterator
|
||||
*
|
||||
* 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_RowIterator implements Iterator
|
||||
{
|
||||
/**
|
||||
* PHPExcel_Worksheet to iterate
|
||||
*
|
||||
* @var PHPExcel_Worksheet
|
||||
*/
|
||||
private $subject;
|
||||
|
||||
/**
|
||||
* Current iterator position
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
private $position = 1;
|
||||
|
||||
/**
|
||||
* Start position
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
private $startRow = 1;
|
||||
|
||||
|
||||
/**
|
||||
* End position
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
private $endRow = 1;
|
||||
|
||||
|
||||
/**
|
||||
* Create a new row iterator
|
||||
*
|
||||
* @param PHPExcel_Worksheet $subject The worksheet to iterate over
|
||||
* @param integer $startRow The row number at which to start iterating
|
||||
* @param integer $endRow Optionally, the row number at which to stop iterating
|
||||
*/
|
||||
public function __construct(PHPExcel_Worksheet $subject, $startRow = 1, $endRow = null)
|
||||
{
|
||||
// Set subject
|
||||
$this->subject = $subject;
|
||||
$this->resetEnd($endRow);
|
||||
$this->resetStart($startRow);
|
||||
}
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
public function __destruct()
|
||||
{
|
||||
unset($this->subject);
|
||||
}
|
||||
|
||||
/**
|
||||
* (Re)Set the start row and the current row pointer
|
||||
*
|
||||
* @param integer $startRow The row number at which to start iterating
|
||||
* @return PHPExcel_Worksheet_RowIterator
|
||||
* @throws PHPExcel_Exception
|
||||
*/
|
||||
public function resetStart($startRow = 1)
|
||||
{
|
||||
if ($startRow > $this->subject->getHighestRow()) {
|
||||
throw new PHPExcel_Exception("Start row ({$startRow}) is beyond highest row ({$this->subject->getHighestRow()})");
|
||||
}
|
||||
|
||||
$this->startRow = $startRow;
|
||||
if ($this->endRow < $this->startRow) {
|
||||
$this->endRow = $this->startRow;
|
||||
}
|
||||
$this->seek($startRow);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* (Re)Set the end row
|
||||
*
|
||||
* @param integer $endRow The row number at which to stop iterating
|
||||
* @return PHPExcel_Worksheet_RowIterator
|
||||
*/
|
||||
public function resetEnd($endRow = null)
|
||||
{
|
||||
$this->endRow = ($endRow) ? $endRow : $this->subject->getHighestRow();
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the row pointer to the selected row
|
||||
*
|
||||
* @param integer $row The row number to set the current pointer at
|
||||
* @return PHPExcel_Worksheet_RowIterator
|
||||
* @throws PHPExcel_Exception
|
||||
*/
|
||||
public function seek($row = 1)
|
||||
{
|
||||
if (($row < $this->startRow) || ($row > $this->endRow)) {
|
||||
throw new PHPExcel_Exception("Row $row is out of range ({$this->startRow} - {$this->endRow})");
|
||||
}
|
||||
$this->position = $row;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Rewind the iterator to the starting row
|
||||
*/
|
||||
public function rewind()
|
||||
{
|
||||
$this->position = $this->startRow;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the current row in this worksheet
|
||||
*
|
||||
* @return PHPExcel_Worksheet_Row
|
||||
*/
|
||||
public function current()
|
||||
{
|
||||
return new PHPExcel_Worksheet_Row($this->subject, $this->position);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the current iterator key
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function key()
|
||||
{
|
||||
return $this->position;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the iterator to its next value
|
||||
*/
|
||||
public function next()
|
||||
{
|
||||
++$this->position;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the iterator to its previous value
|
||||
*/
|
||||
public function prev()
|
||||
{
|
||||
if ($this->position <= $this->startRow) {
|
||||
throw new PHPExcel_Exception("Row is already at the beginning of range ({$this->startRow} - {$this->endRow})");
|
||||
}
|
||||
|
||||
--$this->position;
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicate if more rows exist in the worksheet range of rows that we're iterating
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function valid()
|
||||
{
|
||||
return $this->position <= $this->endRow;
|
||||
}
|
||||
}
|
||||
187
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/SheetView.php
vendored
Normal file
187
vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/SheetView.php
vendored
Normal file
@@ -0,0 +1,187 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_SheetView
|
||||
*
|
||||
* 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_SheetView
|
||||
{
|
||||
|
||||
/* Sheet View types */
|
||||
const SHEETVIEW_NORMAL = 'normal';
|
||||
const SHEETVIEW_PAGE_LAYOUT = 'pageLayout';
|
||||
const SHEETVIEW_PAGE_BREAK_PREVIEW = 'pageBreakPreview';
|
||||
|
||||
private static $sheetViewTypes = array(
|
||||
self::SHEETVIEW_NORMAL,
|
||||
self::SHEETVIEW_PAGE_LAYOUT,
|
||||
self::SHEETVIEW_PAGE_BREAK_PREVIEW,
|
||||
);
|
||||
|
||||
/**
|
||||
* ZoomScale
|
||||
*
|
||||
* Valid values range from 10 to 400.
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
private $zoomScale = 100;
|
||||
|
||||
/**
|
||||
* ZoomScaleNormal
|
||||
*
|
||||
* Valid values range from 10 to 400.
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
private $zoomScaleNormal = 100;
|
||||
|
||||
/**
|
||||
* View
|
||||
*
|
||||
* Valid values range from 10 to 400.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $sheetviewType = self::SHEETVIEW_NORMAL;
|
||||
|
||||
/**
|
||||
* Create a new PHPExcel_Worksheet_SheetView
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Get ZoomScale
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getZoomScale()
|
||||
{
|
||||
return $this->zoomScale;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set ZoomScale
|
||||
*
|
||||
* Valid values range from 10 to 400.
|
||||
*
|
||||
* @param int $pValue
|
||||
* @throws PHPExcel_Exception
|
||||
* @return PHPExcel_Worksheet_SheetView
|
||||
*/
|
||||
public function setZoomScale($pValue = 100)
|
||||
{
|
||||
// Microsoft Office Excel 2007 only allows setting a scale between 10 and 400 via the user interface,
|
||||
// but it is apparently still able to handle any scale >= 1
|
||||
if (($pValue >= 1) || is_null($pValue)) {
|
||||
$this->zoomScale = $pValue;
|
||||
} else {
|
||||
throw new PHPExcel_Exception("Scale must be greater than or equal to 1.");
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get ZoomScaleNormal
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getZoomScaleNormal()
|
||||
{
|
||||
return $this->zoomScaleNormal;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set ZoomScale
|
||||
*
|
||||
* Valid values range from 10 to 400.
|
||||
*
|
||||
* @param int $pValue
|
||||
* @throws PHPExcel_Exception
|
||||
* @return PHPExcel_Worksheet_SheetView
|
||||
*/
|
||||
public function setZoomScaleNormal($pValue = 100)
|
||||
{
|
||||
if (($pValue >= 1) || is_null($pValue)) {
|
||||
$this->zoomScaleNormal = $pValue;
|
||||
} else {
|
||||
throw new PHPExcel_Exception("Scale must be greater than or equal to 1.");
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get View
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getView()
|
||||
{
|
||||
return $this->sheetviewType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set View
|
||||
*
|
||||
* Valid values are
|
||||
* 'normal' self::SHEETVIEW_NORMAL
|
||||
* 'pageLayout' self::SHEETVIEW_PAGE_LAYOUT
|
||||
* 'pageBreakPreview' self::SHEETVIEW_PAGE_BREAK_PREVIEW
|
||||
*
|
||||
* @param string $pValue
|
||||
* @throws PHPExcel_Exception
|
||||
* @return PHPExcel_Worksheet_SheetView
|
||||
*/
|
||||
public function setView($pValue = null)
|
||||
{
|
||||
// MS Excel 2007 allows setting the view to 'normal', 'pageLayout' or 'pageBreakPreview' via the user interface
|
||||
if ($pValue === null) {
|
||||
$pValue = self::SHEETVIEW_NORMAL;
|
||||
}
|
||||
if (in_array($pValue, self::$sheetViewTypes)) {
|
||||
$this->sheetviewType = $pValue;
|
||||
} else {
|
||||
throw new PHPExcel_Exception("Invalid sheetview layout type.");
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Implement PHP __clone to create a deep clone, not just a shallow copy.
|
||||
*/
|
||||
public function __clone()
|
||||
{
|
||||
$vars = get_object_vars($this);
|
||||
foreach ($vars as $key => $value) {
|
||||
if (is_object($value)) {
|
||||
$this->$key = clone $value;
|
||||
} else {
|
||||
$this->$key = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user