public static Table AddTable()

in src/lib/Microsoft.Fx.Portability.Reports.Excel/OpenXmlExtensions.cs [44:110]


        public static Table AddTable(this Worksheet worksheet, int rowStart, int rowCount, int columnStart, params string[] headers)
        {
            if (rowCount == 1)
            {
                rowCount++;
            }

            var range = ComputeRange(rowStart, rowCount, columnStart, headers.Length);

            var sheetViews = worksheet.GetFirstChild<SheetViews>();
            if (sheetViews == null)
            {
                sheetViews = worksheet.InsertAt(new SheetViews(), 0);
            }

            var sheetView = sheetViews.AppendChild(new SheetView());
            sheetView.WorkbookViewId = 0;

            var selection = sheetView.AppendChild(new Selection());
            selection.SequenceOfReferences = new ListValue<StringValue>() { InnerText = range };
            selection.ActiveCell = range.Substring(0, range.IndexOf(":", StringComparison.Ordinal));

            var tableDefPart = worksheet.WorksheetPart.AddNewPart<TableDefinitionPart>();

            var tp = new TablePart
            {
                Id = worksheet.WorksheetPart.GetIdOfPart(tableDefPart)
            };
            var tableParts = worksheet.GetFirstChild<TableParts>();
            if (tableParts == null)
            {
                tableParts = worksheet.AppendChild(new TableParts());
            }

            tableParts.AppendChild(tp);

            var tableID = GetNextTableId(worksheet);

            tableDefPart.Table = new Table()
            {
                Id = tableID,
                Name = tableID.ToString(CultureInfo.CurrentCulture),
                DisplayName = "Table" + tableID.ToString(CultureInfo.CurrentCulture)
            };
            tableDefPart.Table.Reference = range;

            var columnCount = (uint)headers.Length;
            var tc = tableDefPart.Table.AppendChild(new TableColumns() { Count = columnCount });
            for (uint i = 0; i < columnCount; i++)
            {
                tc.AppendChild(new TableColumn() { Id = i + 1, Name = headers[i] });
            }

            tableDefPart.Table.AutoFilter = new AutoFilter
            {
                Reference = range
            };

            var styleInfo = tableDefPart.Table.AppendChild(new TableStyleInfo());
            styleInfo.Name = "TableStyleMedium2";
            styleInfo.ShowFirstColumn = false;
            styleInfo.ShowRowStripes = true;
            styleInfo.ShowLastColumn = false;
            styleInfo.ShowColumnStripes = false;

            return tableDefPart.Table;
        }