public override void WriteBeginTable(Axis horizontalAxis) { var tableContext = new DocXBasedTableContext { HorizontalAxis = horizontalAxis }; _activeTables.Push(tableContext); }
private Table AddTable(DocXBasedTableContext tableContext) { if (_activeInsertBeforeOrAfter is Table) { _activeInsertBeforeOrAfter = _activeInsertBeforeOrAfter.InsertParagraphAfterSelf(string.Empty); } var table = _activeInsertBeforeOrAfter.InsertTableAfterSelf(_templateTable); _activeInsertBeforeOrAfter = table; while (table.RowCount > 1) { table.RemoveRow(); } while (table.ColumnCount > 1) { table.RemoveColumn(); } var headerRow = table.Rows.First(); foreach (var member in tableContext.LinearisedHorizontalAxis) { table.InsertColumn(); var itemMember = member as ItemMember; var placeholder = itemMember != null?string.Format(Placeholders.CellMemberLevel, itemMember.Depth) : Placeholders.CellMember; var cell = headerRow.Cells.Last(); cell.VerticalAlignment = VerticalAlignment.Bottom; // Hardcoded. We could read it from the template if we wanted. AddCellParagraph(cell, placeholder, GetMemberText(member)); } return(table); }