คัดลอกข้อความที่คั่นหน้าในเอกสาร Word

การแนะนำ

เคยพบว่าตัวเองจำเป็นต้องคัดลอกส่วนเฉพาะจากเอกสาร Word หนึ่งไปยังอีกเอกสารหนึ่งหรือไม่? คุณโชคดี! ในบทช่วยสอนนี้ เราจะอธิบายวิธีคัดลอกข้อความที่บุ๊กมาร์กจากเอกสาร Word หนึ่งไปยังอีกเอกสารหนึ่งโดยใช้ Aspose.Words สำหรับ .NET ไม่ว่าคุณจะสร้างรายงานแบบไดนามิกหรือสร้างเอกสารอัตโนมัติ คู่มือนี้จะทำให้กระบวนการง่ายขึ้นสำหรับคุณ

ข้อกำหนดเบื้องต้น

ก่อนที่เราจะดำน้ำ ตรวจสอบให้แน่ใจว่าคุณมีสิ่งต่อไปนี้:

  • Aspose.Words สำหรับ .NET Library: คุณสามารถดาวน์โหลดได้จากที่นี่.
  • สภาพแวดล้อมการพัฒนา: Visual Studio หรือสภาพแวดล้อมการพัฒนา .NET อื่น ๆ
  • ความรู้พื้นฐานเกี่ยวกับ C#: ความคุ้นเคยกับการเขียนโปรแกรม C# และกรอบงาน .NET

นำเข้าเนมสเปซ

ในการเริ่มต้น ตรวจสอบให้แน่ใจว่าคุณได้นำเข้าเนมสเปซที่จำเป็นในโปรเจ็กต์ของคุณ:

using Aspose.Words;
using Aspose.Words.Import;
using Aspose.Words.Bookmark;

ขั้นตอนที่ 1: โหลดเอกสารต้นฉบับ

ก่อนอื่น คุณต้องโหลดเอกสารต้นฉบับที่มีข้อความบุ๊กมาร์กที่คุณต้องการคัดลอก

string dataDir = "YOUR DOCUMENT DIRECTORY";
Document srcDoc = new Document(dataDir + "Bookmarks.docx");

ที่นี่,dataDir คือเส้นทางไปยังไดเร็กทอรีเอกสารของคุณและBookmarks.docx เป็นเอกสารต้นทาง

ขั้นตอนที่ 2: ระบุบุ๊กมาร์ก

จากนั้น ระบุบุ๊กมาร์กที่คุณต้องการคัดลอกจากเอกสารต้นฉบับ

Bookmark srcBookmark = srcDoc.Range.Bookmarks["MyBookmark1"];

แทนที่"MyBookmark1" พร้อมชื่อจริงของบุ๊กมาร์กของคุณ

ขั้นตอนที่ 3: สร้างเอกสารปลายทาง

ตอนนี้ให้สร้างเอกสารใหม่ที่จะคัดลอกข้อความที่บุ๊กมาร์กไว้

Document dstDoc = new Document();
CompositeNode dstNode = dstDoc.LastSection.Body;

ขั้นตอนที่ 4: นำเข้าเนื้อหาที่คั่นหน้า

เพื่อให้แน่ใจว่าสไตล์และการจัดรูปแบบจะยังคงอยู่ ให้ใช้NodeImporter เพื่อนำเข้าเนื้อหาที่คั่นหน้าจากเอกสารต้นทางไปยังเอกสารปลายทาง

NodeImporter importer = new NodeImporter(srcDoc, dstDoc, ImportFormatMode.KeepSourceFormatting);
AppendBookmarkedText(importer, srcBookmark, dstNode);

ขั้นตอนที่ 5: กำหนดวิธีการ AppendBookmarkedText

นี่คือจุดที่ความมหัศจรรย์เกิดขึ้น กำหนดวิธีการจัดการกับการคัดลอกข้อความที่คั่นหน้า:

private void AppendBookmarkedText(NodeImporter importer, Bookmark srcBookmark, CompositeNode dstNode)
{
    Paragraph startPara = (Paragraph)srcBookmark.BookmarkStart.ParentNode;
    Paragraph endPara = (Paragraph)srcBookmark.BookmarkEnd.ParentNode;

    if (startPara == null || endPara == null)
        throw new InvalidOperationException("Parent of the bookmark start or end is not a paragraph, cannot handle this scenario yet.");

    if (startPara.ParentNode != endPara.ParentNode)
        throw new InvalidOperationException("Start and end paragraphs have different parents, cannot handle this scenario yet.");

    Node endNode = endPara.NextSibling;

    for (Node curNode = startPara; curNode != endNode; curNode = curNode.NextSibling)
    {
        Node newNode = importer.ImportNode(curNode, true);
        dstNode.AppendChild(newNode);
    }
}

ขั้นตอนที่ 6: บันทึกเอกสารปลายทาง

สุดท้าย ให้บันทึกเอกสารปลายทางเพื่อตรวจสอบเนื้อหาที่คัดลอก

dstDoc.Save(dataDir + "WorkingWithBookmarks.CopyBookmarkedText.docx");

บทสรุป

แค่นั้นแหละ! คุณได้คัดลอกข้อความบุ๊กมาร์กจากเอกสาร Word หนึ่งไปยังอีกเอกสารหนึ่งได้สำเร็จโดยใช้ Aspose.Words สำหรับ .NET วิธีการนี้มีประสิทธิภาพในการทำงานจัดการเอกสารโดยอัตโนมัติ ทำให้ขั้นตอนการทำงานของคุณมีประสิทธิภาพและคล่องตัวยิ่งขึ้น

คำถามที่พบบ่อย

ฉันสามารถคัดลอกบุ๊กมาร์กหลายรายการพร้อมกันได้หรือไม่

ได้ คุณสามารถวนซ้ำผ่านบุ๊กมาร์กหลายรายการ และใช้วิธีการเดียวกันในการคัดลอกแต่ละบุ๊กมาร์ก

จะเกิดอะไรขึ้นหากไม่พบบุ๊กมาร์ก?

ที่Range.Bookmarks ทรัพย์สินจะกลับมาnullดังนั้นให้แน่ใจว่าคุณจัดการกรณีนี้เพื่อหลีกเลี่ยงข้อยกเว้น

ฉันสามารถคงรูปแบบของบุ๊กมาร์กเดิมไว้ได้หรือไม่

อย่างแน่นอน! โดยใช้ImportFormatMode.KeepSourceFormatting ตรวจสอบให้แน่ใจว่าการจัดรูปแบบดั้งเดิมยังคงอยู่

มีการจำกัดขนาดของข้อความที่บุ๊กมาร์กหรือไม่?

ไม่มีขีดจำกัดเฉพาะ แต่ประสิทธิภาพอาจแตกต่างกันไปตามเอกสารที่มีขนาดใหญ่มาก

ฉันสามารถคัดลอกข้อความระหว่างรูปแบบเอกสาร Word ที่แตกต่างกันได้หรือไม่

ใช่ Aspose.Words รองรับรูปแบบ Word ที่หลากหลาย และวิธีการนี้สามารถใช้ได้กับรูปแบบเหล่านี้