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;
}