Dateien nach "includes/PHPExcel/Classes/PHPExcel/Worksheet" hochladen
This commit is contained in:
parent
8482fcb3b1
commit
75ecd85b45
|
@ -0,0 +1,862 @@
|
|||
<?php
|
||||
/**
|
||||
* PHPExcel
|
||||
*
|
||||
* Copyright (c) 2006 - 2014 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 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
|
||||
* @version ##VERSION##, ##DATE##
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_AutoFilter
|
||||
*
|
||||
* @category PHPExcel
|
||||
* @package PHPExcel_Worksheet
|
||||
* @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
*/
|
||||
class PHPExcel_Worksheet_AutoFilter
|
||||
{
|
||||
/**
|
||||
* Autofilter Worksheet
|
||||
*
|
||||
* @var PHPExcel_Worksheet
|
||||
*/
|
||||
private $_workSheet = NULL;
|
||||
|
||||
|
||||
/**
|
||||
* 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;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,489 @@
|
|||
<?php
|
||||
/**
|
||||
* PHPExcel
|
||||
*
|
||||
* Copyright (c) 2006 - 2014 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 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
|
||||
* @version ##VERSION##, ##DATE##
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_BaseDrawing
|
||||
*
|
||||
* @category PHPExcel
|
||||
* @package PHPExcel_Worksheet
|
||||
* @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
*/
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,95 @@
|
|||
<?php
|
||||
/**
|
||||
* PHPExcel
|
||||
*
|
||||
* Copyright (c) 2006 - 2014 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 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
|
||||
* @version 1.8.0, 2014-03-02
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_CellIterator
|
||||
*
|
||||
* Used to iterate rows in a PHPExcel_Worksheet
|
||||
*
|
||||
* @category PHPExcel
|
||||
* @package PHPExcel_Worksheet
|
||||
* @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
*/
|
||||
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();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,92 @@
|
|||
<?php
|
||||
/**
|
||||
* PHPExcel
|
||||
*
|
||||
* Copyright (c) 2006 - 2014 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 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
|
||||
* @version ##VERSION##, ##DATE##
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_Column
|
||||
*
|
||||
* Represents a column in PHPExcel_Worksheet, used by PHPExcel_Worksheet_ColumnIterator
|
||||
*
|
||||
* @category PHPExcel
|
||||
* @package PHPExcel_Worksheet
|
||||
* @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
*/
|
||||
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 int
|
||||
*/
|
||||
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);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,215 @@
|
|||
<?php
|
||||
/**
|
||||
* PHPExcel
|
||||
*
|
||||
* Copyright (c) 2006 - 2014 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 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
|
||||
* @version ##VERSION##, ##DATE##
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_ColumnCellIterator
|
||||
*
|
||||
* Used to iterate columns in a PHPExcel_Worksheet
|
||||
*
|
||||
* @category PHPExcel
|
||||
* @package PHPExcel_Worksheet
|
||||
* @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
*/
|
||||
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, $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');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,266 @@
|
|||
<?php
|
||||
/**
|
||||
* PHPExcel
|
||||
*
|
||||
* Copyright (c) 2006 - 2014 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 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
|
||||
* @version ##VERSION##, ##DATE##
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_ColumnDimension
|
||||
*
|
||||
* @category PHPExcel
|
||||
* @package PHPExcel_Worksheet
|
||||
* @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
*/
|
||||
class PHPExcel_Worksheet_ColumnDimension
|
||||
{
|
||||
/**
|
||||
* 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;
|
||||
|
||||
/**
|
||||
* Visible?
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
private $_visible = true;
|
||||
|
||||
/**
|
||||
* Outline level
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
private $_outlineLevel = 0;
|
||||
|
||||
/**
|
||||
* Collapsed
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
private $_collapsed = false;
|
||||
|
||||
/**
|
||||
* Index to cellXf
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
private $_xfIndex;
|
||||
|
||||
/**
|
||||
* Create a new PHPExcel_Worksheet_ColumnDimension
|
||||
*
|
||||
* @param string $pIndex Character column index
|
||||
*/
|
||||
public function __construct($pIndex = 'A')
|
||||
{
|
||||
// Initialise values
|
||||
$this->_columnIndex = $pIndex;
|
||||
|
||||
// set default index to cellXf
|
||||
$this->_xfIndex = 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;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Visible
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function getVisible() {
|
||||
return $this->_visible;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Visible
|
||||
*
|
||||
* @param bool $pValue
|
||||
* @return PHPExcel_Worksheet_ColumnDimension
|
||||
*/
|
||||
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_ColumnDimension
|
||||
*/
|
||||
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_ColumnDimension
|
||||
*/
|
||||
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_ColumnDimension
|
||||
*/
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,192 @@
|
|||
<?php
|
||||
/**
|
||||
* PHPExcel
|
||||
*
|
||||
* Copyright (c) 2006 - 2014 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 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
|
||||
* @version ##VERSION##, ##DATE##
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_ColumnIterator
|
||||
*
|
||||
* Used to iterate columns in a PHPExcel_Worksheet
|
||||
*
|
||||
* @category PHPExcel
|
||||
* @package PHPExcel_Worksheet
|
||||
* @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
*/
|
||||
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
|
||||
*/
|
||||
public function resetStart($startColumn = 'A') {
|
||||
$startColumnIndex = PHPExcel_Cell::columnIndexFromString($startColumn) - 1;
|
||||
$this->_startColumn = $startColumnIndex;
|
||||
$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;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,148 @@
|
|||
<?php
|
||||
/**
|
||||
* PHPExcel
|
||||
*
|
||||
* Copyright (c) 2006 - 2014 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 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
|
||||
* @version ##VERSION##, ##DATE##
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_Drawing
|
||||
*
|
||||
* @category PHPExcel
|
||||
* @package PHPExcel_Worksheet_Drawing
|
||||
* @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
*/
|
||||
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) {
|
||||
// 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
|
||||
. 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,465 @@
|
|||
<?php
|
||||
/**
|
||||
* PHPExcel
|
||||
*
|
||||
* Copyright (c) 2006 - 2014 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 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
|
||||
* @version ##VERSION##, ##DATE##
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_HeaderFooter
|
||||
*
|
||||
* <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>
|
||||
*
|
||||
* @category PHPExcel
|
||||
* @package PHPExcel_Worksheet
|
||||
* @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
*/
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,350 @@
|
|||
<?php
|
||||
/**
|
||||
* PHPExcel
|
||||
*
|
||||
* Copyright (c) 2006 - 2014 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 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
|
||||
* @version ##VERSION##, ##DATE##
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_HeaderFooterDrawing
|
||||
*
|
||||
* @category PHPExcel
|
||||
* @package PHPExcel_Worksheet
|
||||
* @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
*/
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,200 @@
|
|||
<?php
|
||||
/**
|
||||
* PHPExcel
|
||||
*
|
||||
* Copyright (c) 2006 - 2014 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 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
|
||||
* @version ##VERSION##, ##DATE##
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_MemoryDrawing
|
||||
*
|
||||
* @category PHPExcel
|
||||
* @package PHPExcel_Worksheet
|
||||
* @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
*/
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,220 @@
|
|||
<?php
|
||||
/**
|
||||
* PHPExcel
|
||||
*
|
||||
* Copyright (c) 2006 - 2014 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 - 2014 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 - 2014 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,798 @@
|
|||
<?php
|
||||
/**
|
||||
* PHPExcel
|
||||
*
|
||||
* Copyright (c) 2006 - 2014 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 - 2014 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 - 2014 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,545 @@
|
|||
<?php
|
||||
/**
|
||||
* PHPExcel
|
||||
*
|
||||
* Copyright (c) 2006 - 2014 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 - 2014 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 - 2014 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
|
||||
*/
|
||||
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
|
||||
*/
|
||||
function getSheet() {
|
||||
return $this->_sheet;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Sheet
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_Protection
|
||||
*/
|
||||
function setSheet($pValue = false) {
|
||||
$this->_sheet = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Objects
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
function getObjects() {
|
||||
return $this->_objects;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Objects
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_Protection
|
||||
*/
|
||||
function setObjects($pValue = false) {
|
||||
$this->_objects = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Scenarios
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
function getScenarios() {
|
||||
return $this->_scenarios;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Scenarios
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_Protection
|
||||
*/
|
||||
function setScenarios($pValue = false) {
|
||||
$this->_scenarios = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get FormatCells
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
function getFormatCells() {
|
||||
return $this->_formatCells;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set FormatCells
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_Protection
|
||||
*/
|
||||
function setFormatCells($pValue = false) {
|
||||
$this->_formatCells = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get FormatColumns
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
function getFormatColumns() {
|
||||
return $this->_formatColumns;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set FormatColumns
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_Protection
|
||||
*/
|
||||
function setFormatColumns($pValue = false) {
|
||||
$this->_formatColumns = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get FormatRows
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
function getFormatRows() {
|
||||
return $this->_formatRows;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set FormatRows
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_Protection
|
||||
*/
|
||||
function setFormatRows($pValue = false) {
|
||||
$this->_formatRows = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get InsertColumns
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
function getInsertColumns() {
|
||||
return $this->_insertColumns;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set InsertColumns
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_Protection
|
||||
*/
|
||||
function setInsertColumns($pValue = false) {
|
||||
$this->_insertColumns = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get InsertRows
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
function getInsertRows() {
|
||||
return $this->_insertRows;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set InsertRows
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_Protection
|
||||
*/
|
||||
function setInsertRows($pValue = false) {
|
||||
$this->_insertRows = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get InsertHyperlinks
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
function getInsertHyperlinks() {
|
||||
return $this->_insertHyperlinks;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set InsertHyperlinks
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_Protection
|
||||
*/
|
||||
function setInsertHyperlinks($pValue = false) {
|
||||
$this->_insertHyperlinks = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get DeleteColumns
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
function getDeleteColumns() {
|
||||
return $this->_deleteColumns;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set DeleteColumns
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_Protection
|
||||
*/
|
||||
function setDeleteColumns($pValue = false) {
|
||||
$this->_deleteColumns = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get DeleteRows
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
function getDeleteRows() {
|
||||
return $this->_deleteRows;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set DeleteRows
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_Protection
|
||||
*/
|
||||
function setDeleteRows($pValue = false) {
|
||||
$this->_deleteRows = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get SelectLockedCells
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
function getSelectLockedCells() {
|
||||
return $this->_selectLockedCells;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set SelectLockedCells
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_Protection
|
||||
*/
|
||||
function setSelectLockedCells($pValue = false) {
|
||||
$this->_selectLockedCells = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Sort
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
function getSort() {
|
||||
return $this->_sort;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Sort
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_Protection
|
||||
*/
|
||||
function setSort($pValue = false) {
|
||||
$this->_sort = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get AutoFilter
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
function getAutoFilter() {
|
||||
return $this->_autoFilter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set AutoFilter
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_Protection
|
||||
*/
|
||||
function setAutoFilter($pValue = false) {
|
||||
$this->_autoFilter = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get PivotTables
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
function getPivotTables() {
|
||||
return $this->_pivotTables;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set PivotTables
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_Protection
|
||||
*/
|
||||
function setPivotTables($pValue = false) {
|
||||
$this->_pivotTables = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get SelectUnlockedCells
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
function getSelectUnlockedCells() {
|
||||
return $this->_selectUnlockedCells;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set SelectUnlockedCells
|
||||
*
|
||||
* @param boolean $pValue
|
||||
* @return PHPExcel_Worksheet_Protection
|
||||
*/
|
||||
function setSelectUnlockedCells($pValue = false) {
|
||||
$this->_selectUnlockedCells = $pValue;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Password (hashed)
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
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
|
||||
*/
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,92 @@
|
|||
<?php
|
||||
/**
|
||||
* PHPExcel
|
||||
*
|
||||
* Copyright (c) 2006 - 2014 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 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
|
||||
* @version ##VERSION##, ##DATE##
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_Row
|
||||
*
|
||||
* Represents a row in PHPExcel_Worksheet, used by PHPExcel_Worksheet_RowIterator
|
||||
*
|
||||
* @category PHPExcel
|
||||
* @package PHPExcel_Worksheet
|
||||
* @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
*/
|
||||
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);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,224 @@
|
|||
<?php
|
||||
/**
|
||||
* PHPExcel
|
||||
*
|
||||
* Copyright (c) 2006 - 2014 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 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
|
||||
* @version ##VERSION##, ##DATE##
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_RowCellIterator
|
||||
*
|
||||
* Used to iterate columns in a PHPExcel_Worksheet
|
||||
*
|
||||
* @category PHPExcel
|
||||
* @package PHPExcel_Worksheet
|
||||
* @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
*/
|
||||
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');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,265 @@
|
|||
<?php
|
||||
/**
|
||||
* PHPExcel
|
||||
*
|
||||
* Copyright (c) 2006 - 2014 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 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
|
||||
* @version ##VERSION##, ##DATE##
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_RowDimension
|
||||
*
|
||||
* @category PHPExcel
|
||||
* @package PHPExcel_Worksheet
|
||||
* @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
*/
|
||||
class PHPExcel_Worksheet_RowDimension
|
||||
{
|
||||
/**
|
||||
* 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 $_rowHeight = -1;
|
||||
|
||||
/**
|
||||
* ZeroHeight for Row?
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
private $_zeroHeight = false;
|
||||
|
||||
/**
|
||||
* 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_RowDimension
|
||||
*
|
||||
* @param int $pIndex Numeric row index
|
||||
*/
|
||||
public function __construct($pIndex = 0)
|
||||
{
|
||||
// Initialise values
|
||||
$this->_rowIndex = $pIndex;
|
||||
|
||||
// set row dimension as unformatted by default
|
||||
$this->_xfIndex = 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->_rowHeight;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Row Height
|
||||
*
|
||||
* @param double $pValue
|
||||
* @return PHPExcel_Worksheet_RowDimension
|
||||
*/
|
||||
public function setRowHeight($pValue = -1) {
|
||||
$this->_rowHeight = $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;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Visible
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function getVisible() {
|
||||
return $this->_visible;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Visible
|
||||
*
|
||||
* @param bool $pValue
|
||||
* @return PHPExcel_Worksheet_RowDimension
|
||||
*/
|
||||
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_RowDimension
|
||||
*/
|
||||
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_RowDimension
|
||||
*/
|
||||
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_RowDimension
|
||||
*/
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,183 @@
|
|||
<?php
|
||||
/**
|
||||
* PHPExcel
|
||||
*
|
||||
* Copyright (c) 2006 - 2014 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 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
|
||||
* @version ##VERSION##, ##DATE##
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_RowIterator
|
||||
*
|
||||
* Used to iterate rows in a PHPExcel_Worksheet
|
||||
*
|
||||
* @category PHPExcel
|
||||
* @package PHPExcel_Worksheet
|
||||
* @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
*/
|
||||
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 = null, $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
|
||||
*/
|
||||
public function resetStart($startRow = 1) {
|
||||
$this->_startRow = $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;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,188 @@
|
|||
<?php
|
||||
/**
|
||||
* PHPExcel
|
||||
*
|
||||
* Copyright (c) 2006 - 2014 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 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
|
||||
* @version ##VERSION##, ##DATE##
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* PHPExcel_Worksheet_SheetView
|
||||
*
|
||||
* @category PHPExcel
|
||||
* @package PHPExcel_Worksheet
|
||||
* @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
*/
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue