예제 #1
0
        public override void WriteBeginTable(Axis horizontalAxis)
        {
            var tableContext = new DocXBasedTableContext
            {
                HorizontalAxis = horizontalAxis
            };

            _activeTables.Push(tableContext);
        }
예제 #2
0
        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);
        }