Esempio n. 1
0
        public void Write(Marker marker, Table table)
        {
            if (table == null)
            {
                return;
            }

            var markerParagraph = marker.Container;
            var parent          = markerParagraph.Parent;

            var cellWriter = new TableCellWriter();

            var tableElement = new W.Table();

            var tableProp = new TableProperties();

            if (!string.IsNullOrEmpty(table.Width))
            {
                var tableStyle = new TableStyle()
                {
                    Val = "Table"
                };

                // Make the table width 100% of the page width.
                var tableWidth = new TableWidth()
                {
                    Width = table.Width, Type = TableWidthUnitValues.Pct
                };

                // Apply
                tableProp.Append(tableStyle, tableWidth);
                tableElement.AppendChild(tableProp);
            }

            AppendMargins(tableProp, table.TopMargin, table.LeftMargin, table.BottomMargin, table.RightMargin);

            foreach (var row in table.Rows)
            {
                var rowElement = new W.TableRow();

                if (row.Height > 0)
                {
                    rowElement.Append(
                        new TableRowProperties(
                            new TableRowHeight()
                    {
                        Val = (UInt32Value)(row.Height * 1U)
                    }
                            )
                        );
                }

                foreach (var cell in row.Cells)
                {
                    cellWriter.WriteTo(rowElement, cell);
                }

                tableElement.AppendChild(rowElement);
            }

            if (table.PageBreak == PageBreak.Before)
            {
                insertPageBreak(parent, markerParagraph);
            }

            parent.InsertAfter(tableElement, markerParagraph);
        }