Some general performance tweaks, and some specific to the Excel2007 Writer

git-svn-id: https://phpexcel.svn.codeplex.com/svn/trunk@64159 2327b42d-5241-43d6-9e2a-de5ac946f064
This commit is contained in:
Mark Baker 2010-11-22 18:00:22 +00:00
parent 606f43a086
commit 29c4b1db5f
3 changed files with 157 additions and 141 deletions

View File

@ -3222,8 +3222,10 @@ class PHPExcel_Calculation {
// print_r($args); // print_r($args);
// echo '<br />'; // echo '<br />';
if ($functionName != 'MKMATRIX') { if ($functionName != 'MKMATRIX') {
if ($this->writeDebugLog) {
krsort($argArrayVals); krsort($argArrayVals);
$this->_writeDebug('Evaluating '. self::_localeFunc($functionName).'( '.implode(self::$_localeArgumentSeparator.' ',$argArrayVals).' )'); $this->_writeDebug('Evaluating '. self::_localeFunc($functionName).'( '.implode(self::$_localeArgumentSeparator.' ',PHPExcel_Calculation_Functions::flattenArray($argArrayVals)).' )');
}
} }
// Process each argument in turn, building the return value as an array // Process each argument in turn, building the return value as an array
// if (($argCount == 1) && (is_array($args[1])) && ($functionName != 'MKMATRIX')) { // if (($argCount == 1) && (is_array($args[1])) && ($functionName != 'MKMATRIX')) {

View File

@ -192,6 +192,18 @@ class PHPExcel_Cell
return $this->_value; return $this->_value;
} }
/**
* Get cell value with formatting
*
* @return string
*/
public function getFormattedValue()
{
return PHPExcel_Style_NumberFormat::toFormattedString( $this->getCalculatedValue(),
$this->_parent->getParent()->getCellXfByIndex($this->getXfIndex())->getNumberFormat()->getFormatCode()
);
}
/** /**
* Set cell value * Set cell value
* *
@ -486,7 +498,7 @@ class PHPExcel_Cell
} elseif ($pCoordinateString == '') { } elseif ($pCoordinateString == '') {
throw new Exception('Cell coordinate can not be zero-length string.'); throw new Exception('Cell coordinate can not be zero-length string.');
} else { } else {
throw new Exception('Invalid cell coordinate.'); throw new Exception('Invalid cell coordinate '.$pCoordinateString);
} }
} }

View File

@ -89,9 +89,10 @@ class PHPExcel_HashTable
* @throws Exception * @throws Exception
*/ */
public function add(PHPExcel_IComparable $pSource = null) { public function add(PHPExcel_IComparable $pSource = null) {
if (!isset($this->_items[ $pSource->getHashCode() ])) { $hash = $pSource->getHashCode();
$this->_items[ $pSource->getHashCode() ] = $pSource; if (!isset($this->_items[$hash])) {
$this->_keyMap[ count($this->_items) - 1 ] = $pSource->getHashCode(); $this->_items[$hash] = $pSource;
$this->_keyMap[count($this->_items) - 1] = $hash;
} }
} }
@ -102,8 +103,9 @@ class PHPExcel_HashTable
* @throws Exception * @throws Exception
*/ */
public function remove(PHPExcel_IComparable $pSource = null) { public function remove(PHPExcel_IComparable $pSource = null) {
if (isset($this->_items[ $pSource->getHashCode() ])) { $hash = $pSource->getHashCode();
unset($this->_items[ $pSource->getHashCode() ]); if (isset($this->_items[$hash])) {
unset($this->_items[$hash]);
$deleteKey = -1; $deleteKey = -1;
foreach ($this->_keyMap as $key => $value) { foreach ($this->_keyMap as $key => $value) {
@ -111,7 +113,7 @@ class PHPExcel_HashTable
$this->_keyMap[$key - 1] = $value; $this->_keyMap[$key - 1] = $value;
} }
if ($value == $pSource->getHashCode()) { if ($value == $hash) {
$deleteKey = $key; $deleteKey = $key;
} }
} }