
Нам часто нужно сравнить два документа MS Word DOC/DOCX, чтобы проверить сходство или различие. Сравнение дает нам представление о том, что изменилось в двух версиях одного документа Word. Доступны различные приложения онлайн-сравнение документов, которые позволяют сравнивать два документа Word. Однако может быть случай, когда вам нужно интегрировать функции сравнения документов в ваше веб-приложение. С другой стороны, вы можете создать собственное онлайн-приложение для сравнения документов. Чтобы справиться с такими случаями, я покажу вам, как сравнить два документа Word с помощью C# в веб-приложении ASP.NET. Это приложение будет иметь следующие функции.
- Сравните два документа Word (DOC/DOCX)
- Скачать результат сравнения в формате DOCX
- Скачать результат сравнения в формате PDF
.NET API для сравнения документов Word
Чтобы выполнить сравнение документов Word без MS Office, мы будем использовать Aspose.Words for .NET, который представляет собой мощный API обработки текстов для ASP.NET или других приложений .NET/.NET Core. Вы можете загрузить API или установить его в своем приложении ASP.NET с помощью NuGet.
PM> Install-Package Aspose.Words
Сравните два документа Word в C# ASP.NET
- Создайте новое веб-приложение ASP.NET Core в Visual Studio 2017 или более поздней версии.

- Выберите шаблон веб-приложения (модель-представление-контроллер).

- Установите пакет Aspose.Words для .NET с помощью диспетчера пакетов NuGet.

- Скопируйте и вставьте следующий скрипт в представление 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>
// Перетащите параметры плагина
$("#input-id").fileinput({ 'showUpload': false, 'previewFileType': 'any', 'showClose': false });
$("#input-id2").fileinput({ 'showUpload': false, 'previewFileType': 'any', 'showClose': false });
</script>
- Скопируйте и вставьте следующий метод в контроллер HomeController.cs.
[HttpPost]
public FileResult UploadFiles(List<IFormFile> files, string outputFormat)
{
if(files.Count()==0)
{
return null;
}
string fileName = "result.docx";
// Загрузить файлы
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);
}
// Загрузить документы Word
Document doc1 = new Document(file1);
Document doc2 = new Document(file2);
// Установить функции сравнения
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();
// Сравните документы Word
doc1.Compare(doc2, "John Doe", DateTime.Now, compareOptions);
if (outputFormat == "DOCX")
{
// Для сравнения результат в формате DOCX
doc1.Save(outputStream, SaveFormat.Docx);
outputStream.Position = 0;
// Вернуть сгенерированный файл Word
return File(outputStream, System.Net.Mime.MediaTypeNames.Application.Rtf, fileName);
}
else
{
// Для сравнения результат в PDF
fileName = "result.pdf";
doc1.Save(outputStream, SaveFormat.Pdf);
outputStream.Position = 0;
// Вернуть сгенерированный файл PDF
return File(outputStream, System.Net.Mime.MediaTypeNames.Application.Pdf, fileName);
}
}
- Вставьте следующие файлы CSS и JS плагина перетаскивания в тег заголовка представления \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-->
- Создайте приложение и запустите его в браузере.
Приложение для сравнения документов ASP.NET Word — демонстрация
Ниже показано, как сравнить два документа Word с помощью нашего приложения для сравнения документов ASP.NET.

Сравнение Word DOCX в ASP.NET
Скачать
Вы можете загрузить полный исходный код приложения для сравнения документов ASP.NET Word из здесь.
О Aspose.Words для .NET
Попробуйте Aspose.Words для .NET бесплатно
Aspose предлагает временную лицензию для бесплатного опробования API Aspose. Получите возможность оценить Aspose.Words для .NET.