Creación de una sección repetida de tabla asignada a una parte XML personalizada

Este tutorial muestra cómo crear una tabla con una sección repetida asignada a un elemento XML personalizado en un documento de Word usando Aspose.Words para .NET. La sección repetida le permite agregar filas dinámicamente según los datos XML almacenados en la parte XML personalizada.

Requisitos previos

Para seguir este tutorial, necesita tener lo siguiente:

  • Aspose.Words para la biblioteca .NET instalada.
  • Conocimientos básicos de C# y procesamiento de textos con documentos Word.

Paso 1: configurar el directorio de documentos

Comience configurando la ruta a su directorio de documentos. Reemplazar"YOUR DOCUMENT DIRECTORY" con la ruta real al directorio donde desea guardar el documento.

string dataDir = "YOUR DOCUMENT DIRECTORY";

Paso 2: crear un documento y DocumentBuilder

Crear una nueva instancia delDocument clase y unDocumentBuilder para construir el contenido del documento.

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

Paso 3: agregar datos XML personalizados a CustomXmlPart

Crear unCustomXmlPart y agregarle datos XML personalizados. En este ejemplo, creamos una cadena XML que representa una colección de libros con sus títulos y autores.

CustomXmlPart xmlPart = doc.CustomXmlParts.Add("Books",
	"<books><book><title>Everyday Italian</title><author>Giada De Laurentiis</author></book>" +
	"<book><title>Harry Potter</title><author>J K. Rowling</author></book>" +
	"<book><title>Learning XML</title><author>Erik T. Ray</author></book></books>");

Paso 4: crear una tabla y una estructura de tabla

Comience a crear una tabla usando elStartTable método de laDocumentBuilder . Agregue celdas de tabla y contenido usando elInsertCell yWrite métodos.

Table table = builder.StartTable();
builder.InsertCell();
builder.Write("Title");
builder.InsertCell();
builder.Write("Author");
builder.EndRow();
builder.EndTable();

Paso 5: cree la sección repetida asignada a XML personalizado

Crear unStructuredDocumentTag conSdtType.RepeatingSection para representar la sección repetida. Establezca la asignación XML para la sección repetida usando elSetMapping método de laXmlMapping propiedad. En este ejemplo, asignamos la sección repetida a/books[1]/book.

StructuredDocumentTag repeatingSectionSdt =
	new StructuredDocumentTag(doc, SdtType.RepeatingSection, MarkupLevel.Row);
repeatingSectionSdt.XmlMapping.SetMapping(xmlPart, "/books[1]/book", "");
table.AppendChild(repeatingSectionSdt);

Paso 6: cree el elemento de la sección repetida y agregue celdas

Crear unStructuredDocumentTag conSdtType.RepeatingSectionItem para representar el elemento de la sección repetida. Agréguelo como niño a la sección repetida.

StructuredDocumentTag repeatingSectionItemSdt = 
	new StructuredDocumentTag(doc, SdtType.RepeatingSectionItem, MarkupLevel.Row);
repeatingSectionSdt.AppendChild(repeatingSectionItemSdt);

Crear unRowpara representar cada elemento en la sección repetida y agregarlo al elemento de la sección repetida.

Row row = new Row(doc);
repeatingSectionItemSdt.AppendChild(row);

Paso 7: agregue controles de contenido dentro de la sección repetida

CrearStructuredDocumentTag objetos conSdtType.PlainText

para representar los controles de contenido del título y del autor. Establezca la asignación XML para cada control de contenido utilizando elSetMapping método de laXmlMapping propiedad. En este ejemplo, asignamos el control de título a/books[1]/book[1]/title[1] y el control del autor para/books[1]/book[1]/author[1].

StructuredDocumentTag titleSdt =
	new StructuredDocumentTag(doc, SdtType.PlainText, MarkupLevel.Cell);
titleSdt.XmlMapping.SetMapping(xmlPart, "/books[1]/book[1]/title[1]", "");
row.AppendChild(titleSdt);

StructuredDocumentTag authorSdt =
	new StructuredDocumentTag(doc, SdtType.PlainText, MarkupLevel.Cell);
authorSdt.XmlMapping.SetMapping(xmlPart, "/books[1]/book[1]/author[1]", "");
row.AppendChild(authorSdt);

Paso 8: guarde el documento

Guarde el documento modificado en el directorio especificado utilizando elSave método. Proporcione el nombre de archivo deseado con la extensión de archivo adecuada. En este ejemplo, guardamos el documento como “WorkingWithSdt.CreatingTableRepeatingSectionMappedToCustomXmlPart.docx”.

doc.Save(dataDir + "WorkingWithSdt.CreatingTableRepeatingSectionMappedToCustomXmlPart.docx");

Código fuente de ejemplo para crear una sección repetida de tabla asignada a una parte XML personalizada usando Aspose.Words para .NET

	// Ruta a su directorio de documentos
	string dataDir = "YOUR DOCUMENT DIRECTORY";

	Document doc = new Document();
	DocumentBuilder builder = new DocumentBuilder(doc);
	CustomXmlPart xmlPart = doc.CustomXmlParts.Add("Books",
		"<books><book><title>Everyday Italian</title><author>Giada De Laurentiis</author></book>" +
		"<book><title>Harry Potter</title><author>J K. Rowling</author></book>" +
		"<book><title>Learning XML</title><author>Erik T. Ray</author></book></books>");
	Table table = builder.StartTable();
	builder.InsertCell();
	builder.Write("Title");
	builder.InsertCell();
	builder.Write("Author");
	builder.EndRow();
	builder.EndTable();
	StructuredDocumentTag repeatingSectionSdt =
		new StructuredDocumentTag(doc, SdtType.RepeatingSection, MarkupLevel.Row);
	repeatingSectionSdt.XmlMapping.SetMapping(xmlPart, "/books[1]/book", "");
	table.AppendChild(repeatingSectionSdt);
	StructuredDocumentTag repeatingSectionItemSdt = 
		new StructuredDocumentTag(doc, SdtType.RepeatingSectionItem, MarkupLevel.Row);
	repeatingSectionSdt.AppendChild(repeatingSectionItemSdt);
	Row row = new Row(doc);
	repeatingSectionItemSdt.AppendChild(row);
	StructuredDocumentTag titleSdt =
		new StructuredDocumentTag(doc, SdtType.PlainText, MarkupLevel.Cell);
	titleSdt.XmlMapping.SetMapping(xmlPart, "/books[1]/book[1]/title[1]", "");
	row.AppendChild(titleSdt);
	StructuredDocumentTag authorSdt =
		new StructuredDocumentTag(doc, SdtType.PlainText, MarkupLevel.Cell);
	authorSdt.XmlMapping.SetMapping(xmlPart, "/books[1]/book[1]/author[1]", "");
	row.AppendChild(authorSdt);
	doc.Save(dataDir + "WorkingWithSdt.CreatingTableRepeatingSectionMappedToCustomXmlPart.docx");

¡Eso es todo! Ha creado con éxito una tabla con una sección repetida asignada a CustomXmlPart en su documento de Word usando Aspose.Words para .NET.