Spesso abbiamo bisogno di confrontare due documenti MS Word DOC/DOCX per verificare le somiglianze o le differenze. Il confronto ci dà un’idea di cosa è stato modificato nelle due versioni di un unico documento Word. Sono disponibili varie applicazioni confronto di documenti online che consentono di confrontare due documenti di Word. Tuttavia, potrebbe verificarsi il caso in cui è necessario integrare le funzionalità di confronto dei documenti all’interno dell’applicazione Web. D’altra parte, potresti voler creare la tua app per il confronto dei documenti online. Per gestire questi casi, ti mostrerò come confrontare due documenti di Word usando C# all’interno dell’applicazione Web ASP.NET. Questa applicazione avrà le seguenti caratteristiche.
- Confronta due documenti Word (DOC/DOCX).
- Scarica il risultato del confronto in formato DOCX
- Scarica il risultato del confronto in formato PDF
API .NET per confrontare documenti Word
Per eseguire il confronto dei documenti di Word senza MS Office, utilizzeremo Aspose.Words for .NET che è una potente API di elaborazione testi per ASP.NET o altre applicazioni .NET/.NET Core. Puoi scaricare API o installarlo all’interno della tua applicazione ASP.NET usando NuGet.
PM> Install-Package Aspose.Words
Confronta due documenti di Word in C# ASP.NET
- Creare una nuova applicazione Web ASP.NET Core in Visual Studio 2017 o versioni successive.
- Scegli il modello Applicazione Web (Model-View-Controller).
- Installare il pacchetto Aspose.Words per .NET usando Gestione pacchetti NuGet.
- Copia e incolla il seguente script nella vista 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>
// Trascina e rilascia le opzioni del plug-in
$("#input-id").fileinput({ 'showUpload': false, 'previewFileType': 'any', 'showClose': false });
$("#input-id2").fileinput({ 'showUpload': false, 'previewFileType': 'any', 'showClose': false });
</script>
- Copia e incolla il seguente metodo nel controller HomeController.cs.
[HttpPost]
public FileResult UploadFiles(List<IFormFile> files, string outputFormat)
{
if(files.Count()==0)
{
return null;
}
string fileName = "result.docx";
// Caricare files
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);
}
// Carica documenti Word
Document doc1 = new Document(file1);
Document doc2 = new Document(file2);
// Imposta le funzioni di confronto
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();
// Confronta i documenti di Word
doc1.Compare(doc2, "John Doe", DateTime.Now, compareOptions);
if (outputFormat == "DOCX")
{
// Per il risultato del confronto in DOCX
doc1.Save(outputStream, SaveFormat.Docx);
outputStream.Position = 0;
// Restituisce il file Word generato
return File(outputStream, System.Net.Mime.MediaTypeNames.Application.Rtf, fileName);
}
else
{
// Per il risultato del confronto in PDF
fileName = "result.pdf";
doc1.Save(outputStream, SaveFormat.Pdf);
outputStream.Position = 0;
// Restituisci il file PDF generato
return File(outputStream, System.Net.Mime.MediaTypeNames.Application.Pdf, fileName);
}
}
- Inserisci i seguenti file CSS e JS del plug-in drag and drop nel tag head della vista 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-->
- Compila l’applicazione ed esegui nel browser.
App di confronto di documenti Word ASP.NET - Demo
Quella che segue è la dimostrazione di come confrontare due documenti Word utilizzando la nostra applicazione di confronto documenti ASP.NET.
Scarica
È possibile scaricare il codice sorgente completo dell’applicazione di confronto dei documenti ASP.NET Word da qui.
Informazioni su Aspose.Words per .NET
Prova Aspose.Words per .NET gratuitamente
Aspose offre una licenza temporanea per provare gratuitamente le API di Aspose. Ottieni il tuo per valutare Aspose.Words per .NET.