แสดงซ่อนเนื้อหาที่คั่นหน้าในเอกสาร 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: การย้ายเนื้อหาบุ๊กมาร์ก

เราวนซ้ำเนื้อหาของบุ๊กมาร์กแล้วย้ายเพื่อให้ปรากฏ

ปัญหาก่อนบุ๊กมาร์ก วิธีนี้จะควบคุมการแสดงหรือซ่อนเนื้อหาตามเงื่อนไขที่ระบุ:

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 จดหมายเวียนobject 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 "{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 });

บทสรุป

ในบทความนี้ เราได้สำรวจซอร์สโค้ด C# เพื่อทำความเข้าใจวิธีใช้ฟีเจอร์แสดงซ่อนเนื้อหาที่คั่นหน้าของ Aspose.Words สำหรับ .NET เราได้ปฏิบัติตามคำแนะนำทีละขั้นตอนเพื่อแสดงหรือซ่อนเนื้อหาของบุ๊กมาร์กตามเงื่อนไขเฉพาะเมื่อรวมข้อมูล

คำถามที่พบบ่อยสำหรับการแสดงซ่อนเนื้อหาที่คั่นหน้าในเอกสาร Word

ถาม: ฉันสามารถใช้เงื่อนไขเดียวกันสำหรับบุ๊กมาร์กหลายรายการในเอกสารเดียวกันได้หรือไม่

ตอบ: ได้ คุณสามารถใช้เงื่อนไขเดียวกันสำหรับบุ๊กมาร์กหลายรายการในเอกสารเดียวกันได้ เพียงทำซ้ำขั้นตอนที่ 2-5 สำหรับแต่ละบุ๊กมาร์ก โดยปรับชื่อบุ๊กมาร์กและเลือกค่าของshowhide ตัวแปรได้ตามต้องการ

ถาม: ฉันจะเพิ่มเงื่อนไขเพื่อแสดงหรือซ่อนเนื้อหาบุ๊กมาร์กได้อย่างไร

ตอบ: หากต้องการเพิ่มเงื่อนไข คุณสามารถใช้ตัวดำเนินการเชิงตรรกะ เช่นAND และOR ในโค้ดสำหรับแทรกเขตข้อมูลผสานในขั้นตอนที่ 2 แก้ไขเงื่อนไขในโค้ดต่อไปนี้เพื่อเพิ่มเงื่อนไขเพิ่มเติม:

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

ถาม: ฉันจะลบบุ๊กมาร์กในเอกสาร Word โดยใช้ Aspose.Words for .NET ได้อย่างไร

ตอบ: หากต้องการลบบุ๊กมาร์กในเอกสาร Word โดยใช้ Aspose.Words สำหรับ .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 ได้ตามความต้องการและความชอบเฉพาะของคุณ