public function setCell($cell, $value, $type = "auto")
    {
        if ($type == "auto") {
            $type = \gettype($value);
        }

        if (\is_array($cell)) {
            $parts["row"] = $cell[0];
            $parts["col"] = $cell[1];
        } else {
            $parts = $this->refToArray($cell);
        }

        if (!\is_array($parts)) {
            \trigger_error("Cell reference should be in the format A1 or array(0,0).", E_USER_ERROR);
            return false;
        }

        $row = $parts["row"];
        $col = $parts["col"];

        switch ($type) {

            case "string" :

                /**
                 * @todo  it would be nice if we were able to keep that
                 * characters UTF-8 or unicode
                 */
                $value = \mb_convert_encoding($value, "Windows-1252", "UTF-8");
                $length = \mb_strlen($value, "Windows-1252");

                if ($length > 255) {
                    \trigger_error("String '$value' is too long. "
                        ."Please keep to a max of 255 characters.",
                        E_USER_ERROR);
                    return false;
                }

                $this->contents .= \pack("s*", 0x0204, 8 + $length, $row, $col, 0x00, $length);
                $this->contents .= $value;

                break;

            case "integer" :
                $this->contents .= \pack("s*", 0x0203, 14, $row, $col, 0x00);
                $this->contents .= \pack("d", $value);
                break;
        }

        return true;
    }