Создание повторяющегося раздела таблицы, сопоставленного с пользовательской частью XML

В этом руководстве показано, как создать таблицу с повторяющимся разделом, сопоставленную с пользовательской частью Xml в документе Word, с помощью Aspose.Words для .NET. Повторяющийся раздел позволяет динамически добавлять строки на основе данных XML, хранящихся в пользовательской части XML.

Предварительные условия

Чтобы следовать этому руководству, вам необходимо иметь следующее:

  • Установлена библиотека Aspose.Words для .NET.
  • Базовые знания C# и обработки документов Word.

Шаг 1. Настройте каталог документов

Начните с настройки пути к каталогу ваших документов. Заменять"YOUR DOCUMENT DIRECTORY" с фактическим путем к каталогу, в котором вы хотите сохранить документ.

string dataDir = "YOUR DOCUMENT DIRECTORY";

Шаг 2. Создайте документ и DocumentBuilder

Создайте новый экземплярDocument класс иDocumentBuilder для построения содержания документа.

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

Шаг 3. Добавьте пользовательские XML-данные в CustomXmlPart.

СоздатьCustomXmlPart и добавьте в него пользовательские XML-данные. В этом примере мы создаем строку XML, представляющую коллекцию книг с их названиями и авторами.

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

Шаг 4. Создайте таблицу и структуру таблицы.

Начните создавать таблицу с помощьюStartTable методDocumentBuilder . Добавьте ячейки и содержимое таблицы, используяInsertCell иWrite методы.

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

Шаг 5. Создайте повторяющийся раздел, сопоставленный с пользовательским XML

СоздатьStructuredDocumentTag сSdtType.RepeatingSection для обозначения повторяющегося раздела. Установите сопоставление XML для повторяющегося раздела с помощьюSetMapping методXmlMapping свойство. В этом примере мы сопоставляем повторяющийся раздел с/books[1]/book.

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

Шаг 6. Создайте повторяющийся элемент раздела и добавьте ячейки

СоздатьStructuredDocumentTag сSdtType.RepeatingSectionItem для представления повторяющегося элемента раздела. Добавьте его как дочерний элемент в повторяющийся раздел.

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

СоздатьRowдля представления каждого элемента в повторяющемся разделе и добавления его к элементу повторяющегося раздела.

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

Шаг 7. Добавьте элементы управления содержимым в повторяющийся раздел.

СоздаватьStructuredDocumentTag объекты сSdtType.PlainText

для представления элементов управления заголовком и авторским контентом. Установите сопоставление XML для каждого элемента управления содержимым, используяSetMapping методXmlMapping свойство. В этом примере мы сопоставляем элемент управления заголовком с/books[1]/book[1]/title[1] и автор контролирует/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);

Шаг 8: Сохраните документ

Сохраните измененный документ в указанную директорию, используя командуSave метод. Укажите желаемое имя файла с соответствующим расширением. В этом примере мы сохраняем документ как «WorkingWithSdt.CreatingTableRepeatingSectionMappedToCustomXmlPart.docx».

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

Пример исходного кода для создания повторяющегося раздела таблицы, сопоставленного с пользовательской частью XML, с использованием Aspose.Words для .NET

	// Путь к каталогу ваших документов
	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");

Вот и все! Вы успешно создали таблицу с повторяющимся разделом, сопоставленным с CustomXmlPart в вашем документе Word, используя Aspose.Words для .NET.