บทนำ
ไม่ว่าคุณจะทำงานกับสัญญา, นโยบายภายใน, สเปคทางเทคนิค, หรือข้อความการตลาด, รูปแบบก็เหมือนกัน: คุณจะสะสมไฟล์ .docx เวอร์ชันต่าง ๆ อย่างรวดเร็วและในบางจุดก็ต้องการดูว่าอะไรเปลี่ยนแปลงบ้างระหว่างไฟล์เหล่านั้น. กล่องโต้ตอบ Compare ใน Word ที่มาพร้อมกับโปรแกรมนั้นพอใช้สำหรับการตรวจสอบด้วยตนเองเป็นครั้งคราว, แต่ก็ไม่ค่อยช่วยเมื่อการเปรียบเทียบกลายเป็นส่วนหนึ่งของกระบวนการประจำหรือจำเป็นต้องทำอัตโนมัติบนเซิร์ฟเวอร์.
GroupDocs.Comparison for .NET ทำให้คุณสามารถเรียกใช้การเปรียบเทียบจากโค้ดและสร้างผลลัพธ์ในรูปแบบที่ผู้ตรวจสอบต้องการ. ไลบรารีนี้สนับสนุนสองโหมดการแสดงผลสำหรับเอกสาร Word:
- Revision mode — ความแตกต่างจะถูกเขียนเป็นมาร์คอัปการแก้ไข (track‑changes) ของ Word. ผู้ตรวจสอบเปิดไฟล์, จะเห็นปุ่ม Review → Accept / Reject ที่คุ้นเคย, และดำเนินการเปลี่ยนแปลงทีละรายการ.
- Highlight mode — ข้อความที่แทรก, ลบ, หรือแก้ไขจะถูกไฮไลต์ด้วยสีโดยตรงในเนื้อหาเอกสาร, ทำให้เห็นความแตกต่างได้ทันทีขณะอ่านข้อความสุดท้าย.
ในบทความนี้เราจะอธิบายทั้งสองวิธีพร้อมตัวอย่าง C# ที่ทำงานได้, ศึกษาคลาส WordCompareOptions และคุณสมบัติต่าง ๆ ของมัน, และพูดถึงกรณีที่แต่ละโหมดมีความเหมาะสมมากกว่า.
ข้อกำหนดเบื้องต้น
ก่อนเริ่ม:
- .NET 6.0 หรือเวอร์ชันใหม่กว่า.
- GroupDocs.Comparison for .NET — ติดตั้งผ่าน NuGet:
dotnet add package GroupDocs.Comparison
- ไฟล์ license (
GroupDocs.Comparison.lic). หากไม่มีไฟล์นี้ ไลบรารีจะทำงานในโหมดประเมินผลพร้อมกับลายน้ำและข้อจำกัดขนาดไฟล์. คุณสามารถขอใบอนุญาตชั่วคราวสำหรับการทดสอบ. - ไฟล์ Word สองไฟล์เพื่อเปรียบเทียบ — เราจะเรียกชื่อไฟล์เหล่านี้ว่า
source.docxและtarget.docx. ตัวอย่างเนื้อหา:
source.docx |
target.docx |
|---|
วิธีที่ 1: การเปรียบเทียบแบบ Revision‑Track
เมื่อใดควรใช้: ผู้ตรวจสอบต้องการยอมรับหรือปฏิเสธการเปลี่ยนแปลงแต่ละรายการโดยตรงใน 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);
}
เอกสารผลลัพธ์ใน revision (track changes) mode:
สิ่งที่เกิดขึ้นเบื้องหลัง:
ComparisonDisplayMode.Revisionsบอกให้เอ็นจิ้นสร้างมาร์คอัปการติดตามการเปลี่ยนแปลงของ Word แบบเนทีฟ.DetectStyleChanges = trueทำให้การเปรียบเทียบจับความแตกต่างของรูปแบบ (ตัวหนา, ขนาดฟอนต์, สี) ควบคู่กับการแก้ไขข้อความ.- ไฟล์ผลลัพธ์จะเปิดใน Microsoft Word พร้อมกับแถบ Review — การแทรก, การลบ, และการปรับสไตล์ทุกอย่างจะแสดงเป็นรายการที่สามารถยอมรับหรือปฏิเสธได้.
เพราะโหมด revision ไม่ต้องทำการเรนเดอร์เนื้อหาเอกสารใหม่ — เพียงแค่แนบเมตาดาต้าการแก้ไข — จึงมักเป็นโหมดที่เร็วกว่าในสองโหมดนี้.
วิธีที่ 2: การเปรียบเทียบแบบ Highlight‑Mode
เมื่อใดควรใช้: ผู้มีส่วนได้ส่วนเสียต้องการเอกสารที่สะอาดและแสดงให้เห็นอย่างชัดเจนว่ามีอะไรเปลี่ยนแปลง, แต่ไม่สนใจที่จะทำงานกับการแก้ไขแต่ละรายการ. ตัวอย่างทั่วไปคือผู้จัดการที่เปิดเวอร์ชันล่าสุดใน 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);
}
เอกสารผลลัพธ์ใน highlight mode:
สิ่งที่เกิดขึ้นเบื้องหลัง:
ComparisonDisplayMode.Highlightแสดงความแตกต่างเป็นไฮไลต์สีในบรรทัด — สีแดงสำหรับการลบ, สีเขียวสำหรับการแทรก, สีน้ำเงินสำหรับการเปลี่ยนแปลงสไตล์ (สีเริ่มต้นที่สามารถปรับได้ผ่านWordCompareOptions/CompareOptionsและStyleSettingsที่เกี่ยวข้อง).- เอกสารพร้อมสำหรับการอ่านหรือพิมพ์โดยไม่ต้องทำขั้นตอนเพิ่มเติม.
- ไม่มีเมตาดาต้าการติดตามการเปลี่ยนแปลง (track‑changes) ถูกเพิ่มเข้าไปในไฟล์.
โหมด highlight ทำงานภายในมากกว่าเพราะต้องแก้ไขเนื้อหาเอกสารจริงและทำการจัดรูปแบบ. สำหรับไฟล์ขนาดใหญ่คุณอาจสังเกตความแตกต่างด้านประสิทธิภาพอย่างมีนัยสำคัญเมื่อเทียบกับโหมด revision.
การสำรวจ WordCompareOptions
ตัวอย่างทั้งสองด้านบนใช้ WordCompareOptions — คลาสที่สืบทอดการตั้งค่าทั่วไปจาก CompareOptions และเพิ่มคุณสมบัติเฉพาะสำหรับเอกสาร Word. ผ่านคลาสนี้คุณสามารถกำหนดโหมดการแสดงผล (DisplayMode), การติดตามการเปลี่ยนแปลงรูปแบบ (DetectStyleChanges), ชื่อผู้เขียนที่จะปรากฏบนรีวิชั่น (RevisionAuthorName), การเปรียบเทียบการขึ้นบรรทัดใหม่, bookmark ฯลฯ
นอกจากนี้ CompareOptions พื้นฐานยังเปิดเผยสไตล์สำหรับรายการที่แทรก, ลบ, และเปลี่ยนแปลง (InsertedItemStyle, DeletedItemStyle, ChangedItemStyle), ทำให้คุณปรับสีและการจัดรูปแบบของไฮไลต์ได้ตามต้องการ.
ตัวอย่างเล็ก ๆ ของการตั้งค่าเพื่อทำการตรวจสอบเฉพาะข้อความในโหมด revision:
var options = new WordCompareOptions
{
DisplayMode = WordCompareOptions.ComparisonDisplayMode.Revisions,
DetectStyleChanges = false,
RevisionAuthorName = "QA Bot",
CompareBookmarks = true
};
การดึงข้อมูลการเปลี่ยนแปลงแบบโปรแกรม
ไม่ว่าคุณจะเลือกโหมดใด (revision หรือ highlight), คุณก็ยังสามารถรับรายการโครงสร้างของความแตกต่างที่ตรวจพบได้ผ่าน API Comparer.GetChanges ที่ใช้ร่วมกัน. วิธีนี้ทำงานทั้งกับ Word และรูปแบบอื่น ๆ ที่รองรับ.
using (var comparer = new Comparer("source.docx"))
{
comparer.Add("target.docx");
comparer.Compare("result_revision.docx");
var changes = comparer.GetChanges(); // คืนค่า 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 จากหน้า releases อย่างเป็นทางการ. สำหรับการทดสอบโดยไม่มีข้อจำกัด, ขอใบอนุญาตชั่วคราว — ไม่ต้องใช้บัตรเครดิต.
คำถามที่พบบ่อย
ถาม: จำเป็นต้องติดตั้ง Microsoft Word หรือ Office บนเซิร์ฟเวอร์หรือไม่?
ตอบ: ไม่จำเป็น. GroupDocs.Comparison เป็นไลบรารี .NET ที่ทำงานอิสระ; มันอ่านและเขียนไฟล์ DOCX ด้วยตัวเอง.
ถาม: สามารถเปรียบเทียบเอกสารในรูปแบบอื่น ๆ นอกจาก Word ได้หรือไม่?
ตอบ: ได้ — ไลบรารีรองรับ PDF, Excel, พรีเซนเทชัน, ไฟล์ข้อความธรรมดา, และหลายรูปแบบอื่น ๆ. รายการเต็มอยู่ในเอกสาร.
ถาม: จะเกิดอะไรขึ้นหากไม่ได้ตั้งค่า license?
ตอบ: ไลบรารีจะทำงานในโหมดประเมินผล. เอกสารผลลัพธ์จะมีลายน้ำและเพียงไม่กี่หน้าที่แรกเท่านั้นที่ถูกประมวลผล. ใบอนุญาตชั่วคราว จะลบข้อจำกัดเหล่านี้สำหรับการทดสอบ.
ถาม: สามารถปรับสีไฮไลต์ได้หรือไม่?
ตอบ: สีเริ่มต้นใช้ได้กับกรณีส่วนใหญ่. สำหรับการควบคุมสไตล์ขั้นสูง, ตรวจสอบคุณสมบัติ StyleSettings บน CompareOptions.
สรุป
GroupDocs.Comparison for .NET ให้สองวิธีที่สะอาดในการเปรียบเทียบเอกสาร Word จากโค้ด. โหมด revision เชื่อมต่อโดยตรงกับกระบวนการรีวิวที่ทีมของคุณใช้แล้ว, ส่วนโหมด highlight ให้สรุปภาพรวมแบบเห็นในพริบตาสำหรับผู้ที่ต้องการเห็นการเปลี่ยนแปลงอย่างรวดเร็ว. คลาส WordCompareOptions ช่วยให้คุณปรับแต่งผลลัพธ์ได้ — ตั้งแต่การตรวจจับสไตล์และการกำหนดผู้เขียนถึงการเปรียบเทียบ bookmark และคุณสมบัติของเอกสาร.
เลือกโหมดที่เหมาะกับสถานการณ์ของคุณ, หรือสร้างทั้งสองโหมดและให้แต่ละผู้ชมเลือกมุมมองที่ต้องการ.