Práce s textem v tabulce
Jak je uvedeno v předchozích článcích, tabulka obvykle obsahuje prostý text, i když jiný obsah, jako jsou obrázky nebo dokonce jiné tabulky mohou být umístěny v tabulkách.
Přidávání textu nebo jiného obsahu do tabulky se provádí vhodnými metodami DocumentBuilder třída a je popsána v “Vytvořit stůl” článek. V tomto článku budeme hovořit o tom, jak pracovat s textem v již existující tabulce.
Nahradit text v tabulce
Stůl, jako každý jiný uzel v Aspose.Words, má přístup k Range objekt. Pomocí objektu rozsahu tabulky můžete text nahradit v tabulce.
V současné době je podporována schopnost používat zvláštní znaky při výměně, takže je možné nahradit existující text text vícebodovým textem. K tomu je třeba použít speciální metaznaky popsané v odpovídajících Replace metoda.
Následující příklad kódu ukazuje, jak nahradit všechny případy řetězce textu v buňkách celé tabulky:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git. | |
Document doc = new Document(getMyDir() + "Tables.docx"); | |
Table table = (Table)doc.getChild(NodeType.TABLE, 0, true); | |
table.getRange().replace("Carrots", "Eggs", new FindReplaceOptions(FindReplaceDirection.FORWARD)); | |
table.getLastRow().getLastCell().getRange().replace("50", "20", new FindReplaceOptions(FindReplaceDirection.FORWARD)); | |
doc.save(getArtifactsDir() + "FindAndReplace.ReplaceTextInTable.docx"); |
Extrahovat prostý text z tabulky
Použití Range objekt, můžete také volat metody na celém rozsahu tabulky a extrahovat tabulku jako prostý text. K tomu použijte Text majetek
Následující příklad kódu ukazuje, jak tisknout rozsah textu tabulky:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git. | |
Document doc = new Document(getMyDir() + "Tables.docx"); | |
Table table = (Table) doc.getChild(NodeType.TABLE, 0, true); | |
// The range text will include control characters such as "\a" for a cell. | |
// You can call ToString and pass SaveFormat.Text on the desired node to find the plain text content. | |
System.out.println("Contents of the table: "); | |
System.out.println(table.getRange().getText()); |
Stejná technika se používá pouze k získání obsahu z jednotlivých stolních buněk.
Následující příklad kódu ukazuje, jak tisknout textovou řadu prvků řádku a tabulky:
Následující příklad kódu ukazuje, jak tisknout textový rozsah prvků řádku a tabulky.
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git. | |
System.out.println("\nContents of the row: "); | |
System.out.println(table.getRows().get(1).getRange().getText()); | |
System.out.println("\nContents of the cell: "); | |
System.out.println(table.getLastRow().getLastCell().getRange().getText()); |
Práce s alternativním textem tabulky
Microsoft Word tabulky mají table title
a table description
které poskytují alternativní textové znázornění informací obsažených v tabulce.
In Aspose.Words, můžete také přidat název tabulky a popis pomocí Title a Description vlastnosti. Tyto vlastnosti mají význam pro dokumenty DOCX odpovídající ISO/IEC 29500. Při ukládání ve formátech dříve než ISO/IEC 29500, tyto vlastnosti jsou ignorovány.
Následující příklad kódu ukazuje, jak nastavit vlastnosti názvu a popisu tabulky:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git. | |
Document doc = new Document(getMyDir() + "Tables.docx"); | |
Table table = (Table) doc.getChild(NodeType.TABLE, 0, true); | |
table.setTitle("Test title"); | |
table.setDescription("Test description"); | |
OoxmlSaveOptions options = new OoxmlSaveOptions(); { options.setCompliance(OoxmlCompliance.ISO_29500_2008_STRICT); } | |
doc.getCompatibilityOptions().optimizeFor(com.aspose.words.MsWordVersion.WORD_2016); | |
doc.save(getArtifactsDir() + "WorkingWithTableStylesAndFormatting.SetTableTitleAndDescription.docx", options); |