mirror of
https://github.com/retailcrm/PHPExcel.git
synced 2024-11-26 15:26:03 +03:00
Fix for quoted worksheet names in INDIRECT and OFFSET methods; and Docblock fixes
This commit is contained in:
parent
b8c462f1c2
commit
73d2757728
@ -56,6 +56,18 @@ class PHPExcel_Calculation_DateTime {
|
|||||||
} // function _isLeapYear()
|
} // function _isLeapYear()
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the number of days between two dates based on a 360 day calendar
|
||||||
|
*
|
||||||
|
* @param integer $startDay Day of month of the start date
|
||||||
|
* @param integer $startMonth Month of the start date
|
||||||
|
* @param integer $startYear Year of the start date
|
||||||
|
* @param integer $endDay Day of month of the start date
|
||||||
|
* @param integer $endMonth Month of the start date
|
||||||
|
* @param integer $endYear Year of the start date
|
||||||
|
* @param boolean $methodUS Whether to use the US method or the European method of calculation
|
||||||
|
* @return integer Number of days between the start date and the end date
|
||||||
|
*/
|
||||||
private static function _dateDiff360($startDay, $startMonth, $startYear, $endDay, $endMonth, $endYear, $methodUS) {
|
private static function _dateDiff360($startDay, $startMonth, $startYear, $endDay, $endMonth, $endYear, $methodUS) {
|
||||||
if ($startDay == 31) {
|
if ($startDay == 31) {
|
||||||
--$startDay;
|
--$startDay;
|
||||||
|
@ -741,8 +741,6 @@ class PHPExcel_Calculation_Engineering {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* _cleanComplex
|
|
||||||
*
|
|
||||||
* Cleans the leading characters in a complex number string
|
* Cleans the leading characters in a complex number string
|
||||||
*
|
*
|
||||||
* @param string $complexNumber The complex number to clean
|
* @param string $complexNumber The complex number to clean
|
||||||
@ -756,20 +754,25 @@ class PHPExcel_Calculation_Engineering {
|
|||||||
return $complexNumber;
|
return $complexNumber;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
private static function _nbrConversionFormat($xVal,$places) {
|
* Formats a number base string value with leading zeroes
|
||||||
|
*
|
||||||
|
* @param string $xVal The "number" to pad
|
||||||
|
* @param integer $places The length that we want to pad this value
|
||||||
|
* @return string The padded "number"
|
||||||
|
*/
|
||||||
|
private static function _nbrConversionFormat($xVal, $places) {
|
||||||
if (!is_null($places)) {
|
if (!is_null($places)) {
|
||||||
if (strlen($xVal) <= $places) {
|
if (strlen($xVal) <= $places) {
|
||||||
return substr(str_pad($xVal,$places,'0',STR_PAD_LEFT),-10);
|
return substr(str_pad($xVal, $places, '0', STR_PAD_LEFT), -10);
|
||||||
} else {
|
} else {
|
||||||
return PHPExcel_Calculation_Functions::NaN();
|
return PHPExcel_Calculation_Functions::NaN();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return substr($xVal,-10);
|
return substr($xVal, -10);
|
||||||
} // function _nbrConversionFormat()
|
} // function _nbrConversionFormat()
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* BESSELI
|
* BESSELI
|
||||||
*
|
*
|
||||||
|
@ -1523,14 +1523,11 @@ class PHPExcel_Calculation_Financial {
|
|||||||
}
|
}
|
||||||
} // function NPER()
|
} // function NPER()
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* NPV
|
* NPV
|
||||||
*
|
*
|
||||||
* Returns the Net Present Value of a cash flow series given a discount rate.
|
* Returns the Net Present Value of a cash flow series given a discount rate.
|
||||||
*
|
*
|
||||||
* @param float Discount interest rate
|
|
||||||
* @param array Cash flow series
|
|
||||||
* @return float
|
* @return float
|
||||||
*/
|
*/
|
||||||
public static function NPV() {
|
public static function NPV() {
|
||||||
@ -1553,7 +1550,6 @@ class PHPExcel_Calculation_Financial {
|
|||||||
return $returnValue;
|
return $returnValue;
|
||||||
} // function NPV()
|
} // function NPV()
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PMT
|
* PMT
|
||||||
*
|
*
|
||||||
|
@ -253,6 +253,7 @@ class PHPExcel_Calculation_LookupRef {
|
|||||||
* @category Logical Functions
|
* @category Logical Functions
|
||||||
* @param string $linkURL Value to check, is also the value returned when no error
|
* @param string $linkURL Value to check, is also the value returned when no error
|
||||||
* @param string $displayName Value to return when testValue is an error condition
|
* @param string $displayName Value to return when testValue is an error condition
|
||||||
|
* @param PHPExcel_Cell $pCell The cell to set the hyperlink in
|
||||||
* @return mixed The value of $displayName (or $linkURL if $displayName was blank)
|
* @return mixed The value of $displayName (or $linkURL if $displayName was blank)
|
||||||
*/
|
*/
|
||||||
public static function HYPERLINK($linkURL = '', $displayName = null, PHPExcel_Cell $pCell = null) {
|
public static function HYPERLINK($linkURL = '', $displayName = null, PHPExcel_Cell $pCell = null) {
|
||||||
@ -287,13 +288,14 @@ class PHPExcel_Calculation_LookupRef {
|
|||||||
*
|
*
|
||||||
* NOTE - INDIRECT() does not yet support the optional a1 parameter introduced in Excel 2010
|
* NOTE - INDIRECT() does not yet support the optional a1 parameter introduced in Excel 2010
|
||||||
*
|
*
|
||||||
* @param cellAddress An array or array formula, or a reference to a range of cells for which you want the number of rows
|
* @param cellAddress $cellAddress The cell address of the current cell (containing this formula)
|
||||||
|
* @param PHPExcel_Cell $pCell The current cell (containing this formula)
|
||||||
* @return mixed The cells referenced by cellAddress
|
* @return mixed The cells referenced by cellAddress
|
||||||
*
|
*
|
||||||
* @todo Support for the optional a1 parameter introduced in Excel 2010
|
* @todo Support for the optional a1 parameter introduced in Excel 2010
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public static function INDIRECT($cellAddress=Null, PHPExcel_Cell $pCell = null) {
|
public static function INDIRECT($cellAddress = NULL, PHPExcel_Cell $pCell = NULL) {
|
||||||
$cellAddress = PHPExcel_Calculation_Functions::flattenSingleValue($cellAddress);
|
$cellAddress = PHPExcel_Calculation_Functions::flattenSingleValue($cellAddress);
|
||||||
if (is_null($cellAddress) || $cellAddress === '') {
|
if (is_null($cellAddress) || $cellAddress === '') {
|
||||||
return PHPExcel_Calculation_Functions::REF();
|
return PHPExcel_Calculation_Functions::REF();
|
||||||
@ -307,29 +309,30 @@ class PHPExcel_Calculation_LookupRef {
|
|||||||
|
|
||||||
if ((!preg_match('/^'.PHPExcel_Calculation::CALCULATION_REGEXP_CELLREF.'$/i', $cellAddress1, $matches)) ||
|
if ((!preg_match('/^'.PHPExcel_Calculation::CALCULATION_REGEXP_CELLREF.'$/i', $cellAddress1, $matches)) ||
|
||||||
((!is_null($cellAddress2)) && (!preg_match('/^'.PHPExcel_Calculation::CALCULATION_REGEXP_CELLREF.'$/i', $cellAddress2, $matches)))) {
|
((!is_null($cellAddress2)) && (!preg_match('/^'.PHPExcel_Calculation::CALCULATION_REGEXP_CELLREF.'$/i', $cellAddress2, $matches)))) {
|
||||||
|
|
||||||
if (!preg_match('/^'.PHPExcel_Calculation::CALCULATION_REGEXP_NAMEDRANGE.'$/i', $cellAddress1, $matches)) {
|
if (!preg_match('/^'.PHPExcel_Calculation::CALCULATION_REGEXP_NAMEDRANGE.'$/i', $cellAddress1, $matches)) {
|
||||||
return PHPExcel_Calculation_Functions::REF();
|
return PHPExcel_Calculation_Functions::REF();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strpos($cellAddress,'!') !== false) {
|
if (strpos($cellAddress,'!') !== FALSE) {
|
||||||
list($sheetName,$cellAddress) = explode('!',$cellAddress);
|
list($sheetName, $cellAddress) = explode('!',$cellAddress);
|
||||||
|
$sheetName = trim($sheetName, "'");
|
||||||
$pSheet = $pCell->getParent()->getParent()->getSheetByName($sheetName);
|
$pSheet = $pCell->getParent()->getParent()->getSheetByName($sheetName);
|
||||||
} else {
|
} else {
|
||||||
$pSheet = $pCell->getParent();
|
$pSheet = $pCell->getParent();
|
||||||
}
|
}
|
||||||
|
|
||||||
return PHPExcel_Calculation::getInstance()->extractNamedRange($cellAddress, $pSheet, False);
|
return PHPExcel_Calculation::getInstance()->extractNamedRange($cellAddress, $pSheet, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strpos($cellAddress,'!') !== false) {
|
if (strpos($cellAddress,'!') !== FALSE) {
|
||||||
list($sheetName,$cellAddress) = explode('!',$cellAddress);
|
list($sheetName,$cellAddress) = explode('!',$cellAddress);
|
||||||
|
$sheetName = trim($sheetName, "'");
|
||||||
$pSheet = $pCell->getParent()->getParent()->getSheetByName($sheetName);
|
$pSheet = $pCell->getParent()->getParent()->getSheetByName($sheetName);
|
||||||
} else {
|
} else {
|
||||||
$pSheet = $pCell->getParent();
|
$pSheet = $pCell->getParent();
|
||||||
}
|
}
|
||||||
|
|
||||||
return PHPExcel_Calculation::getInstance()->extractCellRange($cellAddress, $pSheet, False);
|
return PHPExcel_Calculation::getInstance()->extractCellRange($cellAddress, $pSheet, FALSE);
|
||||||
} // function INDIRECT()
|
} // function INDIRECT()
|
||||||
|
|
||||||
|
|
||||||
@ -373,9 +376,10 @@ class PHPExcel_Calculation_LookupRef {
|
|||||||
return PHPExcel_Calculation_Functions::REF();
|
return PHPExcel_Calculation_Functions::REF();
|
||||||
}
|
}
|
||||||
|
|
||||||
$sheetName = null;
|
$sheetName = NULL;
|
||||||
if (strpos($cellAddress,"!")) {
|
if (strpos($cellAddress,"!")) {
|
||||||
list($sheetName,$cellAddress) = explode("!",$cellAddress);
|
list($sheetName,$cellAddress) = explode("!",$cellAddress);
|
||||||
|
$sheetName = trim($sheetName, "'");
|
||||||
}
|
}
|
||||||
if (strpos($cellAddress,":")) {
|
if (strpos($cellAddress,":")) {
|
||||||
list($startCell,$endCell) = explode(":",$cellAddress);
|
list($startCell,$endCell) = explode(":",$cellAddress);
|
||||||
@ -416,7 +420,7 @@ class PHPExcel_Calculation_LookupRef {
|
|||||||
$cellAddress .= ':'.$endCellColumn.$endCellRow;
|
$cellAddress .= ':'.$endCellColumn.$endCellRow;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($sheetName !== null) {
|
if ($sheetName !== NULL) {
|
||||||
$pSheet = $pCell->getParent()->getParent()->getSheetByName($sheetName);
|
$pSheet = $pCell->getParent()->getParent()->getSheetByName($sheetName);
|
||||||
} else {
|
} else {
|
||||||
$pSheet = $pCell->getParent();
|
$pSheet = $pCell->getParent();
|
||||||
|
Loading…
Reference in New Issue
Block a user