Často potřebujeme porovnat dva dokumenty MS Word DOC/DOCX, abychom zkontrolovali podobnosti nebo rozdíly. Srovnání nám dává představu o tom, co se změnilo ve dvou verzích jednoho dokumentu aplikace Word. K dispozici jsou různé online porovnání dokumentů aplikace, které umožňují porovnat dva dokumenty Wordu. Může však nastat případ, kdy potřebujete integrovat funkce porovnávání dokumentů do vaší webové aplikace. Na druhou stranu si možná budete chtít vytvořit vlastní online aplikaci pro porovnávání dokumentů. Abychom se vypořádali s takovými případy, ukážu vám, jak porovnat dva Word DOCX pomocí C# v rámci webové aplikace ASP.NET. Tato aplikace bude mít následující funkce.
- C# .NET API pro porovnání dokumentů Word DOCX
- Porovnejte dva dokumenty Word (DOC/DOCX) v C#
- Stáhněte si výsledek srovnání ve formátu DOCX
- Stáhněte si výsledek srovnání ve formátu PDF
C# .NET API pro porovnání Word DOCX
K porovnání dokumentů Wordu bez MS Office použijeme Aspose.Words for .NET, což je výkonné rozhraní API pro zpracování textu pro ASP.NET nebo jiné aplikace .NET/.NET Core. Můžete si stáhnout API nebo jej nainstalovat do své aplikace ASP.NET pomocí NuGet.
PM> Install-Package Aspose.Words
Porovnejte dva dokumenty Word v C# ASP.NET
- Vytvořte novou webovou aplikaci ASP.NET Core v sadě Visual Studio 2017 nebo novější.
- Vyberte šablonu webové aplikace (Model-View-Controller).
- Nainstalujte balíček Aspose.Words for .NET pomocí Správce balíčků NuGet.
- Zkopírujte a vložte následující skript do zobrazení 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>
// Možnosti pluginu přetáhněte
$("#input-id").fileinput({ 'showUpload': false, 'previewFileType': 'any', 'showClose': false });
$("#input-id2").fileinput({ 'showUpload': false, 'previewFileType': 'any', 'showClose': false });
</script>
- Zkopírujte a vložte následující metodu do ovladače HomeController.cs.
[HttpPost]
public FileResult UploadFiles(List<IFormFile> files, string outputFormat)
{
if(files.Count()==0)
{
return null;
}
string fileName = "result.docx";
// Nahrát soubory
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);
}
// Načtěte dokumenty aplikace Word
Document doc1 = new Document(file1);
Document doc2 = new Document(file2);
// Nastavte funkce porovnání
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();
// Porovnejte dokumenty aplikace Word
doc1.Compare(doc2, "John Doe", DateTime.Now, compareOptions);
if (outputFormat == "DOCX")
{
// Pro srovnání výsledek v DOCX
doc1.Save(outputStream, SaveFormat.Docx);
outputStream.Position = 0;
// Vraťte vygenerovaný soubor Word
return File(outputStream, System.Net.Mime.MediaTypeNames.Application.Rtf, fileName);
}
else
{
// Pro srovnání výsledek v PDF
fileName = "result.pdf";
doc1.Save(outputStream, SaveFormat.Pdf);
outputStream.Position = 0;
// Vrátit vygenerovaný soubor PDF
return File(outputStream, System.Net.Mime.MediaTypeNames.Application.Pdf, fileName);
}
}
- Vložte následující soubory CSS a JS zásuvného modulu drag and drop do značky head v zobrazení 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-->
- Sestavte aplikaci a spusťte ji v prohlížeči.
C# ASP.NET Word srovnávací aplikace DOCX – ukázka
Následuje ukázka, jak porovnat dva dokumenty aplikace Word pomocí naší aplikace pro porovnání dokumentů C# ASP.NET.
Stáhněte si porovnávací aplikaci C# ASP.NET DOCX
Úplný zdrojový kód aplikace pro porovnávání dokumentů ASP.NET Word si můžete stáhnout zde.
O Aspose.Words for .NET
Vyzkoušejte Aspose.Words for .NET zdarma
Aspose nabízí dočasnou licenci k vyzkoušení Aspose API zdarma. Získejte své k hodnocení Aspose.Words for .NET.