public static void WriteJsonTable(this SdtElement element, string path, MainDocumentPart mainPart) { var tablejson = JObject.Parse(File.ReadAllText(path)); var boderSize = tablejson.SelectToken("$.border.outer.size").ToObject<UInt32>(); var borderColor = tablejson.SelectToken("$.border.outer.color").ToObject<string>(); var borderType = (BorderValues)tablejson.SelectToken("$.border.outer.type").ToObject<int>(); // Create an empty table. Table table = new Table(); // Create a TableProperties object and specify its border information. TableProperties tblProp = new TableProperties( new TableBorders( new TopBorder() { Val = new EnumValue<BorderValues>(borderType), Size = boderSize, Color = borderColor, }, new BottomBorder() { Val = new EnumValue<BorderValues>(borderType), Size = boderSize, Color = borderColor, }, new LeftBorder() { Val = new EnumValue<BorderValues>(borderType), Size = boderSize, Color = borderColor, }, new RightBorder() { Val = new EnumValue<BorderValues>(borderType), Size = boderSize, Color = borderColor, }, new InsideHorizontalBorder() { Val = new EnumValue<BorderValues>(borderType), Size = boderSize, Color = borderColor, }, new InsideVerticalBorder() { Val = new EnumValue<BorderValues>(borderType), Size = boderSize, Color = borderColor, } ) ); // Append the TableProperties object to the empty table. table.AppendChild<TableProperties>(tblProp); CreateTableHeader(tablejson, table); var rows = tablejson.SelectToken("$.body.rows").ToArray(); var i = 0; foreach (var row in rows) { TableRow tr = new TableRow(); foreach (var column in row) { var run = new Run(new RunProperties(new Bold(), new Color() { Val = "#000000" }), new Text(column.ToString())); if (column is JObject columnObj && column.SelectToken("$.type").ToString() == "image") { InsertAPicture(mainPart, column.SelectToken("$.path").ToString(), run, column.SelectToken("$.width").ToString()); } tr.Append(new TableCell( new TableCellProperties( new Shading() { Color = "auto", Fill = i % 2 == 0 ? "auto" : "#eeeeee", Val = ShadingPatternValues.Clear }), new Paragraph(new ParagraphProperties(new Justification() { Val = JustificationValues.Center }), run ) )); } i++; table.Append(tr); } element.RemoveAllChildren(); element.AppendChild(table); }