บทนำ
ไม่ว่าคุณจะทำงานกับสัญญา, นโยบายภายใน, ข้อกำหนดทางเทคนิค หรือสำเนาการตลาด, รูปแบบก็เหมือนกัน: คุณจะสะสมหลายเวอร์ชันของ .docx ไว้เร็ว ๆ นี้และในบางจุดต้องการดูว่ามีการเปลี่ยนแปลงอะไรบ้างระหว่างเวอร์ชันเหล่านั้น. กล่องโต้ตอบ Compare ใน Word ที่มาพร้อมนั้นเหมาะสำหรับการตรวจสอบด้วยตนเองเป็นครั้งคราว, แต่ไม่ได้ช่วยมากเมื่อการเปรียบเทียบกลายเป็นส่วนหนึ่งของกระบวนการปกติหรือจำเป็นต้องทำอัตโนมัติบนเซิร์ฟเวอร์.
GroupDocs.Comparison for .NET ทำให้คุณสามารถรันการเปรียบเทียบนั้นจากโค้ดและสร้างผลลัพธ์ในรูปแบบที่ผู้ตรวจสอบของคุณต้องการ. ไลบรารีนี้รองรับสองโหมดการเปรียบเทียบผลลัพธ์สำหรับเอกสาร Word:
- โหมดการแก้ไข — ความแตกต่างจะถูกเขียนเป็นมาร์กอัปการแก้ไขของ Word (track‑changes). ผู้ตรวจสอบเปิดไฟล์, จะเห็นการควบคุม Review → Accept / Reject ที่คุ้นเคย, และทำงานผ่านการเปลี่ยนแปลงทีละรายการ.
- โหมดไฮไลท์ — ข้อความที่แทรก, ลบ, และแก้ไขจะถูกแสดงด้วยการไฮไลท์สีโดยตรงในเนื้อหาเอกสาร, ทำให้ความแตกต่างมองเห็นได้ทันทีขณะคุณอ่านข้อความสุดท้าย.
ในบทความนี้เราจะอธิบายทั้งสองวิธีด้วยตัวอย่าง 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):
สิ่งที่เกิดขึ้นภายใน:
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);
}
เอกสารผลลัพธ์ใน โหมดไฮไลท์:
สิ่งที่เกิดขึ้นภายใน:
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 และคุณสมบัติของเอกสาร.
เลือกโหมดที่ตรงกับสถานการณ์ของคุณ, หรือสร้างทั้งสองโหมดและให้ผู้ใช้แต่ละกลุ่มเลือกมุมมองที่ต้องการ.