บทนำ

ไม่ว่าคุณจะทำงานกับสัญญา, นโยบายภายใน, ข้อกำหนดทางเทคนิค หรือสำเนาการตลาด, รูปแบบก็เหมือนกัน: คุณจะสะสมหลายเวอร์ชันของ .docx ไว้เร็ว ๆ นี้และในบางจุดต้องการดูว่ามีการเปลี่ยนแปลงอะไรบ้างระหว่างเวอร์ชันเหล่านั้น. กล่องโต้ตอบ Compare ใน Word ที่มาพร้อมนั้นเหมาะสำหรับการตรวจสอบด้วยตนเองเป็นครั้งคราว, แต่ไม่ได้ช่วยมากเมื่อการเปรียบเทียบกลายเป็นส่วนหนึ่งของกระบวนการปกติหรือจำเป็นต้องทำอัตโนมัติบนเซิร์ฟเวอร์.

GroupDocs.Comparison for .NET ทำให้คุณสามารถรันการเปรียบเทียบนั้นจากโค้ดและสร้างผลลัพธ์ในรูปแบบที่ผู้ตรวจสอบของคุณต้องการ. ไลบรารีนี้รองรับสองโหมดการเปรียบเทียบผลลัพธ์สำหรับเอกสาร Word:

  1. โหมดการแก้ไข — ความแตกต่างจะถูกเขียนเป็นมาร์กอัปการแก้ไขของ Word (track‑changes). ผู้ตรวจสอบเปิดไฟล์, จะเห็นการควบคุม Review → Accept / Reject ที่คุ้นเคย, และทำงานผ่านการเปลี่ยนแปลงทีละรายการ.
  2. โหมดไฮไลท์ — ข้อความที่แทรก, ลบ, และแก้ไขจะถูกแสดงด้วยการไฮไลท์สีโดยตรงในเนื้อหาเอกสาร, ทำให้ความแตกต่างมองเห็นได้ทันทีขณะคุณอ่านข้อความสุดท้าย.

ในบทความนี้เราจะอธิบายทั้งสองวิธีด้วยตัวอย่าง C# ที่ทำงานได้, สำรวจคลาส WordCompareOptions และคุณสมบัติต่าง ๆ ของมัน, และอภิปรายว่าแต่ละโหมดเหมาะใช้เมื่อใด

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

  • .NET 6.0 หรือรุ่นต่อไป.
  • GroupDocs.Comparison for .NET — ติดตั้งผ่าน NuGet:
dotnet add package GroupDocs.Comparison
  • ไฟล์ license (GroupDocs.Comparison.lic). หากไม่มี ไลบรารีจะทำงานในโหมดประเมินผลพร้อมลายน้ำและข้อจำกัดขนาด. คุณสามารถขอ temporary license สำหรับการทดสอบ.
  • ไฟล์ Word สองไฟล์สำหรับเปรียบเทียบ — เราจะเรียกพวกมันว่า source.docx และ target.docx. ตัวอย่างเนื้อหา:
source.docx target.docx

วิธีที่ 1: การเปรียบเทียบแบบติดตามการแก้ไข

เมื่อใช้: ผู้ตรวจสอบต้องยอมรับหรือปฏิเสธการเปลี่ยนแปลงแต่ละรายการใน Microsoft Word โดยใช้เครื่องมือ Review → Accept / Reject ที่มาพร้อม — เช่น ระหว่างการเจรจาสัญญาหรือรอบการอนุมัตินโยบาย.

using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;

using (var comparer = new Comparer("source.docx"))
{
    comparer.Add("target.docx");

    var options = new WordCompareOptions
    {
        DetectStyleChanges = true,
        DisplayMode = WordCompareOptions.ComparisonDisplayMode.Revisions
    };

    comparer.Compare("result_revision.docx", options);
}

เอกสารผลลัพธ์ใน โหมดการแก้ไข (track changes):

Comparison result in revision (track changes) mode

