Getting TableIndex of Nested Table

Hi there!

Suppose you have a document with 5 tables.
#0 and #1 are “normal” tables, i.e. there are no nested tables inside those two.
#2 has table #3 as a nested table and #4 is a “normal” table again.

When using documentBuilder.moveToCell the first parameter is the TableIndex. How to I get the Index of the correct table?

At the moment I find the correct table by utilising a bookmark with the “Name” of the table in the first row/first column of the table.

With this I use the command tableIndex = oCurrentSection.Body.Tables.IndexOf(oTable) to get the index of the table.
With #0,#1 and #2 this is OK but from then on, this approach does not work because table #3 is obviously not a member of the collection of Tables of the Body and therefore can’t be found and table #4 reports an TabIndex of 3 as if #4 where not there at all. How to I find out the correct TableIndex?

I’m using VB6 with COM-Interop

Best Regards,
Michael

Hi Michael,

Thanks for your inquiry. I am checking with this scenario and will get back to you soon.

Hi,

i finally figured it out, this is the code I use to get the index of a (nested) table:

Function getTableIndex(
oTable As Aspose_Words.Table,
oDocument As Aspose_Words.Document) _
As Long
    Dim oCurrentSect As Aspose_Words.Section
    Dim i As Long
    Dim oNode As Aspose_Words.Node
    Set oCurrentSect = oTable.GetAncestor_2(NodeType_Section)
    For Each oNode In oCurrentSect.GetChildNodes(NodeType_Table, True)
        If oNode.Equals(oTable) Then

            getTableIndex = i - 1
            Exit Function
        End If
        i = i + 1
    Next
End Function

Best regards,
Michael

Hi Michael,

Please accept my apologies for late response.

Please use the NodeCollection.IndexOf Method to get the index of table. This method returns the zero-based index of the specified node. The zero-based index of the node within the collection, if found; otherwise, -1.

It is nice to hear from you that you have solved your problem. You can use the following code snippet to get the index of all tables including nested tables.

Document doc = new Document(MyDir + "in.docx");
NodeCollection allTables = doc.GetChildNodes(NodeType.Table, true);
foreach(Table table in allTables)
{
    int tableIndex = allTables.IndexOf(table);
}