Порівняйте документи Word в ASP.NET

Нам часто доводиться порівнювати два документи 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 або новішої версії.
Створіть веб-програму ASP.NET Core
  • Виберіть шаблон Web Application (Model-View-Controller).
Виберіть додаток MVC
  • Встановіть пакет Aspose.Words for .NET за допомогою диспетчера пакетів NuGet.
.NET API для порівняння слів
  • Скопіюйте та вставте наведений нижче сценарій у поданні 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.

Порівняйте Word DOCX в ASP.NET

Порівняння Word DOCX в ASP.NET

Завантажте програму порівняння C# ASP.NET DOCX

Ви можете завантажити повний вихідний код програми для порівняння документів ASP.NET Word тут.

Про Aspose.Words for .NET

Спробуйте Aspose.Words for .NET безкоштовно

Aspose пропонує тимчасову ліцензію, щоб безкоштовно випробувати Aspose API. Отримайте свій, щоб оцінити Aspose.Words for .NET.

Пов’язана стаття