แทรกเอกสารที่แทนที่

การแนะนำ

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

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

ก่อนที่เราจะเริ่มต้นเขียนโค้ด มีบางสิ่งที่คุณต้องมี:

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

เอาล่ะ เมื่อจัดการทุกอย่างเรียบร้อยแล้ว เรามาเริ่มลงมือเขียนโค้ดกันเลย!

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

สิ่งแรกที่ต้องทำคือนำเข้าเนมสเปซที่จำเป็นสำหรับการใช้งาน Aspose.Words ซึ่งก็เหมือนกับการรวบรวมเครื่องมือทั้งหมดของคุณก่อนเริ่มโปรเจ็กต์ เพิ่มคำสั่งเหล่านี้โดยใช้คำสั่งที่ด้านบนของไฟล์ C#:

using System;
using System.Text.RegularExpressions;
using Aspose.Words;
using Aspose.Words.Replacing;
using Aspose.Words.Tables;

ตอนนี้เรามีข้อกำหนดเบื้องต้นแล้ว เรามาแบ่งกระบวนการออกเป็นขั้นตอนเล็กๆ น้อยๆ กันดีกว่า แต่ละขั้นตอนมีความสำคัญและจะนำเราไปสู่เป้าหมายได้ใกล้ขึ้น

ขั้นตอนที่ 1: การตั้งค่าไดเรกทอรีเอกสาร

ขั้นแรก เราต้องระบุไดเรกทอรีที่เก็บเอกสารของเรา ซึ่งก็เหมือนกับการเตรียมฉากก่อนการแสดงใหญ่

string dataDir = "YOUR DOCUMENT DIRECTORY";

แทนที่"YOUR DOCUMENT DIRECTORY" ด้วยเส้นทางไปยังไดเร็กทอรีของคุณ นี่คือที่ที่เอกสารของคุณจะดำรงอยู่และมีชีวิตชีวา

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

ขั้นต่อไป เราจะโหลดเอกสารหลักที่เราต้องการแทรกเอกสารอื่นเข้าไป ให้คิดว่านี่คือขั้นตอนหลักที่ทุกกิจกรรมจะเกิดขึ้น

Document mainDoc = new Document(dataDir + "Document insertion 1.docx");

โค้ดนี้โหลดเอกสารหลักจากไดเร็กทอรีที่ระบุ

ขั้นตอนที่ 3: ตั้งค่าตัวเลือกค้นหาและแทนที่

ในการค้นหาตำแหน่งเฉพาะที่เราต้องการแทรกเอกสาร เราใช้ฟังก์ชันค้นหาและแทนที่ ซึ่งก็เหมือนกับการใช้แผนที่เพื่อค้นหาตำแหน่งที่แน่นอนสำหรับการเพิ่มเอกสารใหม่ของเรา

FindReplaceOptions options = new FindReplaceOptions
{
    Direction = FindReplaceDirection.Backward,
    ReplacingCallback = new InsertDocumentAtReplaceHandler()
};

ที่นี่ เรากำลังกำหนดทิศทางเป็นย้อนกลับ และระบุตัวจัดการการโทรกลับแบบกำหนดเองที่เราจะกำหนดต่อไป

ขั้นตอนที่ 4: ดำเนินการแทนที่

ขณะนี้ เราแจ้งให้เอกสารหลักของเราค้นหาข้อความตัวแทนที่เจาะจงและแทนที่ด้วยข้อความใดๆ ในขณะที่ใช้การโทรกลับแบบกำหนดเองเพื่อแทรกเอกสารอื่น

mainDoc.Range.Replace(new Regex("\\[MY_DOCUMENT\\]"), "", options);
mainDoc.Save(dataDir + "CloneAndCombineDocuments.InsertDocumentAtReplace.docx");

โค้ดนี้ดำเนินการค้นหาและแทนที่ จากนั้นบันทึกเอกสารที่อัปเดต

ขั้นตอนที่ 5: สร้างตัวจัดการการโทรกลับแบบกำหนดเอง

