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);
// echo '<br />';
if ($functionName != 'MKMATRIX') {
if ($this->writeDebugLog) {
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
// if (($argCount == 1) && (is_array($args[1])) && ($functionName != 'MKMATRIX')) {

View File

@ -192,6 +192,18 @@ class PHPExcel_Cell
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
*
@ -486,7 +498,7 @@ class PHPExcel_Cell
} elseif ($pCoordinateString == '') {
throw new Exception('Cell coordinate can not be zero-length string.');
} 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
*/
public function add(PHPExcel_IComparable $pSource = null) {
if (!isset($this->_items[ $pSource->getHashCode() ])) {
$this->_items[ $pSource->getHashCode() ] = $pSource;
$this->_keyMap[ count($this->_items) - 1 ] = $pSource->getHashCode();
$hash = $pSource->getHashCode();
if (!isset($this->_items[$hash])) {
$this->_items[$hash] = $pSource;
$this->_keyMap[count($this->_items) - 1] = $hash;
}
}
@ -102,8 +103,9 @@ class PHPExcel_HashTable
* @throws Exception
*/
public function remove(PHPExcel_IComparable $pSource = null) {
if (isset($this->_items[ $pSource->getHashCode() ])) {
unset($this->_items[ $pSource->getHashCode() ]);
$hash = $pSource->getHashCode();
if (isset($this->_items[$hash])) {
unset($this->_items[$hash]);
$deleteKey = -1;
foreach ($this->_keyMap as $key => $value) {
@ -111,11 +113,11 @@ class PHPExcel_HashTable
$this->_keyMap[$key - 1] = $value;
}
if ($value == $pSource->getHashCode()) {
if ($value == $hash) {
$deleteKey = $key;
}
}
unset($this->_keyMap[ count($this->_keyMap) - 1 ]);
unset($this->_keyMap[count($this->_keyMap) - 1]);
}
}