// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git.
auto doc = MakeObject<Document>(MyDir + u"Tables.docx");

auto firstTable = System::ExplicitCast<Table>(doc->GetChild(NodeType::Table, 0, true));

// We will split the table at the third row (inclusive).
SharedPtr<Row> row = firstTable->get_Rows()->idx_get(2);

// Create a new container for the split table.
auto table = System::ExplicitCast<Table>(firstTable->Clone(false));

// Insert the container after the original.
firstTable->get_ParentNode()->InsertAfter(table, firstTable);

// Add a buffer paragraph to ensure the tables stay apart.
firstTable->get_ParentNode()->InsertAfter(MakeObject<Paragraph>(doc), firstTable);

SharedPtr<Row> currentRow;

do
{
    currentRow = firstTable->get_LastRow();
    table->PrependChild(currentRow);
} while (currentRow != row);

doc->Save(ArtifactsDir + u"WorkingWithTables.SplitTable.docx");