Trabajar con texto en una tabla

Como se mencionó en artículos anteriores, una tabla generalmente contiene texto sin formato, aunque se pueden colocar otros contenidos como imágenes o incluso otras tablas en las celdas de la tabla.

La adición de texto u otro contenido a la tabla se realiza utilizando los métodos apropiados de la clase DocumentBuilder y se describe en el artículo “Crear una tabla”. En este artículo, hablaremos sobre cómo trabajar con texto en una tabla ya existente.

Reemplazar texto en una tabla

La tabla, como cualquier otro nodo en Aspose.Words, tiene acceso al objeto Range. Usando el objeto de rango de tabla, puede reemplazar texto en una tabla.

Actualmente se admite la capacidad de utilizar caracteres especiales al reemplazar, por lo que es posible reemplazar el texto existente con texto de varios párrafos. Para hacer esto, debe utilizar los metacaracteres especiales descritos en el método Replace correspondiente.

El siguiente ejemplo de código muestra cómo reemplazar todas las instancias de una cadena de texto en las celdas de una tabla completa:

// 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

Extraer texto sin formato de una tabla o celda

Con el objeto Range, también puede llamar a métodos en todo el rango de la tabla y extraer la tabla como texto sin formato. Para hacer esto, use la propiedad Text.

El siguiente ejemplo de código muestra cómo imprimir el rango de texto de una tabla:

// 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

Se utiliza la misma técnica para extraer contenido únicamente de celdas de tabla individuales.

El siguiente ejemplo de código muestra cómo imprimir un rango de texto de elementos de fila y tabla:

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

Trabajar con texto de tabla alternativo

Las tablas Microsoft Word tienen table title y table description que proporcionan una representación textual alternativa de la información contenida en la tabla.

En Aspose.Words, también puede agregar un título y una descripción de la tabla utilizando las propiedades Title y Description. Estas propiedades son significativas para los documentos DOCX que cumplen con ISO/IEC 29500. Al guardar en formatos anteriores a ISO/IEC 29500, estas propiedades se ignoran.

El siguiente ejemplo de código muestra cómo establecer las propiedades de título y descripción de una tabla:

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