Нам часто доводиться порівнювати два документи MS Word DOC/DOCX, щоб перевірити схожість чи відмінність. Порівняння дає нам уявлення про те, що було змінено у двох версіях одного документа Word. Доступні різні онлайн-порівняння документів програми, які дозволяють порівнювати два документи Word. Однак може виникнути ситуація, коли вам знадобиться інтегрувати функції порівняння документів у веб-програму. З іншого боку, ви можете створити власний онлайн-додаток для порівняння документів. Для вирішення таких випадків я покажу вам, як порівняти два Word DOCX за допомогою C# у веб-програмі ASP.NET. Ця програма матиме такі функції.
- C# .NET API для порівняння документів Word DOCX
- Порівняйте два документи Word (DOC/DOCX) у C#
- Завантажте результат порівняння у форматі DOCX
- Завантажте результат порівняння у форматі PDF
C# .NET API для порівняння Word DOCX
Щоб виконати порівняння документів 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 або новішої версії.
- Виберіть шаблон Web Application (Model-View-Controller).
- Встановіть пакет Aspose.Words for .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 плагіна перетягування в тег head перегляду 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-->
- Створіть додаток і запустіть його в браузері.
Програма порівняння C# ASP.NET Word DOCX – демонстрація
Нижче наведено демонстрацію того, як порівняти два документи Word за допомогою нашої програми порівняння документів C# ASP.NET.
Завантажте програму порівняння C# ASP.NET DOCX
Ви можете завантажити повний вихідний код програми для порівняння документів ASP.NET Word тут.
Про Aspose.Words for .NET
Спробуйте Aspose.Words for .NET безкоштовно
Aspose пропонує тимчасову ліцензію, щоб безкоштовно випробувати Aspose API. Отримайте свій, щоб оцінити Aspose.Words for .NET.