toXmls() {
        // Shallow clone the node so we don't have to remove these children later if they don't belong.
        const node = _.clone(this._node);
        node.children = node.children.slice();

        // Add the columns if needed.
        this._colsNode.children = _.filter(this._colNodes, (colNode, i) => {
            // Columns should only be present if they have attributes other than min/max.
            return colNode && i === colNode.attributes.min && Object.keys(colNode.attributes).length > 2;
        });
        if (this._colsNode.children.length) {
            xmlq.insertInOrder(node, this._colsNode, nodeOrder);
        }

        // Add the hyperlinks if needed.
        this._hyperlinksNode.children = _.values(this._hyperlinks);
        if (this._hyperlinksNode.children.length) {
            xmlq.insertInOrder(node, this._hyperlinksNode, nodeOrder);
        }

        // Add the printOptions if needed.
        if (this._printOptionsNode) {
            if (Object.keys(this._printOptionsNode.attributes).length) {
                xmlq.insertInOrder(node, this._printOptionsNode, nodeOrder);
            }
        }

        // Add the pageMargins if needed.
        if (this._pageMarginsNode && this._pageMarginsPresetName) {
            // Clone to preserve the current state of this sheet.
            const childNode = _.clone(this._pageMarginsNode);
            if (Object.keys(this._pageMarginsNode.attributes).length) {
                // Fill in any missing attribute values with presets.
                childNode.attributes = _.assign(
                    this._pageMarginsPresets[this._pageMarginsPresetName],
                    this._pageMarginsNode.attributes);
            } else {
                // No need to fill in, all attributes is currently empty, simply replace.
                childNode.attributes = this._pageMarginsPresets[this._pageMarginsPresetName];
            }
            xmlq.insertInOrder(node, childNode, nodeOrder);
        }

        // Add the merge cells if needed.
        this._mergeCellsNode.children = _.values(this._mergeCells);
        if (this._mergeCellsNode.children.length) {
            xmlq.insertInOrder(node, this._mergeCellsNode, nodeOrder);
        }

        // Add the DataValidation cells if needed.
        this._dataValidationsNode.children = _.values(this._dataValidations);
        if (this._dataValidationsNode.children.length) {
            xmlq.insertInOrder(node, this._dataValidationsNode, nodeOrder);
        }

        if (this._autoFilter) {
            xmlq.insertInOrder(node, {
                name: "autoFilter",
                children: [],
                attributes: {
                    ref: this._autoFilter.address()
                }
            }, nodeOrder);
        }

        // Add the PageBreaks nodes if needed.
        ['colBreaks', 'rowBreaks'].forEach(name => {
            const breaks = this[`_${name}Node`];
            if (breaks.attributes.count) {
                xmlq.insertInOrder(node, breaks, nodeOrder);
            }
        });

        return {
            id: this._idNode,
            sheet: node,
            relationships: this._relationships
        };
    }
Convert the sheet to a collection of XML objects.
@returns {{}} The XML forms.
@ignore