Mit Lesezeichen versehene Inhalte im Word-Dokument ausblenden anzeigen

In diesem Artikel werden wir den obigen C#-Quellcode untersuchen, um zu verstehen, wie die Funktion „Show Hide Bookmarked Content“ in der Aspose.Words for .NET-Bibliothek verwendet wird. Mit dieser Funktion können Sie den Inhalt eines Lesezeichens in einem Word-Dokument basierend auf einer bestimmten Bedingung beim Zusammenführen von Daten ein- oder ausblenden.

Voraussetzungen

  • Grundkenntnisse der C#-Sprache.
  • .NET-Entwicklungsumgebung mit installierter Aspose.Words-Bibliothek.

Schritt 1: Lesezeichen erhalten

Wir benutzen dasBookmarks Eigenschaft des Dokumentbereichs, um das spezifische Lesezeichen abzurufen, dessen Inhalt angezeigt oder ausgeblendet werden soll:

Bookmark bm = doc.Range.Bookmarks[bookmarkName];

Schritt 2: Einfügen der Zusammenführungsfelder

Wir verwenden einen Document BuilderDocumentBuilder um die erforderlichen Zusammenführungsfelder einzufügen. Diese Zusammenführungsfelder legen eine Bedingung fest, um den Inhalt des Lesezeichens je nach Wert anzuzeigen oder auszublendenshowHide Variable:

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

Schritt 3: Lesezeicheninhalt verschieben

Wir durchlaufen den Inhalt des Lesezeichens und verschieben es so, dass es angezeigt wird

isse vor dem Lesezeichen. Dadurch wird das Ein- oder Ausblenden von Inhalten basierend auf der angegebenen Bedingung gesteuert:

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;
}

Schritt 4: Verschieben des restlichen Lesezeicheninhalts

Wir verschieben den Rest des Lesezeicheninhalts nach dem Lesezeichen und verwenden dabei den Endknoten des Lesezeichens als Einfügepunkt:

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;
}

Schritt 5: Durchführen der Zusammenführung

Wir benutzen dasExecute Methode des Dokumentss MailMergeobject to execute the merge using the bookmark name and the value of theshowHide`-Variable:

doc. MailMerge. Execute(new[] { bookmarkName }, new object[] { showHide });

Beispielquellcode für „Show Hide Bookmarked Content“ mit Aspose.Words für .NET

Hier ist das vollständige Beispiel des Quellcodes, um das Ein- und Ausblenden von Lesezeicheninhalten mit Aspose.Words für .NET zu demonstrieren:


	Bookmark bm = doc.Range.Bookmarks[bookmarkName];

	DocumentBuilder builder = new DocumentBuilder(doc);
	builder.MoveToDocumentEnd();

	// {IF "{MERGEFIELD 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 });

Abschluss

In diesem Artikel haben wir den C#-Quellcode untersucht, um zu verstehen, wie die Funktion „Gemerkte Inhalte anzeigen und ausblenden“ von Aspose.Words für .NET verwendet wird. Wir haben eine Schritt-für-Schritt-Anleitung befolgt, um den Inhalt eines Lesezeichens basierend auf einer bestimmten Bedingung beim Zusammenführen von Daten anzuzeigen oder auszublenden.

FAQs zum Anzeigen und Ausblenden von mit Lesezeichen versehenen Inhalten in Word-Dokumenten

F: Kann ich dieselbe Bedingung für mehrere Lesezeichen im selben Dokument verwenden?

A: Ja, Sie können dieselbe Bedingung für mehrere Lesezeichen im selben Dokument verwenden. Wiederholen Sie einfach die Schritte 2 bis 5 für jedes Lesezeichen und passen Sie den Lesezeichennamen und optional den Wert des Lesezeichens anshowhide je nach Bedarf variabel.

F: Wie kann ich weitere Bedingungen hinzufügen, um Lesezeicheninhalte anzuzeigen oder auszublenden?

A: Um weitere Bedingungen hinzuzufügen, können Sie logische Operatoren verwenden, zAND UndOR im Code zum Einfügen der Zusammenführungsfelder in Schritt 2. Bearbeiten Sie die Bedingung im folgenden Code, um zusätzliche Bedingungen hinzuzufügen:

builder. Write("\" = \"true\" ");

F: Wie kann ich mit Aspose.Words für .NET ein Lesezeichen in einem Word-Dokument löschen?

A: Um ein Lesezeichen in einem Word-Dokument mit Aspose.Words für .NET zu entfernen, können Sie das verwendenRemove Methode aus derBookmarks Sammlung des Dokumentenbereichs. Hier ist ein Beispielcode zum Löschen eines bestimmten Lesezeichens:

doc.Range.Bookmarks.Remove(bookmarkName);

F: Ist die Aspose.Words-Bibliothek kostenlos?

A: Die Aspose.Words-Bibliothek ist eine kommerzielle Bibliothek und erfordert eine gültige Lizenz zur Verwendung in Ihren Projekten. Du kannst nachschauenAspose.Words für .NET-API-Referenzen um mehr über Lizenzoptionen und Preise zu erfahren.

F: Gibt es andere Bibliotheken für die Textverarbeitung mit Word-Dokumenten in .NET?

A: Ja, es stehen andere Bibliotheken für die Textverarbeitung mit Word-Dokumenten in .NET zur Verfügung, z. B. Open XML SDK und GemBox.Document. Sie können diese Bibliotheken je nach Ihren spezifischen Anforderungen und Vorlieben als Alternativen zu Aspose.Words erkunden.