ตัวจัดการการโทรกลับแบบกำหนดเองของเราคือสิ่งที่สร้างความมหัศจรรย์ ตัวจัดการนี้จะกำหนดวิธีการดำเนินการแทรกเอกสารระหว่างการดำเนินการค้นหาและแทนที่

private class InsertDocumentAtReplaceHandler : IReplacingCallback
{
    ReplaceAction IReplacingCallback.Replacing(ReplacingArgs args)
    {
        Document subDoc = new Document(dataDir + "Document insertion 2.docx");

        // แทรกเอกสารหลังย่อหน้าที่มีข้อความที่ตรงกัน
        Paragraph para = (Paragraph)args.MatchNode.ParentNode;
        InsertDocument(para, subDoc);

        // ลบย่อหน้าที่มีข้อความที่ตรงกัน
        para.Remove();
        return ReplaceAction.Skip;
    }
}

ที่นี่เราโหลดเอกสารที่จะแทรกและเรียกใช้วิธีช่วยเหลือเพื่อดำเนินการแทรก

ขั้นตอนที่ 6: กำหนดวิธีการแทรกเอกสาร

ชิ้นสุดท้ายของปริศนาของเราคือวิธีการที่แทรกเอกสารในตำแหน่งที่ระบุจริง

private static void InsertDocument(Node insertionDestination, Document docToInsert)
{
    // ตรวจสอบว่าปลายทางการแทรกเป็นย่อหน้าหรือตาราง
    if (insertionDestination.NodeType == NodeType.Paragraph || insertionDestination.NodeType == NodeType.Table)
    {
        CompositeNode destinationParent = insertionDestination.ParentNode;

        // สร้าง NodeImporter เพื่อนำเข้าโหนดจากเอกสารต้นฉบับ
        NodeImporter importer = new NodeImporter(docToInsert, insertionDestination.Document, ImportFormatMode.KeepSourceFormatting);

        // วนซ้ำผ่านโหนดระดับบล็อกทั้งหมดในส่วนของเอกสารต้นฉบับ
        foreach (Section srcSection in docToInsert.Sections.OfType<Section>())
        {
            foreach (Node srcNode in srcSection.Body)
            {
                // ข้ามย่อหน้าว่างสุดท้ายของส่วน
                if (srcNode.NodeType == NodeType.Paragraph)
                {
                    Paragraph para = (Paragraph)srcNode;
                    if (para.IsEndOfSection && !para.HasChildNodes)
                        continue;
                }

                // นำเข้าและแทรกโหนดเข้าในจุดหมายปลายทาง
                Node newNode = importer.ImportNode(srcNode, true);
                destinationParent.InsertAfter(newNode, insertionDestination);
                insertionDestination = newNode;
            }
        }
    }
    else
    {
        throw new ArgumentException("The destination node should be either a paragraph or table.");
    }
}

วิธีนี้จะดูแลการนำเข้าโหนดจากเอกสารที่จะแทรกและวางไว้ในตำแหน่งที่ถูกต้องในเอกสารหลัก

บทสรุป

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

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

Aspose.Words สำหรับ .NET คืออะไร?

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

ฉันสามารถแทรกเอกสารหลายฉบับพร้อมกันได้ไหม?

ใช่ คุณสามารถปรับเปลี่ยนตัวจัดการการโทรกลับเพื่อจัดการการแทรกหลายรายการได้โดยการวนซ้ำผ่านคอลเลกชันของเอกสาร

มีการทดลองใช้ฟรีหรือไม่?

แน่นอน! คุณสามารถดาวน์โหลดรุ่นทดลองใช้งานฟรีได้จากที่นี่.

ฉันจะได้รับการสนับสนุนสำหรับ Aspose.Words ได้อย่างไร

คุณสามารถรับการสนับสนุนได้โดยการเยี่ยมชมฟอรั่ม Aspose.Words.

ฉันสามารถรักษาการจัดรูปแบบของเอกสารที่แทรกเข้าไปได้หรือไม่

ใช่ครับNodeImporter คลาสช่วยให้คุณสามารถระบุวิธีการจัดการการจัดรูปแบบเมื่อนำเข้าโหนดจากเอกสารหนึ่งไปยังอีกเอกสารหนึ่ง