Création d'une section répétitive de tableau mappée à une partie XML personnalisée

Ce didacticiel montre comment créer un tableau avec une section répétitive mappée à une partie XML personnalisée dans un document Word à l’aide d’Aspose.Words pour .NET. La section répétitive vous permet d’ajouter dynamiquement des lignes en fonction des données XML stockées dans la partie XML personnalisée.

Conditions préalables

Pour suivre ce tutoriel, vous devez disposer des éléments suivants :

  • Bibliothèque Aspose.Words pour .NET installée.
  • Connaissance de base de C# et du traitement de mots avec des documents Word.

Étape 1 : configurer le répertoire de documents

Commencez par configurer le chemin d’accès à votre répertoire de documents. Remplacer"YOUR DOCUMENT DIRECTORY" avec le chemin réel du répertoire dans lequel vous souhaitez enregistrer le document.

string dataDir = "YOUR DOCUMENT DIRECTORY";

Étape 2 : Créer un document et DocumentBuilder

Créez une nouvelle instance duDocument classe et unDocumentBuilder pour construire le contenu du document.

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

Étape 3 : Ajouter des données XML personnalisées à un CustomXmlPart

Créer unCustomXmlPart et ajoutez-y des données XML personnalisées. Dans cet exemple, nous créons une chaîne XML représentant une collection de livres avec leurs titres et auteurs.

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

Étape 4 : Créer une table et une structure de table

Commencez à créer un tableau en utilisant leStartTable méthode duDocumentBuilder . Ajoutez des cellules et du contenu au tableau à l’aide de l’outilInsertCell etWrite méthodes.

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

Étape 5 : Créer la section répétitive mappée sur du XML personnalisé

Créer unStructuredDocumentTag avecSdtType.RepeatingSection pour représenter la section répétitive. Définissez le mappage XML pour la section répétitive à l’aide duSetMapping méthode duXmlMapping propriété. Dans cet exemple, nous mappons la section répétitive à/books[1]/book.

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

Étape 6 : Créer l’élément de section répétitive et ajouter des cellules

Créer unStructuredDocumentTag avecSdtType.RepeatingSectionItem pour représenter l’élément de section répétitive. Ajoutez-le en tant qu’enfant à la section répétitive.

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

Créer unRowpour représenter chaque élément de la section répétitive et l’ajouter à l’élément de la section répétitive.

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

Étape 7 : ajouter des contrôles de contenu dans la section répétitive

CréerStructuredDocumentTag objets avecSdtType.PlainText

pour représenter les contrôles de contenu du titre et de l’auteur. Définissez le mappage XML pour chaque contrôle de contenu à l’aide duSetMapping méthode duXmlMapping propriété. Dans cet exemple, nous mappons le contrôle de titre à/books[1]/book[1]/title[1] et le contrôle de l’auteur pour/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);

Étape 8 : Enregistrez le document

Enregistrez le document modifié dans le répertoire spécifié à l’aide duSave méthode. Fournissez le nom de fichier souhaité avec l’extension de fichier appropriée. Dans cet exemple, nous enregistrons le document sous le nom « WorkingWithSdt.CreatingTableRepeatingSectionMappedToCustomXmlPart.docx ».

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

Exemple de code source pour la création d’une section répétitive de tableau mappée à une partie XML personnalisée à l’aide d’Aspose.Words pour .NET

	// Chemin d'accès à votre répertoire de documents
	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");

C’est ça! Vous avez créé avec succès un tableau avec une section répétitive mappée à un CustomXmlPart dans votre document Word à l’aide d’Aspose.Words pour .NET.