Skapa tabellupprepande avsnitt mappas till anpassad XML-del
Denna handledning visar hur man skapar en tabell med ett upprepande avsnitt mappat till en anpassad XML-del i ett Word-dokument med Aspose.Words för .NET. Den upprepande sektionen låter dig lägga till rader dynamiskt baserat på XML-data som lagras i den anpassade XML-delen.
Förutsättningar
För att följa denna handledning måste du ha följande:
- Aspose.Words för .NET-biblioteket installerat.
- Grundläggande kunskaper i C# och ordbehandling med Word-dokument.
Steg 1: Konfigurera dokumentkatalogen
Börja med att ställa in sökvägen till din dokumentkatalog. Byta ut"YOUR DOCUMENT DIRECTORY"
med den faktiska sökvägen till katalogen där du vill spara dokumentet.
string dataDir = "YOUR DOCUMENT DIRECTORY";
Steg 2: Skapa en Document and DocumentBuilder
Skapa en ny instans avDocument
klass och aDocumentBuilder
för att bygga dokumentets innehåll.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
Steg 3: Lägg till anpassade XML-data till en CustomXmlPart
Skapa enCustomXmlPart
och lägg till anpassade XML-data till den. I det här exemplet skapar vi en XML-sträng som representerar en samling böcker med deras titlar och författare.
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>");
Steg 4: Skapa en tabell- och tabellstruktur
Börja skapa en tabell med hjälp avStartTable
metod förDocumentBuilder
. Lägg till tabellceller och innehåll med hjälp avInsertCell
ochWrite
metoder.
Table table = builder.StartTable();
builder.InsertCell();
builder.Write("Title");
builder.InsertCell();
builder.Write("Author");
builder.EndRow();
builder.EndTable();
Steg 5: Skapa det upprepande avsnittet mappat till anpassad XML
Skapa enStructuredDocumentTag
medSdtType.RepeatingSection
för att representera det upprepade avsnittet. Ställ in XML-mappningen för den upprepande sektionen med hjälp avSetMapping
metod förXmlMapping
fast egendom. I det här exemplet mappar vi den repeterande sektionen till/books[1]/book
.
StructuredDocumentTag repeatingSectionSdt =
new StructuredDocumentTag(doc, SdtType.RepeatingSection, MarkupLevel.Row);
repeatingSectionSdt.XmlMapping.SetMapping(xmlPart, "/books[1]/book", "");
table.AppendChild(repeatingSectionSdt);
Steg 6: Skapa det upprepade avsnittet och lägg till celler
Skapa enStructuredDocumentTag
medSdtType.RepeatingSectionItem
för att representera det upprepade avsnittet. Lägg till det som barn till det upprepande avsnittet.
StructuredDocumentTag repeatingSectionItemSdt =
new StructuredDocumentTag(doc, SdtType.RepeatingSectionItem, MarkupLevel.Row);
repeatingSectionSdt.AppendChild(repeatingSectionItemSdt);
Skapa enRow
för att representera varje objekt i det upprepade avsnittet och lägga till det till det upprepade avsnittet.
Row row = new Row(doc);
repeatingSectionItemSdt.AppendChild(row);
Steg 7: Lägg till innehållskontroller i det upprepade avsnittet
SkapaStructuredDocumentTag
föremål medSdtType.PlainText
för att representera kontrollerna för titeln och författarens innehåll. Ställ in XML-mappningen för varje innehållskontroll med hjälp avSetMapping
metod förXmlMapping
fast egendom. I det här exemplet mappar vi titelkontrollen till/books[1]/book[1]/title[1]
och författaren kontroll till/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);
Steg 8: Spara dokumentet
Spara det ändrade dokumentet i den angivna katalogen med hjälp avSave
metod. Ange önskat filnamn med lämplig filtillägg. I det här exemplet sparar vi dokumentet som “WorkingWithSdt.CreatingTableRepeatingSectionMappedToCustomXmlPart.docx”.
doc.Save(dataDir + "WorkingWithSdt.CreatingTableRepeatingSectionMappedToCustomXmlPart.docx");
Exempel på källkod för att skapa tabellupprepande avsnitt mappad till anpassad XML-del med Aspose.Words för .NET
// Sökväg till din dokumentkatalog
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");
Det är allt! Du har framgångsrikt skapat en tabell med ett upprepande avsnitt mappat till en CustomXmlPart i ditt Word-dokument med Aspose.Words för .NET.