예제 #1
0
        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);
        }