Porównaj dokumenty programu Word w ASP.NET

Często musimy porównać dwa dokumenty MS Word DOC/DOCX, aby sprawdzić podobieństwa lub różnice. Porównanie daje nam wyobrażenie o tym, co zostało zmienione w dwóch wersjach jednego dokumentu Worda. Dostępne są różne porównywarki dokumentów online, które umożliwiają porównanie dwóch dokumentów programu Word. Może się jednak zdarzyć, że będziesz musiał zintegrować funkcje porównywania dokumentów z aplikacją internetową. Z drugiej strony możesz chcieć zbudować własną aplikację do porównywania dokumentów online. Aby poradzić sobie z takimi przypadkami, pokażę ci, jak porównać dwa Word DOCX przy użyciu C# w aplikacji internetowej ASP.NET. Ta aplikacja będzie miała następujące funkcje.

  • C# .NET API do porównywania dokumentów Word DOCX
  • Porównaj dwa dokumenty Word (DOC/DOCX) w C#
  • Pobierz wynik porównania w formacie DOCX
  • Pobierz wynik porównania w formacie PDF

C# .NET API do porównania Word DOCX

Aby przeprowadzić porównanie dokumentów programu Word bez MS Office, użyjemy Aspose.Words for .NET, który jest potężnym API do przetwarzania tekstu dla ASP.NET lub innych aplikacji .NET/.NET Core. Możesz pobrać API lub zainstalować je w swojej aplikacji ASP.NET za pomocą NuGet.

PM> Install-Package Aspose.Words

Porównaj dwa dokumenty programu Word w języku C# ASP.NET

  • Utwórz nową aplikację internetową ASP.NET Core w programie Visual Studio 2017 lub nowszym.
Utwórz aplikację internetową ASP.NET Core
  • Wybierz szablon Aplikacja internetowa (Model-View-Controller).
Wybierz aplikację MVC
  • Zainstaluj pakiet Aspose.Words dla platformy .NET przy użyciu Menedżera pakietów NuGet.
Interfejs API platformy .NET do porównywania programów Word
  • Skopiuj i wklej następujący skrypt w widoku index.cshtml.
@{
    ViewData["Title"] = "MS Word Comparison in ASP.NET";
}
<h2 class="text-info">Compare Two Word DOC/DOCX Documents</h2>
<p class="text-info">Compare the contents of MS Word documents and get the results in DOCX or PDF format.</p>
<br />
<form asp-controller="Home" asp-action="UploadFiles" method="post" class="form-inline dropzone" enctype="multipart/form-data">
    <div class="row">
        <div class="col-md-6" align="center"> 
            <div class="form-group">
                <input type="file" id="input-id" name="files" accept=".doc, .docx" class="form-control file" data-preview-file-type="text" />
            </div>
        </div>
        <div class="col-md-6" align="center"> 
            <div class="form-group">
                <input type="file" id="input-id2" name="files" accept=".doc, .docx" class="form-control file" />
            </div>
        </div>
    </div>
    <br />
    <div class="row">
        <div class="col-md-12" align="center">
            <div class="form-group">
                <p class="text-info">
                    <strong>Output format:</strong>
                    <select name="outputFormat" class="form-control">
                        <option value="DOCX">DOCX</option>
                        <option value="PDF">PDF</option>
                    </select>
                </p>

            </div>
            <div class="col-md-12" align="center">
                <div class="form-group">
                    <button type="submit" class="form-control btn btn-success">Compare and Download</button>
                </div>
            </div>
        </div>
    </div>
</form>
<script> 
    // Przeciągnij i upuść opcje wtyczki
    $("#input-id").fileinput({ 'showUpload': false, 'previewFileType': 'any', 'showClose': false });
    $("#input-id2").fileinput({ 'showUpload': false, 'previewFileType': 'any', 'showClose': false });
</script>
  • Skopiuj i wklej następującą metodę w kontrolerze HomeController.cs.
[HttpPost]
public FileResult UploadFiles(List<IFormFile> files, string outputFormat)
{
	if(files.Count()==0)
	{
		return null;
	}
	string fileName = "result.docx";
	// Prześlij pliki
	var file1 = Path.Combine("wwwroot/uploads", files[0].FileName);
	var file2 = Path.Combine("wwwroot/uploads", files[1].FileName);
	using (var stream = new FileStream(file1, FileMode.Create))
	{
		files[0].CopyTo(stream);
	}
	using (var stream = new FileStream(file2, FileMode.Create))
	{
		files[1].CopyTo(stream);
	}
	// Załaduj dokumenty Worda
	Document doc1 = new Document(file1);
	Document doc2 = new Document(file2);
	// Ustaw funkcje porównania
	CompareOptions compareOptions = new CompareOptions();
	compareOptions.IgnoreFormatting = true;
	compareOptions.IgnoreCaseChanges = true;
	compareOptions.IgnoreComments = true;
	compareOptions.IgnoreTables = true;
	compareOptions.IgnoreFields = true;
	compareOptions.IgnoreFootnotes = true;
	compareOptions.IgnoreTextboxes = true;
	compareOptions.IgnoreHeadersAndFooters = true;
	compareOptions.Target = ComparisonTargetType.New;

	var outputStream = new MemoryStream();
	// Porównaj dokumenty Worda
	doc1.Compare(doc2, "John Doe", DateTime.Now, compareOptions);
	if (outputFormat == "DOCX")
	{
		// Dla porównania wynik w DOCX
		doc1.Save(outputStream, SaveFormat.Docx);
		outputStream.Position = 0;
		// Zwróć wygenerowany plik Word
		return File(outputStream, System.Net.Mime.MediaTypeNames.Application.Rtf, fileName);
	}
	else
	{
		// Dla porównania wynik w PDF
		fileName = "result.pdf";
		doc1.Save(outputStream, SaveFormat.Pdf);
		outputStream.Position = 0;
		// Zwróć wygenerowany plik PDF
		return File(outputStream, System.Net.Mime.MediaTypeNames.Application.Pdf, fileName);
	}    
}
  • Wstaw następujące pliki CSS i JS wtyczki przeciągnij i upuść w tagu head widoku layout.cshtml.
<!--drag and drop file plugin-->
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-fileinput/5.0.9/css/fileinput.min.css" media="all" rel="stylesheet" type="text/css" />
<script src="https://code.jquery.com/jquery-3.3.1.min.js" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.bundle.min.js" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-fileinput/5.0.9/js/fileinput.min.js"></script> 
<!--end of drag and drop-->
  • Zbuduj aplikację i uruchom ją w przeglądarce.

Aplikacja porównawcza C# ASP.NET Word DOCX — wersja demonstracyjna

Poniżej przedstawiono demonstrację sposobu porównywania dwóch dokumentów programu Word za pomocą naszej aplikacji do porównywania dokumentów C# ASP.NET.

Porównaj Word DOCX w ASP.NET

Porównanie Worda DOCX w ASP.NET

Pobierz aplikację porównawczą C# ASP.NET DOCX

Możesz pobrać pełny kod źródłowy aplikacji do porównywania dokumentów ASP.NET Word z tutaj.

O Aspose.Words for .NET

Wypróbuj Aspose.Words dla platformy .NET za darmo

Aspose oferuje tymczasową licencję na bezpłatne wypróbowanie interfejsów API Aspose. Zdobądź swoją, aby ocenić Aspose.Words dla platformy .NET.

Powiązany artykuł