Skip to main content

Tabulate Node (Shapes > Grouping)

What it does

This node applies pre-defined (empty) table structures to your already tagged and ordered table content, producing complete tables populated with that content.

Tip

Use the Set Table Attributes Node to add table summaries, header scopes and cell spans. 

Use it for

Use the Tabulate node for tables with complex grid layouts that cannot be reliably detected by the Detect Table node.

Recommended workflow:

  • For simple table layouts:
    1. Use the Group Spatially node to group grid elements and content.
    2. Pass the result to the Detect Table node.
      → This approach is faster and more efficient.
  • For complex table layouts that detection fails on:
    → Use the Tabulate Node as a fallback solution.

How to use it

  1. Drag and drop the node from the Node Library into your template:
    Node Library > Folder Shapes > Folder Grouping
  2. Connect the node with other nodes in the Data Flow of your template. Connect the table content to the Items input port and the table structure to the Structures input port.
  3. Specify the settings in the Node Properties task pane.

Node Input

  • Items: Connect a node containing only the table content (typically shape trees with tagged table text), excluding any shapes that form the table grid.
  • Structures: Connect a node containing the table structure. This usually consists of path shapes (e.g., lines or rectangles) that visually define the table grid. Column and row structures should be placed in separate shape trees with distinct names to allow selection in the Node Properties.

Node Output

Tables: Outputs shape trees that represent complete tables.

Node Properties

Node Name

You can assign a custom name to the node to help identify its purpose within your template.


Column Structure Selector

Use Path Language to select the elements within the shape trees of the Structures input that contain the column structures.

Example:

/s:TableFrame/TableColumns/*

Selects all items nested inside second-level elements named "TableColumns", which are themselves inside the root element "TableFrame".


Row Structure Selector

Use Path Language to select the elements within the shape trees of the Structures input that contain the row structures.

Example:

/s:TableFrame/TableRows/*

Selects all items nested inside second-level elements named "TableRows", which are themselves inside the root element "TableFrame".


Column Boundary Left

Define which property of the column structures selected with the Column Structure Selector represents the left boundary of each column.

Available variables:

Note: All variables refer to the order and relationships of found columns or rows within a single table structure (as selected by the Column Structure Selector/Row Structure Selector), not to the list of the Structures input.

  • structure: the structure item selected with the Column Structure Selector. structure has the same properties as a shape tree object.
  • firstCol: refers to the first column in the sequence of columns identified by the Column Structure Selector within a single table structure.
  • lastCol: refers to the last column in the sequence of selected columns identified by the Column Structure Selector within a single table structure.
  • prevCol: refers to the immediately preceding column in the sequence of identified columns within a table structure. prevCol has the same properties as a shape tree object.
  • nextCol: refers to the immediately following column in the sequence of identified columns within a table structure. nextCol has the same properties as a shape tree object.
  • colIndex: index of the column in the sequence of identified columns within a table structure.
  • colCount: total number of columns in the sequence of identified columns within a table structure.

Expected return type: double

Example:

structure.left

Uses the left edge of the selected column structures (e.g., background rectangles behind header cells).


Column Boundary Right

Define which property of the column structures selected with the Column Structure Selector represents the right boundary of each column.

Available variables:

  • structure: the structure item selected with the Column Structure Selector. structure has the same properties as a shape tree object.
  • firstCol: refers to the first column in the sequence of columns identified by the Column Structure Selector within a single table structure.
  • lastCol: refers to the last column in the sequence of selected columns identified by the Column Structure Selector within a single table structure.
  • prevCol: refers to the immediately preceding column in the sequence of identified columns within a table structure. prevCol has the same properties as a shape tree object.
  • nextCol: refers to the immediately following column in the sequence of identified columns within a table structure. nextCol has the same properties as a shape tree object.
  • colIndex: index of the column in the sequence of identified columns within a table structure.
  • colCount: total number of columns in the sequence of identified columns within a table structure.

Expected return type: double

Example:

structure.right

Uses the right edge of the selected column structures (e.g., background rectangles behind header cells).


Row Boundary Top

Define which property of the row structures selected with the Row Structure Selector represents the top boundary of each row.

Available variables:

  • structure: the structure item selected with the Row Structure Selector. structure has the same properties as a shape tree object.
  • firstRow: refers to the first row in the sequence of rows identified by the Row Structure Selector within a single table structure.
  • lastRow: refers to the last row in the sequence of selected rows identified by the Row Structure Selector within a single table structure.
  • prevRow: refers to the immediately preceding row in the sequence of identified rows within a table structure. prevRow has the same properties as a shape tree object.
  • nextRow: refers to the immediately following row in the sequence of identified rows within a table structure. nextRow has the same properties as a shape tree object.
  • rowIndex: index of the row in the sequence of identified rows within a table structure.
  • rowCount: total number of rows in the sequence of identified rows within a table structure.

Expected return type: double

Example:

first ? structure.top : prev.bottom

Uses the top edge of the selected row structure element if it's the first row in the table; otherwise, uses the bottom edge of the previous row.


Row Boundary Bottom

Define which property of the row structures selected with the Row Structure Selector represents the bottom boundary of each row.

Available variables:

  • structure: the structure item selected with the Row Structure Selector. structure has the same properties as a shape tree object.
  • firstRow: refers to the first row in the sequence of rows identified by the Row Structure Selector within a single table structure.
  • lastRow: refers to the last row in the sequence of selected rows identified by the Row Structure Selector within a single table structure.
  • prevRow: refers to the immediately preceding row in the sequence of identified rows within a table structure. prevRow has the same properties as a shape tree object.
  • nextRow: refers to the immediately following row in the sequence of identified rows within a table structure. nextRow has the same properties as a shape tree object.
  • rowIndex: index of the row in the sequence of identified rows within a table structure.
  • rowCount: total number of rows in the sequence of identified rows within a table structure.

Expected return type: double

Example:

first ? structure.bottom : structure.top

Uses the bottom edge of the selected row structure if it's the first row in the table; otherwise, uses the top edge.


Table Name Expression

Assign names to table shape trees for easier reference in later processing. Use static strings or expressions.

Available variables:

  • firstTable: refers to the first table in the sequence of identified tables.
  • lastTable: refers to the last table in the sequence of identified tables.
  • tableIndex: index of the table in the sequence of identified tables.
  • tableCount: total number of tables in the sequence of identified tables.

Expected return type: string

Example:

"Table"

Assigns the name "Table" to all table shape trees.


Row Name Expression

Assign names to row shape trees for easier reference in later processing. Use static strings or expressions.

Available variables:

  • firstRow: refers to the first row in a single table
  • lastRow: refers to the last row in a single table
  • rowIndex: index of the table row in a single table
  • rowCount: total number of rows in a single table

Expected return type: string

Example:

"TR"

Assigns the name "TR" to all row shape trees.


Cell Name Expression

Assign names to cell shape trees for easier reference in later processing. Use static strings or expressions.

Available variables:

  • firstRow: refers to all cells in the first row in a single table
  • lastRow: refers to all cells in the last row in a single table
  • rowIndex: index of the table row in a single table
  • rowCount: total number of rows in a single table
  • firstCol: refers to all cells in the first column in a single table
  • lastCol: refers to all cells in the last column in a single table
  • colCount: total number of columns in a single table
  • colIndex: index of the table column in a single table

Expected return type: string

Examples:

rowIndex = 0 ? "TH" : "TD"

Assigns the name "TH" to cells in the first row, and "TD" to all others.

rowIndex <= 1 ? "TH" : "TD"

Assigns the name "TH" to cells in the first and second column, and "TD" to all others.