format('Y-m-d H:i:s'); } elseif (!($value instanceof RichText)) { $value = (string) $value; } } // Set value explicit $cell->setValueExplicit($value, self::dataTypeForValue($value)); // Done! return true; } /** * DataType for value * * @param mixed $pValue * @return string */ public static function dataTypeForValue($pValue = null) { // Match the value against a few data types if ($pValue === null) { return DataType::TYPE_NULL; } elseif ($pValue === '') { return DataType::TYPE_STRING; } elseif ($pValue instanceof RichText) { return DataType::TYPE_INLINE; } elseif ($pValue{0} === '=' && strlen($pValue) > 1) { return DataType::TYPE_FORMULA; } elseif (is_bool($pValue)) { return DataType::TYPE_BOOL; } elseif (is_float($pValue) || is_int($pValue)) { return DataType::TYPE_NUMERIC; } elseif (preg_match('/^[\+\-]?([0-9]+\\.?[0-9]*|[0-9]*\\.?[0-9]+)([Ee][\-\+]?[0-2]?\d{1,3})?$/', $pValue)) { $tValue = ltrim($pValue, '+-'); if (is_string($pValue) && $tValue{0} === '0' && strlen($tValue) > 1 && $tValue{1} !== '.') { return DataType::TYPE_STRING; } elseif ((strpos($pValue, '.') === false) && ($pValue > PHP_INT_MAX)) { return DataType::TYPE_STRING; } return DataType::TYPE_NUMERIC; } elseif (is_string($pValue) && array_key_exists($pValue, DataType::getErrorCodes())) { return DataType::TYPE_ERROR; } return DataType::TYPE_STRING; } }