get_ancestor method

get_ancestor(ancestor_type)

Gets the first ancestor of the specified object type.

def get_ancestor(self, ancestor_type: object):
    ...
ParameterTypeDescription
ancestor_typeobjectThe object type of the ancestor to retrieve.

Remarks

The ancestor type matches if it is equal to ancestorType or derived fromancestorType.

Returns

The ancestor of the specified type or None if no ancestor of this type was found.

get_ancestor(ancestor_type)

Gets the first ancestor of the specified NodeType.

def get_ancestor(self, ancestor_type: aspose.words.NodeType):
    ...
ParameterTypeDescription
ancestor_typeNodeTypeThe node type of the ancestor to retrieve.

Returns

The ancestor of the specified type or None if no ancestor of this type was found.

Examples

Shows how to find out if a tables are nested.

doc = aw.Document(file_name=MY_DIR + 'Nested tables.docx')
tables = doc.get_child_nodes(aw.NodeType.TABLE, True)
i = 0
while i < tables.count:
    table = tables[i].as_table()
    # Find out if any cells in the table have other tables as children.
    count = ExTable._get_child_table_count(table)
    print('Table #{0} has {1} tables directly within its cells'.format(i, count))
    # Find out if the table is nested inside another table, and, if so, at what depth.
    table_depth = ExTable._get_nested_depth_of_table(table)
    if table_depth > 0:
        print('Table #{0} is nested inside another table at depth of {1}'.format(i, table_depth))
    else:
        print('Table #{0} is a non nested table (is not a child of another table)'.format(i))
    i += 1

Shows how to find out if a tables are nested (GetNestedDepthOfTable).

@staticmethod
def _get_nested_depth_of_table(table):
    depth = 0
    parent = table.get_ancestor(aw.tables.Table)
    while parent is not None:
        depth += 1
        parent = parent.get_ancestor(aw.tables.Table)
    return depth

@staticmethod
def _get_child_table_count(table):
    child_table_count = 0
    for row in table.rows:
        row = row.as_row()
        for cell in row.cells:
            cell = cell.as_cell()
            child_tables = cell.tables
            if child_tables.count > 0:
                child_table_count += 1
    return child_table_count

See Also