Könyvjelzővel ellátott tartalom elrejtése a Word-dokumentumban

Ebben a cikkben megvizsgáljuk a fenti C#-forráskódot, hogy megértsük, hogyan kell használni a Könyvjelzők elrejtése funkciót az Aspose.Words for .NET könyvtárban. Ez a funkció lehetővé teszi egy könyvjelző tartalmának megjelenítését vagy elrejtését a Word-dokumentumban egy adott feltétel alapján az adatok egyesítésekor.

Előfeltételek

  • C# nyelv alapismerete.
  • .NET fejlesztői környezet telepített Aspose.Words könyvtárral.

1. lépés: A könyvjelző lekérése

Használjuk aBookmarks a dokumentumtartomány tulajdonsága, hogy megkapjuk azt a könyvjelzőt, amelyen a tartalmat meg szeretnénk jeleníteni vagy elrejteni:

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

2. lépés: Az egyesítési mezők beszúrása

Dokumentumkészítőt használunkDocumentBuilder a szükséges egyesítési mezők beszúrásához. Ezek az egyesítési mezők feltételt állítanak be a könyvjelző tartalmának megjelenítésére vagy elrejtésére, az értéktől függőenshowHide változó:

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. lépés: A könyvjelző tartalmának áthelyezése

Végigpörgetjük a könyvjelző tartalmát, és úgy mozgatjuk, hogy megjelenjen

isse a könyvjelző előtt. Ez szabályozza a tartalom megjelenítését vagy elrejtését a megadott feltétel alapján:

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. lépés: A könyvjelző többi részének áthelyezése

könyvjelző többi részét áthelyezzük a könyvjelző után, beszúrási pontként a könyvjelző végcsomópontját használva:

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. lépés: Az egyesítés végrehajtása

Használjuk aExecute a dokumentum módszeres Körlevélobject to execute the merge using the bookmark name and the value of theshowHide` változó:

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

Példa forráskódra a Könyvjelzővel ellátott tartalom elrejtése Aspose.Words for .NET használatával funkcióhoz

Íme a teljes példa a forráskódra, amely bemutatja a könyvjelzők tartalmának megjelenítését vagy elrejtését az Aspose.Words for .NET használatával:


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

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

	// {IF "{MERGEFIELD könyvjelző}" = "igaz" "" ""}
	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 });

Következtetés

Ebben a cikkben megvizsgáltuk a C# forráskódot, hogy megértsük, hogyan használható az Aspose.Words for .NET Könyvjelzők elrejtése funkciója. Követtünk egy lépésenkénti útmutatót a könyvjelzők tartalmának megjelenítéséhez vagy elrejtéséhez egy adott feltétel alapján az adatok egyesítésekor.

A könyvjelzővel ellátott tartalom elrejtése a Word dokumentumban a megjelenítéssel kapcsolatos GYIK

K: Használhatom ugyanazt a feltételt több könyvjelzőhöz ugyanabban a dokumentumban?

V: Igen, ugyanazt a feltételt használhatja több könyvjelzőhöz ugyanabban a dokumentumban. Csak ismételje meg a 2-5. lépéseket minden könyvjelzőnél, módosítsa a könyvjelző nevét és opcionálisan a értékétshowhide szükség szerint változtatható.

K: Hogyan adhatok hozzá további feltételeket a könyvjelzők tartalmának megjelenítéséhez vagy elrejtéséhez?

V: További feltételek hozzáadásához használhat logikai operátorokat, mint plAND ésOR a 2. lépésben az egyesítési mezők beillesztéséhez szükséges kódban. Szerkessze a feltételt a következő kódban további feltételek hozzáadásához:

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

K: Hogyan törölhetek egy könyvjelzőt egy Word-dokumentumból az Aspose.Words for .NET használatával?

V: Könyvjelző eltávolításához Word-dokumentumból az Aspose.Words for .NET használatával, használja aRemove módszer aBookmarks dokumentumtartomány gyűjteménye. Íme egy mintakód egy adott könyvjelző törléséhez:

doc.Range.Bookmarks.Remove(bookmarkName);

K: Ingyenes az Aspose.Words könyvtár?

V: Az Aspose.Words könyvtár kereskedelmi célú könyvtár, és a projektekben való használatához érvényes licenc szükséges. EllenőrizhetedAspose.Words .NET API hivatkozásokhoz hogy többet megtudjon az engedélyezési lehetőségekről és az árakról.

K: Vannak más könyvtárak is a Word-dokumentumokkal végzett szövegfeldolgozáshoz a .NET-ben?

V: Igen, más könyvtárak is elérhetők a Word-dokumentumokkal végzett szövegfeldolgozáshoz a .NET-ben, például az Open XML SDK és a GemBox.Document. Ezeket a könyvtárakat az Aspose.Words alternatívájaként fedezheti fel sajátos igényei és preferenciái alapján.