Simple Table

A Table is a document element used to arrange content in rows and columns. With a table it's easy to organize and display large amounts of data in a grid like structure.

GemBox.Document's table concept is same as in most tables, like the ones you can find in Word or HTML documents. It's comprised of cells, rows and columns.

The following example demonstrates how you can create and populate a simple table.

Screenshot of Word file with simple table
Word document with Table, Rows and Cells
using GemBox.Document;
using GemBox.Document.Tables;

class Program
{
    static void Main()
    {
        // If using Professional version, put your serial key below.
        ComponentInfo.SetLicense("FREE-LIMITED-KEY");
        
        int rowCount = %RowCount%;
        int columnCount = %ColumnCount%;

        var document = new DocumentModel();

        var section = new Section(document);
        document.Sections.Add(section);

        // Create a table with 100% width.
        var table = new Table(document);
        table.TableFormat.PreferredWidth = new TableWidth(100, TableWidthUnit.Percentage);
        section.Blocks.Add(table);

        for (int r = 0; r < rowCount; r++)
        {
            // Create a row and add it to table.
            var row = new TableRow(document);
            table.Rows.Add(row);

            for (int c = 0; c < columnCount; c++)
            {
                // Create a cell and add it to row.
                var cell = new TableCell(document);
                row.Cells.Add(cell);

                // Create a paragraph and add it to cell.
                var paragraph = new Paragraph(document, $"Cell ({r + 1},{c + 1})");
                cell.Blocks.Add(paragraph);
            }
        }

        document.Save("Simple Table.%OutputFileType%");
    }
}
Imports GemBox.Document
Imports GemBox.Document.Tables

Module Program

    Sub Main()

        ' If using Professional version, put your serial key below.
        ComponentInfo.SetLicense("FREE-LIMITED-KEY")

        Dim rowCount As Integer = %RowCount%
        Dim columnCount As Integer = %ColumnCount%

        Dim document As New DocumentModel()

        Dim section As New Section(document)
        document.Sections.Add(section)

        ' Create a table with 100% width.
        Dim table As New Table(document)
        table.TableFormat.PreferredWidth = New TableWidth(100, TableWidthUnit.Percentage)
        section.Blocks.Add(table)

        For r As Integer = 0 To rowCount - 1

            ' Create a row and add it to table.
            Dim row As New TableRow(document)
            table.Rows.Add(row)

            For c As Integer = 0 To columnCount - 1

                ' Create a cell and add it to row.
                Dim cell As New TableCell(document)
                row.Cells.Add(cell)

                ' Create a paragraph and add it to cell.
                Dim paragraph As New Paragraph(document, $"Cell ({r + 1},{c + 1})")
                cell.Blocks.Add(paragraph)

            Next

        Next

        document.Save("Simple Table.%OutputFileType%")

    End Sub
End Module

You can create a nested table by adding a new table into a cell's TableCell.Blocks collection.

You can also create a table from an HTML source (e.g. "<table>", "<tr>", "<td>" tags) by using the ContentRange.LoadText or ContentPosition.LoadText methods, like shown in the Insert HTML and RTF content to Word file example.

Check next example or download examples from GitHub.