Показать скрыть содержимое закладок в документе Word
В этой статье мы рассмотрим приведенный выше исходный код C#, чтобы понять, как использовать функцию «Показать скрыть содержимое закладок» в библиотеке Aspose.Words для .NET. Эта функция позволяет отображать или скрывать содержимое закладки в документе Word в зависимости от определенного условия при объединении данных.
Предварительные условия
- Базовые знания языка C#.
- Среда разработки .NET с установленной библиотекой Aspose.Words.
Шаг 1. Получение закладки
Мы используемBookmarks
свойство диапазона документа, чтобы получить конкретную закладку, для которой мы хотим показать или скрыть содержимое:
Bookmark bm = doc.Range.Bookmarks[bookmarkName];
Шаг 2. Вставка полей слияния
Используем конструктор документовDocumentBuilder
чтобы вставить необходимые поля слияния. Эти поля слияния установят условие для отображения или скрытия содержимого закладки в зависимости от значенияshowHide
переменная:
DocumentBuilder builder = new DocumentBuilder(doc);
builder. MoveToDocumentEnd();
Field field = builder. InsertField("IF \"", null);
builder. MoveTo(field. Start. NextSibling);
builder. InsertField("MERGEFIELD " + bookmarkName + "", null);
builder. Write("\" = \"true\" ");
builder. Write("\"");
builder. Write("\"");
builder. Write(" \"\"");
Шаг 3. Перемещение содержимого закладки
Просматриваем содержимое закладки и перемещаем его так, чтобы оно появилось
isse перед закладкой. Это будет контролировать показ или скрытие контента в зависимости от указанного условия:
Node currentNode = field. Start;
bool flag = true;
while (currentNode != null && flag)
{
if (currentNode.NodeType == NodeType.Run)
if (currentNode.ToString(SaveFormat.Text).Trim() == "\"")
flag = false;
Node nextNode = currentNode.NextSibling;
bm.BookmarkStart.ParentNode.InsertBefore(currentNode, bm.BookmarkStart);
currentNode = nextNode;
}
Шаг 4. Перемещение остального содержимого закладки
Мы перемещаем остальную часть содержимого закладки после закладки, используя конечный узел закладки в качестве точки вставки:
Node endNode = bm.BookmarkEnd;
flag = true;
while (currentNode != null && flag)
{
if (currentNode.NodeType == NodeType.FieldEnd)
flag = false;
Node nextNode = currentNode.NextSibling;
bm.BookmarkEnd.ParentNode.InsertAfter(currentNode, endNode);
endNode = currentNode;
currentNode = nextNode;
}
Шаг 5. Выполнение слияния
Мы используемExecute
метод документаs
MailMergeobject to execute the merge using the bookmark name and the value of the
переменная showHide`:
doc. MailMerge. Execute(new[] { bookmarkName }, new object[] { showHide });
Пример исходного кода для «Показать скрыть содержимое закладок» с использованием Aspose.Words для .NET
Вот полный пример исходного кода, демонстрирующий отображение или скрытие содержимого закладок с помощью Aspose.Words для .NET:
Bookmark bm = doc.Range.Bookmarks[bookmarkName];
DocumentBuilder builder = new DocumentBuilder(doc);
builder.MoveToDocumentEnd();
// {IF "{MARGEFIELD bookmark}" = "true" "" ""}
Field field = builder.InsertField("IF \"", null);
builder.MoveTo(field.Start.NextSibling);
builder.InsertField("MERGEFIELD " + bookmarkName + "", null);
builder.Write("\" = \"true\" ");
builder.Write("\"");
builder.Write("\"");
builder.Write(" \"\"");
Node currentNode = field.Start;
bool flag = true;
while (currentNode != null && flag)
{
if (currentNode.NodeType == NodeType.Run)
if (currentNode.ToString(SaveFormat.Text).Trim() == "\"")
flag = false;
Node nextNode = currentNode.NextSibling;
bm.BookmarkStart.ParentNode.InsertBefore(currentNode, bm.BookmarkStart);
currentNode = nextNode;
}
Node endNode = bm.BookmarkEnd;
flag = true;
while (currentNode != null && flag)
{
if (currentNode.NodeType == NodeType.FieldEnd)
flag = false;
Node nextNode = currentNode.NextSibling;
bm.BookmarkEnd.ParentNode.InsertAfter(currentNode, endNode);
endNode = currentNode;
currentNode = nextNode;
}
doc.MailMerge.Execute(new[] { bookmarkName }, new object[] { showHide });
Заключение
В этой статье мы изучили исходный код C#, чтобы понять, как использовать функцию «Показать скрыть содержимое закладок» в Aspose.Words для .NET. Мы следовали пошаговому руководству, чтобы показать или скрыть содержимое закладки в зависимости от определенного условия при объединении данных.
Часто задаваемые вопросы о показе скрытия содержимого закладок в документе Word
Вопрос: Могу ли я использовать одно и то же условие для нескольких закладок в одном документе?
О: Да, вы можете использовать одно и то же условие для нескольких закладок в одном документе. Просто повторите шаги 2–5 для каждой закладки, изменяя имя закладки и, при необходимости, значениеshowhide
переменная по мере необходимости.
Вопрос: Как добавить дополнительные условия для отображения или скрытия содержимого закладки?
О: Чтобы добавить дополнительные условия, вы можете использовать логические операторы, такие какAND
иOR
в коде для вставки полей слияния на шаге 2. Отредактируйте условие в следующем коде, чтобы добавить дополнительные условия:
builder. Write("\" = \"true\" ");
Вопрос: Как удалить закладку в документе Word с помощью Aspose.Words for .NET?
О: Чтобы удалить закладку в документе Word с помощью Aspose.Words for .NET, вы можете использоватьRemove
метод изBookmarks
сбор диапазона документов. Вот пример кода для удаления определенной закладки:
doc.Range.Bookmarks.Remove(bookmarkName);
Вопрос: Является ли библиотека Aspose.Words бесплатной?
О: Библиотека Aspose.Words является коммерческой библиотекой, и для ее использования в ваших проектах требуется действующая лицензия. Вы можете проверитьСсылки на Aspose.Words для .NET API чтобы узнать больше о вариантах лицензирования и ценах.
Вопрос: Существуют ли другие библиотеки для обработки текстов с документами Word в .NET?
О: Да, для обработки слов с документами Word в .NET доступны и другие библиотеки, такие как Open XML SDK и GemBox.Document. Вы можете изучить эти библиотеки как альтернативу Aspose.Words в зависимости от ваших конкретных потребностей и предпочтений.