Praca z tekstem w tabeli
Jak wspomniano w poprzednich artykułach, tabela zwykle zawiera zwykły tekst, chociaż w komórkach tabeli można umieścić inną zawartość, taką jak obrazy lub nawet inne tabele.
Dodawanie tekstu lub innej treści do tabeli odbywa się przy pomocy odpowiednich metod klasy DocumentBuilder i zostało opisane w artykule “Utwórz tabelę”. W tym artykule porozmawiamy o tym, jak pracować z tekstem w już istniejącej tabeli.
Zamień tekst w tabeli
Tabela, jak każdy inny węzeł w Aspose.Words, ma dostęp do obiektu Range. Korzystając z obiektu zakresu tabeli, możesz zastąpić tekst w tabeli.
Obecnie obsługiwana jest możliwość używania znaków specjalnych podczas zastępowania, dzięki czemu możliwe jest zastąpienie istniejącego tekstu tekstem wieloakapitowym. Aby to zrobić, musisz użyć specjalnych metaznaków opisanych w odpowiedniej metodzie Replace.
Poniższy przykład kodu pokazuje, jak zastąpić wszystkie wystąpienia ciągu tekstowego w komórkach całej tabeli:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET.git. | |
Document doc = new Document(MyDir + "Tables.docx"); | |
Table table = (Table)doc.GetChild(NodeType.Table, 0, true); | |
table.Range.Replace("Carrots", "Eggs", new FindReplaceOptions(FindReplaceDirection.Forward)); | |
table.LastRow.LastCell.Range.Replace("50", "20", new FindReplaceOptions(FindReplaceDirection.Forward)); | |
doc.Save(ArtifactsDir + "FindAndReplace.ReplaceTextInTable.docx"); |
Wyodrębnij zwykły tekst z tabeli lub komórki
Za pomocą obiektu Range można także wywoływać metody w całym zakresie tabeli i wyodrębniać tabelę w postaci zwykłego tekstu. Aby to zrobić, użyj właściwości Text
Poniższy przykład kodu pokazuje, jak wydrukować zakres tekstu tabeli:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET.git. | |
Document doc = new Document(MyDir + "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. | |
Console.WriteLine("Contents of the table: "); | |
Console.WriteLine(table.Range.Text); |
Tę samą technikę stosuje się do wyodrębniania zawartości tylko z poszczególnych komórek tabeli.
Poniższy przykład kodu pokazuje, jak wydrukować zakres tekstu elementów wierszy i tabeli:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET.git. | |
Console.WriteLine("\nContents of the row: "); | |
Console.WriteLine(table.Rows[1].Range.Text); | |
Console.WriteLine("\nContents of the cell: "); | |
Console.WriteLine(table.LastRow.LastCell.Range.Text); |
Praca z alternatywnym tekstem tabeli
Tabele Microsoft Word zawierają formaty table title
i table description
, które stanowią alternatywną tekstową reprezentację informacji zawartych w tabeli.
W formacie Aspose.Words możesz także dodać tytuł i opis tabeli, korzystając z właściwości Title i Description. Te właściwości mają znaczenie w przypadku dokumentów DOCX zgodnych z ISO/IEC 29500. Podczas zapisywania w formatach wcześniejszych niż ISO/IEC 29500 te właściwości są ignorowane.
Poniższy przykład kodu pokazuje, jak ustawić właściwości tytułu i opisu tabeli:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET.git. | |
Document doc = new Document(MyDir + "Tables.docx"); | |
Table table = (Table) doc.GetChild(NodeType.Table, 0, true); | |
table.Title = "Test title"; | |
table.Description = "Test description"; | |
OoxmlSaveOptions options = new OoxmlSaveOptions { Compliance = OoxmlCompliance.Iso29500_2008_Strict }; | |
doc.CompatibilityOptions.OptimizeFor(Aspose.Words.Settings.MsWordVersion.Word2016); | |
doc.Save(ArtifactsDir + "WorkingWithTableStylesAndFormatting.TableTitleAndDescription.docx", options); |