Skip to content

Instantly share code, notes, and snippets.

@conholdate-gists
Last active November 15, 2021 07:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save conholdate-gists/23b7b42c35b7a5b0a9fcb0a3790e389b to your computer and use it in GitHub Desktop.
Save conholdate-gists/23b7b42c35b7a5b0a9fcb0a3790e389b to your computer and use it in GitHub Desktop.
Compare Two or More Word Documents and Highlight Differences using C#

Learn how to compare two or more Word documents and highlight differences using C#: https://blog.conholdate.com/2021/10/01/compare-two-or-more-word-documents-using-csharp/

The following topics are discussed/covered here:

  1. Compare Word Documents using C#
  2. Compare Word Documents using Stream in C#
  3. Get Text of the Changes using C#
  4. Documents Properties Comparison using C#
  5. Compare Password Protected Word Documents using C#
  6. Compare Bookmarks in Word Documents using C#
// initialize comparer
Comparer comparer = new Comparer("C:\\Files\\source.docx");
// add target file to compare
comparer.Add("C:\\Files\\target.docx");
// compare and save differences
comparer.Compare("C:\\Files\\result.docx");
// initialize comparer
Comparer comparer = new Comparer("C:\\Files\\source.docx");
// add target file to compare
comparer.Add("C:\\Files\\target.docx");
// define compare options
CompareOptions compareOptions = new CompareOptions();
compareOptions.CompareBookmarks = true; // compare bookmarks
// compare
comparer.Compare("C:\\Files\\result.docx", compareOptions);
// define load options for source file
LoadOptions sourceLoadOptions = new LoadOptions() { Password = "1234" };
// initialize comparer
Comparer comparer = new Comparer("C:\\Files\\source.docx", sourceLoadOptions);
// add target file to compare
comparer.Add("C:\\Files\\target.docx", new LoadOptions() { Password = "5678" });
// compare
comparer.Compare("C:\\Files\\result.docx");
// initialize comparer
Comparer comparer = new Comparer("C:\\Files\\source.docx");
// add target file to compare
comparer.Add("C:\\Files\\target.docx");
// define compare options
CompareOptions options = new CompareOptions();
options.CompareVariableProperty = true; // activate the comparison of variable properties
options.CompareDocumentProperty = true; // activate the comparison of built and custom properties
// compare
comparer.Compare("C:\\Files\\result.docx", options);
// read source and target files
using (Stream sourceStream = File.OpenRead("C:\\Files\\source.docx"))
using (Stream targetStream = File.OpenRead("C:\\Files\\target.docx"))
{
// initialize comparer
using (Comparer comparer = new Comparer(sourceStream))
{
// add target filestream to compare
comparer.Add(targetStream);
// compare and save differences
comparer.Compare(File.Create("C:\\Files\\result.docx"));
}
}
// initialize comparer
Comparer comparer = new Comparer("C:\\Files\\source.docx");
// add target file to compare
comparer.Add("C:\\Files\\target.docx");
// compare
comparer.Compare();
// get changes
ChangeInfo[] changes = comparer.GetChanges();
Console.WriteLine("Count of changes: " + changes.Length);
// show changes
foreach (ChangeInfo change in changes)
{
Console.WriteLine("Change Type: " + change.Type + ", Text: " + change.Text);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment