Click or drag to resize

TableRowFormat Class

Represents a set of properties which shall be applied to a specific TableRow.
Inheritance Hierarchy
SystemObject
  SautinSoft.DocumentFormat
    SautinSoft.Document.TablesTableRowFormat

Namespace: SautinSoft.Document.Tables
Assembly: SautinSoft.Document (in SautinSoft.Document.dll) Version: 2024.1.24
Syntax
public sealed class TableRowFormat : Format

The TableRowFormat type exposes the following members.

Constructors
 NameDescription
Public methodCode exampleTableRowFormat Initializes a new instance of TableRowFormat class.
Top
Properties
 NameDescription
Public propertyAllowBreakAcrossPages When true, the text in a table row is allowed to split across a page break.
Public propertyGridAfter Gets or sets the number of TableColumn in the parent table's Columns which shall be left after the last cell in the table row.
Public propertyGridBefore Gets or sets the number of TableColumn in the parent table's Columns which must be skipped before the contents of this table row (its table cells) are added to the parent table.
Public propertyCode exampleHeight Gets or sets the table row height.
Public propertyHidden Gets or sets a value indicating whether table row shall be hidden from display at display time in a document.
Public propertyRepeatOnEachPage Gets or sets a value indicating whether the table row shall be repeated at the top of each new page on which part of it's table is displayed.
Top
Methods
 NameDescription
Public methodClearFormatting Clears the formatting.
(Overrides FormatClearFormatting)
Public methodClone Clones this TableRowFormat instance.
Public methodEquals Determines whether the specified object is equal to this TableRowFormat instance.
(Overrides ObjectEquals(Object))
Top
Example

See Developer Guide: How to apply formatting for table rows

How to apply formatting for table rows in C#
using SautinSoft.Document;
using SautinSoft.Document.Drawing;
using SautinSoft.Document.Tables;
using System.Linq;

namespace Example
{
    class Program
    {
        static void Main(string[] args)
        {
            // Get your free 30-day key here:   
            // https://sautinsoft.com/start-for-free/

            TableRowFormatting();
        }
        /// <summary>
        /// Shows how to set a height for a table row, repeat a row as header on each page, shift a row by N columns to the right.
        /// </summary>
        /// <remarks>
        /// Details: https://sautinsoft.com/products/document/help/net/developer-guide/tablerow-format.php
        /// </remarks>
        static void TableRowFormatting()
        {
            string docxPath = @"FormattedTable.docx";

            // Let's create document.
            DocumentCore dc = new DocumentCore();

            Section s = new Section(dc);
            dc.Sections.Add(s);


            int rows = 30;
            int columns = 5;

            Table t = new Table(dc, rows, columns);
            t.TableFormat.PreferredWidth = new TableWidth(100, TableWidthUnit.Percentage);
            t.TableFormat.Borders.SetBorders(MultipleBorderTypes.All, BorderStyle.Single, Color.DarkGray, 1);
            t.TableFormat.AutomaticallyResizeToFitContents = false;
            s.Blocks.Add(t);

            // Specify row height:
            // 10 mm - for odd rows.
            // 15 mm - for even rows.
            double oddHeight = LengthUnitConverter.Convert(10, LengthUnit.Millimeter, LengthUnit.Point);
            double evenHeight = LengthUnitConverter.Convert(15, LengthUnit.Millimeter, LengthUnit.Point);
            for (int r = 0; r < t.Rows.Count; r++)
            {
                TableRow row = t.Rows[r];
                if (r % 2 != 0)
                    row.RowFormat.Height = new TableRowHeight(evenHeight, HeightRule.AtLeast);
                else
                    row.RowFormat.Height = new TableRowHeight(oddHeight, HeightRule.AtLeast);
            }

            // Add the table caption - mark the specific row (for example: 0) to repeat on each page.
            TableRow firstRow = t.Rows[0];
            // Repeate as header row at the top of each page.
            // Note: Only the first row in the table can be set up as header.
            firstRow.RowFormat.RepeatOnEachPage = true;

            // Merge all cells into a one in the first row (Caption).
            int colSpan = firstRow.Cells.Count;
            for (int c = firstRow.Cells.Count - 1; c>=1; c--)
            {
                firstRow.Cells.RemoveAt(c);
            }
            // Specify how many columns this cell will take up.
            firstRow.Cells[0].ColumnSpan = colSpan;

            // Set the table caption in the first row and first cell. 
            Paragraph p = new Paragraph(dc);
            p.Inlines.Add(new Run(dc, "This is the Row 0 (RepeatOnEachPage = true)", new CharacterFormat() { FontColor = Color.Blue, Size = 20 }));
            p.ParagraphFormat.Alignment = HorizontalAlignment.Center;
            t.Rows[0].Cells[0].Blocks.Add(p);

            // Another interesting properties of TableRowFormat:
            // GridBefore and GridAfter
            // Add "Total" at the end of the table.
            TableRow rowTotal = new TableRow(dc);
            rowTotal.Cells.Add(new TableCell(dc));
            rowTotal.Cells[0].Content.Start.Insert(string.Format("Total rows: {0}", rows), new CharacterFormat() { FontColor = Color.Red, Size = 30 });

            // Shift the rowTotal to the right corner.
            // In our case, shift on 4 columns.
            rowTotal.RowFormat.GridBefore = columns-1;


            rowTotal.RowFormat.Height = new TableRowHeight(evenHeight, HeightRule.AtLeast);
            t.Rows.Add(rowTotal);            

            // Save our document into DOCX format.
            dc.Save(docxPath);

            // Open the result for demonstration purposes.
            System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo(docxPath) { UseShellExecute = true });
        }
    }
}
How to apply formatting for table rows in VB.Net
Imports SautinSoft.Document
Imports SautinSoft.Document.Drawing
Imports SautinSoft.Document.Tables
Imports System.Linq

