- //
- // This code is part of Document Solutions for Word demos.
- // Copyright (c) MESCIUS inc. All rights reserved.
- //
- using System;
- using System.IO;
- using System.Drawing;
- using GrapeCity.Documents.Word;
- namespace DsWordWeb.Demos
- {
- // This sample creates a simple table and adds another (nested)
- // table into a cell of the first table.
- public class NestedTable
- {
- public GcWordDocument CreateDocx()
- {
- GcWordDocument doc = new GcWordDocument();
- doc.Body.Sections.First.GetRange().Paragraphs.Add("Here is a 5 columns by 3 rows table, with a nested table in cell (2, 2):");
- var t = doc.Body.Sections.First.GetRange().Tables.Add(new string[][]
- {
- new string[] { "row 1, col 1", "row 1, col 2", "row 1, col 3", "row 1, col 4", "row 1, col 5", },
- new string[] { "row 2, col 1", "row 2, col 2", "row 2, col 3", "row 2, col 4", "row 2, col 5", },
- new string[] { "row 3, col 1", "row 3, col 2", "row 3, col 3", "row 3, col 4", "row 3, col 5", },
- }
- );
- // Create a new table style:
- var ts1 = doc.Styles.Add("Table Style 1", StyleType.Table);
- // We can enumerate all table borders, including inside borders:
- foreach (var border in ts1.Table.Borders)
- {
- border.LineStyle = LineStyle.Triple;
- border.LineWidth = 0.5f;
- border.Color.RGB = Color.Purple;
- }
- // Assign the style to the table:
- t.Style = ts1;
- // Overwrite inside border's line styles:
- ts1.Table.Borders.InsideHorizontal.LineStyle =
- ts1.Table.Borders.InsideVertical.LineStyle =
- LineStyle.Double;
- // Add some padding:
- ts1.Table.Padding.All = 3;
- // Set up cell (1,1) to visually span two following cells:
- var cell = t.Rows[1].Cells[1];
- var tn = cell.GetRange().Tables.Add();
- cell.GetRange().Paragraphs.First.GetRange().Texts.First.Value = "Cell with nested table.";
- tn.Rows.Add("Nested (1,1)", "Nested (1,2)", "Nested (1,3)");
- tn.Rows.Add("Nested (2,1)", "Nested (2,2)", "Nested (2,3)");
- tn.Rows.Add("Nested (3,1)", "Nested (3,2)", "Nested (3,3)");
- // Done:
- return doc;
- }
- }
- }