Creazione di una sezione ripetuta di tabella mappata su una parte Xml personalizzata

Questo tutorial dimostra come creare una tabella con una sezione ripetuta mappata su una parte Xml personalizzata in un documento Word utilizzando Aspose.Words per .NET. La sezione ripetuta consente di aggiungere dinamicamente righe in base ai dati XML archiviati nella parte XML personalizzata.

Prerequisiti

Per seguire questo tutorial, è necessario disporre di quanto segue:

  • Aspose.Words per la libreria .NET installata.
  • Conoscenza base di C# ed elaborazione testi con documenti Word.

Passaggio 1: impostare la directory dei documenti

Inizia impostando il percorso della directory dei documenti. Sostituire"YOUR DOCUMENT DIRECTORY" con il percorso effettivo della directory in cui desideri salvare il documento.

string dataDir = "YOUR DOCUMENT DIRECTORY";

Passaggio 2: crea un documento e DocumentBuilder

Crea una nuova istanza diDocument classe e aDocumentBuilder per costruire il contenuto del documento.

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

Passaggio 3: aggiungere dati XML personalizzati a CustomXmlPart

Creare unCustomXmlPart e aggiungivi dati XML personalizzati. In questo esempio creiamo una stringa XML che rappresenta una raccolta di libri con i relativi titoli e autori.

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

Passaggio 4: crea una tabella e una struttura di tabella

Inizia a creare una tabella utilizzando il fileStartTable metodo delDocumentBuilder . Aggiungi celle e contenuto della tabella utilizzando il fileInsertCell EWrite metodi.

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

Passaggio 5: crea la sezione ripetuta mappata su XML personalizzato

Creare unStructuredDocumentTag conSdtType.RepeatingSection per rappresentare la sezione ripetuta. Imposta la mappatura XML per la sezione ripetuta utilizzando il comandoSetMapping metodo delXmlMapping proprietà. In questo esempio, mappiamo la sezione ripetuta a/books[1]/book.

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

Passaggio 6: crea l’elemento di sezione ripetuto e aggiungi celle

Creare unStructuredDocumentTag conSdtType.RepeatingSectionItem per rappresentare l’elemento della sezione ripetuto. Aggiungilo come figlio alla sezione ripetuta.

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

Creare unRowper rappresentare ciascun elemento nella sezione ripetuta e aggiungerlo all’elemento della sezione ripetuta.

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

Passaggio 7: aggiungi i controlli del contenuto nella sezione ripetuta

CreareStructuredDocumentTag oggetti conSdtType.PlainText

per rappresentare i controlli del contenuto del titolo e dell’autore. Imposta la mappatura XML per ogni controllo del contenuto utilizzando il fileSetMapping metodo delXmlMapping proprietà. In questo esempio, mappiamo il controllo del titolo su/books[1]/book[1]/title[1] e il controllo dell’autore su/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);

Passaggio 8: salva il documento

Salvare il documento modificato nella directory specificata utilizzando il fileSave metodo. Fornire il nome file desiderato con l’estensione file appropriata. In questo esempio, salviamo il documento come “WorkingWithSdt.CreatingTableRepeatingSectionMappedToCustomXmlPart.docx”.

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

Codice sorgente di esempio per la creazione di sezioni ripetute di tabella mappate su parti Xml personalizzate utilizzando Aspose.Words per .NET

	// Percorso della directory dei documenti
	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");

Questo è tutto! Hai creato con successo una tabella con una sezione ripetuta mappata su CustomXmlPart nel tuo documento Word utilizzando Aspose.Words per .NET.