/// <summary>
    ///
    /// </summary>
    /// <param name="values"></param>
    public void WriteRow(object[] values)
    {
        Assert.IsNotNull(values);

        WriteStartRow();

        for (var columnIndex = 0; columnIndex < values.Length; columnIndex++)
        {
            var value = values[columnIndex];
            XmlSpreadsheetDataType type;
            string xmlValue;

            if (value == DBNull.Value)
            {
                xmlValue = null;
                type     = XmlSpreadsheetDataType.String;
            }
            else
            {
                var column = _table.Columns[columnIndex];
                type     = column.DataType;
                xmlValue = column.Convert(value);
            }

            var cell = new XmlSpreadsheetCell(type, xmlValue);
            cell.StyleId = $"{_tableIndex},{columnIndex}";
            cell.Write(XmlWriter);
        }

        WriteEndRow();
    }
    /// <summary>
    ///
    /// </summary>
    /// <param name="table"></param>
    public void WriteStartTable(XmlSpreadsheetTable table)
    {
        Assert.IsNotNull(table);
        _tableIndex++;
        _table = table;

        XmlWriter.WriteStartElement("Worksheet");
        XmlWriter.WriteAttributeString("ss:Name", _table.TableName);

        XmlWriter.WriteStartElement("Table");

        var columnIndex = 1;

        foreach (var column in _table.Columns)
        {
            using (XmlWriter.WriteElement("Column"))
            {
                XmlWriter.WriteAttributeString("ss:Index", columnIndex.ToString());

                if (column.Width != null)
                {
                    XmlWriter.WriteAttributeString("ss:Width", column.Width);
                }
            }

            columnIndex++;
        }

        using (XmlWriter.WriteElement("Row"))
        {
            foreach (var column in _table.Columns)
            {
                var cell =
                    new XmlSpreadsheetCell(XmlSpreadsheetDataType.String, column.ColumnName)
                {
                    StyleId = "ColumnHeader"
                };
                cell.Write(XmlWriter);
            }
        }
    }