Kemal Erdogan
Kemal Erdogan

Reputation: 1080

A .net winforms component to compare two documents?

I am looking for a .net winforms component that can compare two formatted documents (in .doc, .docx, .html, .rtf, any one of them will do) and visually spot changes. We prefer to see the changes as MS Word does when it shows the changes in its track changes mode

We expect short documents of only few pages long and not much editing (few words changed, a paragraph added/deleted, etc)

Are you aware of such a component that you can recommend free or otherwise

Thank you, Kemal

Upvotes: 1

Views: 2384

Answers (2)

Saqib Razzaq
Saqib Razzaq

Reputation: 1430

You can use one of the following libraries to manipulate Word document and build the document comparison method yourself.

  1. Microsoft Interop (Office installation required)
  2. OpenXML SDK
  3. Aspose.Words for .NET

Since this question is old, now there are more solutions available.

  1. Groupdocs compare
  2. Document Comparison by Aspose.Words for .NET

I work with Aspose as Developer Evangelist.

Upvotes: 0

Romil Kumar Jain
Romil Kumar Jain

Reputation: 20745

Following code will compare two word doc and save the merging of changes in third doc.

Add reference of Microsoft Word 12.0 Object Library

using Microsoft.Office;

public static void comp()
{

    object missing = System.Reflection.Missing.Value;

    //create a readonly variable of object type and assign it to false.

    object readonlyobj = false;

    object filename = "C:\\romil1.docx";

    //create a word application object for processing the word file.

    Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application();

    //create a word document object and open the above file..

    Microsoft.Office.Interop.Word.Document doc = app.Documents.Open(

    ref filename, ref missing, ref readonlyobj, ref missing, ref missing,

    ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);

    string filenm = "C:\\romil2.docx";

    object filenm3 = "C:\\romil3.docx";

    doc.TrackRevisions = true;

    doc.ShowRevisions = false;

    doc.PrintRevisions = true;

    doc.Compare(filenm);

    doc.Close(Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges);

    app.ActiveDocument.SaveAs(ref filenm3, ref missing, ref readonlyobj, ref missing, ref missing,

    ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);

    app.Quit(Microsoft.Office.Interop.Word.WdSaveOptions.wdSaveChanges);

    MessageBox.Show("Process complete");
}

Upvotes: 4

Related Questions