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