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.
- Wybierz szablon Aplikacja internetowa (Model-View-Controller).
- Zainstaluj pakiet Aspose.Words dla platformy .NET przy użyciu Menedżera pakietów NuGet.
- 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.
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.