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");
view raw replace-text.cs hosted with ❤ by GitHub

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);
view raw extract-text.cs hosted with ❤ by GitHub

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);