สิ่งที่เกิดขึ้นภายใน:

  • ComparisonDisplayMode.Revisions บอกให้เอ็นจินสร้างมาร์กอัปการเปลี่ยนแปลงของ Word แบบเนทีฟ.
  • DetectStyleChanges = true ทำให้การเปรียบเทียบตรวจจับความแตกต่างของรูปแบบ (ตัวหนา, ขนาดฟอนต์, สี) ร่วมกับการแก้ไขข้อความ.
  • ไฟล์ผลลัพธ์เปิดใน Microsoft Word พร้อมแถบ Review ที่พร้อมใช้งาน — การแทรก, การลบ, และการปรับเปลี่ยนรูปแบบทุกอย่างจะถูกแสดงรายการและสามารถยอมรับหรือปฏิเสธได้.

เนื่องจากโหมดการแก้ไขไม่จำเป็นต้องเรนเดอร์เนื้อหาเอกสารใหม่ — มันเพียงแค่แนบเมทาดาตาการแก้ไข — จึงมักจะเร็วกว่าโหมดทั้งสอง.


วิธีที่ 2: การเปรียบเทียบแบบไฮไลท์

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

using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;

using (var comparer = new Comparer("source.docx"))
{
    comparer.Add("target.docx");

    var options = new WordCompareOptions
    {
        DetectStyleChanges = true,
        DisplayMode = WordCompareOptions.ComparisonDisplayMode.Highlight
    };

    comparer.Compare("result_highlighted.docx", options);
}

เอกสารผลลัพธ์ใน โหมดไฮไลท์:

Comparison result in highlight mode

สิ่งที่เกิดขึ้นภายใน:

  • ComparisonDisplayMode.Highlight แสดงความแตกต่างเป็นไฮไลท์สีในบรรทัด — สีแดงสำหรับการลบ, สีเขียวสำหรับการแทรก, สีน้ำเงินสำหรับการเปลี่ยนแปลงรูปแบบ (สีเริ่มต้นที่สามารถปรับได้ผ่าน WordCompareOptions / CompareOptions และ StyleSettings ที่เกี่ยวข้อง).
  • เอกสารถูกเตรียมพร้อมสำหรับการอ่านหรือพิมพ์โดยไม่ต้องทำขั้นตอนเพิ่มเติม.
  • ไม่มีเมทาดาต้า track‑changes ถูกเพิ่มเข้าไปในไฟล์.

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


การสำรวจ WordCompareOptions

ตัวอย่างทั้งสองด้านบนใช้ WordCompareOptions — คลาสที่สืบทอดการตั้งค่าร่วมจาก CompareOptions และเพิ่มคุณสมบัติที่เฉพาะเจาะจงสำหรับเอกสาร Word. ผ่านประเภทนี้คุณควบคุมโหมดการแสดงผล (DisplayMode), ว่าจะติดตามการเปลี่ยนแปลงรูปแบบหรือไม่ (DetectStyleChanges), ชื่อผู้เขียนที่จะปรากฏบนการแก้ไข (RevisionAuthorName), วิธีการจัดการการขึ้นบรรทัดใหม่, bookmark ฯลฯ.

นอกจากนี้ CompareOptions พื้นฐานยังเปิดเผยสไตล์สำหรับรายการที่แทรก, ลบ, และเปลี่ยน (InsertedItemStyle, DeletedItemStyle, ChangedItemStyle), ทำให้คุณสามารถปรับแต่งสีและรูปแบบของไฮไลท์เมื่อจำเป็น.

นี่คือตัวอย่างเล็ก ๆ ของการกำหนดค่า options สำหรับการตรวจสอบแบบข้อความเท่านั้นในโหมดการแก้ไข:

var options = new WordCompareOptions
{
    DisplayMode = WordCompareOptions.ComparisonDisplayMode.Revisions,
    DetectStyleChanges = false,
    RevisionAuthorName = "QA Bot",
    CompareBookmarks = true
};

การรับการเปลี่ยนแปลงผ่านโปรแกรม

ไม่ว่าคุณจะเลือกโหมดผลลัพธ์ใด (การแก้ไขหรือไฮไลท์), คุณก็สามารถรับรายการที่มีโครงสร้างของความแตกต่างที่ตรวจพบผ่าน API Comparer.GetChanges ร่วมได้. วิธีนี้ทำงานกับ Word และรูปแบบอื่น ๆ ที่รองรับทั้งหมด.

using (var comparer = new Comparer("source.docx"))
{
    comparer.Add("target.docx");

    comparer.Compare("result_revision.docx");

    var changes = comparer.GetChanges(); // returns ChangeInfo[]
}

