ISTEXT() return wrong result if referencing an empty but formatted cell

ISTEXT should always return FALSE for empty cells, however PHPExcel returns
TRUE if the cell is formatted. This can be reproduced in Excel by choosing
formatting category "Text" for cell A1, and then in cell B1 input the
formula '=ISTEXT(A1)'. B1 will display FALSE, but PHPExcel will return TRUE.

This patch fix the NULL value being incorrectly cast to an empty string, and
thus eliminating ISTEXT() issue (and probably several others).
This commit is contained in:
Adrien Crivelli 2013-11-22 19:33:56 +09:00
parent f5bd6dc0f2
commit 5d6687b6ce

View File

@ -233,10 +233,12 @@ class PHPExcel_Cell
{ {
// set the value according to data type // set the value according to data type
switch ($pDataType) { switch ($pDataType) {
case PHPExcel_Cell_DataType::TYPE_NULL:
$this->_value = $pValue;
break;
case PHPExcel_Cell_DataType::TYPE_STRING2: case PHPExcel_Cell_DataType::TYPE_STRING2:
$pDataType = PHPExcel_Cell_DataType::TYPE_STRING; $pDataType = PHPExcel_Cell_DataType::TYPE_STRING;
case PHPExcel_Cell_DataType::TYPE_STRING: case PHPExcel_Cell_DataType::TYPE_STRING:
case PHPExcel_Cell_DataType::TYPE_NULL:
case PHPExcel_Cell_DataType::TYPE_INLINE: case PHPExcel_Cell_DataType::TYPE_INLINE:
$this->_value = PHPExcel_Cell_DataType::checkString($pValue); $this->_value = PHPExcel_Cell_DataType::checkString($pValue);
break; break;