Namespace Example
    Friend Class Program
        Shared Sub Main(ByVal args() As String)
            TableRowFormatting()
        End Sub
                ''' Get your free 30-day key here:   
                ''' https://sautinsoft.com/start-for-free/
        ''' <summary>
        ''' Shows how to set a height for a table row, repeat a row as header on each page, shift a row by N columns to the right.
        ''' </summary>
        ''' <remarks>
        ''' Details: https://sautinsoft.com/products/document/help/net/developer-guide/tablerow-format.php
        ''' </remarks>
        Private Shared Sub TableRowFormatting()
            Dim docxPath As String = "FormattedTable.docx"

            ' Let's create document.
            Dim dc As New DocumentCore()

            Dim s As New Section(dc)
            dc.Sections.Add(s)


            Dim rows As Integer = 30
            Dim columns As Integer = 5

            Dim t As New Table(dc, rows, columns)
            t.TableFormat.PreferredWidth = New TableWidth(100, TableWidthUnit.Percentage)
            t.TableFormat.Borders.SetBorders(MultipleBorderTypes.All, BorderStyle.Single, Color.DarkGray, 1)
            t.TableFormat.AutomaticallyResizeToFitContents = False
            s.Blocks.Add(t)

            ' Specify row height:
            ' 10 mm - for odd rows.
            ' 15 mm - for even rows.
            Dim oddHeight As Double = LengthUnitConverter.Convert(10, LengthUnit.Millimeter, LengthUnit.Point)
            Dim evenHeight As Double = LengthUnitConverter.Convert(15, LengthUnit.Millimeter, LengthUnit.Point)
            For r As Integer = 0 To t.Rows.Count - 1
                Dim row As TableRow = t.Rows(r)
                If r Mod 2 <> 0 Then
                    row.RowFormat.Height = New TableRowHeight(evenHeight, HeightRule.AtLeast)
                Else
                    row.RowFormat.Height = New TableRowHeight(oddHeight, HeightRule.AtLeast)
                End If
            Next r

            ' Add the table caption - mark the specific row (for example: 0) to repeat on each page.
            Dim firstRow As TableRow = t.Rows(0)
            ' Repeate as header row at the top of each page.
            ' Note: Only the first row in the table can be set up as header.
            firstRow.RowFormat.RepeatOnEachPage = True

            ' Merge all cells into a one in the first row (Caption).
            Dim colSpan As Integer = firstRow.Cells.Count
            For c As Integer = firstRow.Cells.Count - 1 To 1 Step -1
                firstRow.Cells.RemoveAt(c)
            Next c
            ' Specify how many columns this cell will take up.
            firstRow.Cells(0).ColumnSpan = colSpan

            ' Set the table caption in the first row and first cell. 
            Dim p As New Paragraph(dc)
            p.Inlines.Add(New Run(dc, "This is the Row 0 (RepeatOnEachPage = true)", New CharacterFormat() With {
                .FontColor = Color.Blue,
                .Size = 20
            }))
            p.ParagraphFormat.Alignment = HorizontalAlignment.Center
            t.Rows(0).Cells(0).Blocks.Add(p)

            ' Another interesting properties of TableRowFormat:
            ' GridBefore and GridAfter
            ' Add "Total" at the end of the table.
            Dim rowTotal As New TableRow(dc)
            rowTotal.Cells.Add(New TableCell(dc))
            rowTotal.Cells(0).Content.Start.Insert(String.Format("Total rows: {0}", rows), New CharacterFormat() With {
                .FontColor = Color.Red,
                .Size = 30
            })

            ' Shift the rowTotal to the right corner.
            ' In our case, shift on 4 columns.
            rowTotal.RowFormat.GridBefore = columns-1


            rowTotal.RowFormat.Height = New TableRowHeight(evenHeight, HeightRule.AtLeast)
            t.Rows.Add(rowTotal)

            ' Save our document into DOCX format.
            dc.Save(docxPath)

            ' Open the result for demonstration purposes.
            System.Diagnostics.Process.Start(New System.Diagnostics.ProcessStartInfo(docxPath) With {.UseShellExecute = True})
        End Sub
    End Class
End Namespace
See Also