สิ่งนี้มีประโยชน์เมื่อคุณต้องการประมวลผลการเปลี่ยนแปลงต่อในกระบวนการของคุณ — เช่น สร้างรายงาน HTML แบบกำหนดเอง, ป้อนความแตกต่างเข้าสู่ระบบตรวจสอบ, หรือสรุปสถิติการแก้ไข. ดูอ้างอิง API อย่างเป็นทางการสำหรับรายละเอียดเพิ่มเติม: Comparer.GetChanges.


การทำงานกับเอกสารที่ป้องกันด้วยรหัสผ่าน

หากเอกสารถูกป้องกันด้วยรหัสผ่าน, ยังสามารถเปรียบเทียบได้: รหัสผ่านจะถูกส่งผ่าน LoadOptions เมื่อต้องสร้าง Comparer. วิธีการนี้ทำงานเช่นเดียวกันสำหรับ Word, PDF, และรูปแบบอื่น ๆ ที่รองรับ.

using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;

using (var comparer = new Comparer("source_protected.docx",
    new LoadOptions { Password = "secret" }))
{
    comparer.Add("target_protected.docx");

    var options = new WordCompareOptions
    {
        DisplayMode = WordCompareOptions.ComparisonDisplayMode.Revisions
    };

    comparer.Compare("result_protected.docx", options);
}

รับทดลองใช้งานฟรี

คุณสามารถดาวน์โหลด GroupDocs.Comparison for .NET จาก หน้ารีลีสอย่างเป็นทางการ. สำหรับการทดสอบโดยไม่มีข้อจำกัด, ขอ temporary license — ไม่ต้องใช้บัตรเครดิต.


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

Q: ฉันต้องมี Microsoft Word หรือ Office ติดตั้งบนเซิร์ฟเวอร์หรือไม่?
A: ไม่จำเป็น. GroupDocs.Comparison เป็นไลบรารี .NET ที่ทำงานอิสระ; มันอ่านและเขียนไฟล์ DOCX ด้วยตนเอง.

Q: ฉันสามารถเปรียบเทียบเอกสารในรูปแบบอื่น ๆ นอกจาก Word ได้หรือไม่?
A: ได้ — ไลบรารีรองรับ PDF, แผ่นงาน Excel, งานนำเสนอ, ไฟล์ข้อความธรรมดา, และอื่น ๆ อีกมาก. รายการเต็มอยู่ใน documentation.

Q: จะเกิดอะไรขึ้นหากฉันไม่ได้ตั้งค่าไลเซนส์?
A: ไลบรารีทำงานในโหมดประเมินผล. เอกสารผลลัพธ์จะมีลายน้ำและจะประมวลผลเฉพาะไม่กี่หน้าแรก. temporary license จะลบข้อจำกัดเหล่านี้สำหรับการทดสอบ.

Q: ฉันสามารถปรับแต่งสีไฮไลท์ได้หรือไม่?
A: สีเริ่มต้นทำงานได้กับกรณีใช้ส่วนใหญ่. สำหรับการควบคุมสไตล์ขั้นสูง, ตรวจสอบคุณสมบัติ StyleSettings บน CompareOptions.


สรุป

GroupDocs.Comparison for .NET มอบวิธีที่สะอาดสองแบบสำหรับเปรียบเทียบความแตกต่างของเอกสาร Word จากโค้ด. โหมดการแก้ไขเชื่อมต่อโดยตรงกับกระบวนการตรวจสอบที่ทีมของคุณใช้แล้ว; โหมดไฮไลท์ให้สรุปภาพรวมแบบทันทีสำหรับผู้ที่ต้องการเห็นการเปลี่ยนแปลงเท่านั้น. คลาส WordCompareOptions ให้คุณปรับแต่งผลลัพธ์อย่างละเอียด — ตั้งแต่การตรวจจับสไตล์และการระบุผู้เขียนไปจนถึงการเปรียบเทียบ bookmark และคุณสมบัติของเอกสาร.

เลือกโหมดที่ตรงกับสถานการณ์ของคุณ, หรือสร้างทั้งสองโหมดและให้ผู้ใช้แต่ละกลุ่มเลือกมุมมองที่ต้องการ.

แหล่งข้อมูลเพิ่มเติม