Diviser la Table
Un tableau, représenté dans le modèle d’objet de document Aspose.Words, est composé de lignes et de cellules indépendantes, ce qui facilite la division d’un tableau.
Pour manipuler une table pour la diviser en deux tables, il suffit de déplacer certaines des lignes de la table d’origine vers la nouvelle. Pour ce faire, nous devons choisir la ligne par laquelle nous voulons diviser la table.
Nous pouvons créer deux tables à partir de la table d’origine en suivant ces étapes simples:
- Créez un clone de la table sans cloner les enfants pour conserver les lignes déplacées et les insérer après la table d’origine
- En commençant par la ligne spécifiée, déplacez toutes les lignes suivantes vers cette deuxième table
L’exemple de code suivant montre comment diviser une table en deux tables sur une ligne spécifique:
// 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"); |