package com.aspose.words.examples.programming_documents.tables.creation; import com.aspose.words.Cell; import com.aspose.words.Document; import com.aspose.words.NodeType; import com.aspose.words.Paragraph; import com.aspose.words.Row; import com.aspose.words.Table; import com.aspose.words.examples.Utils; public class InsertCloneOfExistingTable { private static final String dataDir = Utils.getSharedDataDir(InsertCloneOfExistingTable.class) + "Tables/"; public static void main(String[] args) throws Exception { // Make a clone of a table in the document and insert it after the original table cloneOfATable(); // Remove all content from the cells of a cloned table removeAllContentFromCellsOfAClonedTable(); // Make a clone of the last row of a table and append it to the table cloneLastRowOfATable(); } public static void cloneOfATable() throws Exception { Document doc = new Document(dataDir + "Table.SimpleTable.doc"); // Retrieve the first table in the document. Table table = (Table) doc.getChild(NodeType.TABLE, 0, true); // Create a clone of the table. Table tableClone = (Table) table.deepClone(true); // Insert the cloned table into the document after the original table.getParentNode().insertAfter(tableClone, table); // Insert an empty paragraph between the two tables or else they will be combined into one // upon save. This has to do with document validation. table.getParentNode().insertAfter(new Paragraph(doc), table); doc.save(dataDir + "Table_CloneTableAndInsert_Out.doc"); } public static void removeAllContentFromCellsOfAClonedTable() throws Exception { Document doc = new Document(dataDir + "Table.SimpleTable.doc"); // Retrieve the first table in the document. Table table = (Table) doc.getChild(NodeType.TABLE, 0, true); // Create a clone of the table. Table tableClone = (Table) table.deepClone(true); for (Cell cell : (Iterable<Cell>) tableClone.getChildNodes(NodeType.CELL, true)) { cell.removeAllChildren(); } // Insert the cloned table into the document after the original table.getParentNode().insertAfter(tableClone, table); // Insert an empty paragraph between the two tables or else they will be combined into one // upon save. This has to do with document validation. table.getParentNode().insertAfter(new Paragraph(doc), table); doc.save(dataDir + "RemoveAllContentFromCellsOfAClonedTable_Out.doc"); } public static void cloneLastRowOfATable() throws Exception { Document doc = new Document(dataDir + "Table.SimpleTable.doc"); // Retrieve the first table in the document. Table table = (Table) doc.getChild(NodeType.TABLE, 0, true); // Clone the last row in the table. Row clonedRow = (Row) table.getLastRow().deepClone(true); // Remove all content from the cloned row's cells. This makes the row ready for // new content to be inserted into. for (Cell cell : clonedRow.getCells()) cell.removeAllChildren(); // Add the row to the end of the table. table.appendChild(clonedRow); doc.save(dataDir + "Table.AddCloneRowToTable_Out.doc"); } }