dataType = $cellNode->getAttributeNS(Reader::NS_OFFICE, 'value-type'); if ($cellNode->childNodes->length == 0) { $this->dataType = self::TYPE_EMPTY; $this->dataValue = NULL; $this->displayValue = ''; } else { $p = $cellNode->childNodes->item(0); $this->displayValue = $p->textContent; unset($p); /** * Note: cells with office:value-type==string don't have a office:value */ if ($this->dataType == self::TYPE_STRING) { //$this->dataValue = $this->displayValue; } else { $this->dataValue = $cellNode->getAttributeNS(Reader::NS_OFFICE, 'value'); } } } /* echo "children: " . $cellNode->childNodes->length . ", type = " . $this->dataType . ", value = " . substr($this->dataValue, 0, 20) . ", display = <" . substr($this->displayValue, 0, 20) . ">" . PHP_EOL; */ } /** * Convert a PHP value to a wrapped OpenDocument cell value * * @param mixed $x */ function set($x = NULL): void { $type = gettype($x); switch ($type) { case 'NULL': $this->dataType = self::TYPE_EMPTY; $this->dataValue = NULL; $this->displayValue = NULL; break; case 'string': $this->dataType = self::TYPE_STRING; $this->dataValue = NULL; $this->displayValue = $x; break; case 'double': $this->dataType = self::TYPE_FLOAT; $this->dataValue = $x; $this->displayValue = number_format($x); break; default: $this->set(); throw new \Exception("Cell::set unsupported value type ${type}"); } } /** * implement magic method __toString * * @return string */ function __toString() { return (string) $this->displayValue; } }