Confronta i documenti di Word in ASP.NET

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.
Crea un'applicazione Web ASP.NET Core
  • Scegli il modello Applicazione Web (Model-View-Controller).
Seleziona Applicazione MVC
  • Installare il pacchetto Aspose.Words per .NET usando Gestione pacchetti NuGet.
API .NET per il confronto di parole
  • 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.

Confronta Word DOCX in ASP.NET

Confronto di Word DOCX in 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.

Articolo correlato