Fusionner des documents Word ASP.NET

La fusion de plusieurs documents MS Word peut être utile dans divers scénarios. Par exemple, il peut être utilisé pour conserver un type de document similaire dans un seul fichier, combiner plusieurs documents avant de les partager, etc. Divers outils en ligne sont disponibles pour vous permettre de fusionner assez facilement des documents MS Word, mais que se passe-t-il si vous souhaitez ajouter cette fonctionnalité dans votre propre application ? Pour vous permettre d’y parvenir, je vais vous montrer comment fusionner des documents MS Word (DOC/DOCX) à l’aide de C# dans vos applications Web ASP.NET. Cette application de fusion de documents Word aura les fonctionnalités suivantes :

  • Fusionner des documents MS Word en un seul document
  • Télécharger des documents Word fusionnés au format DOCX
  • Télécharger les documents Word fusionnés au format PDF

API .NET pour fusionner des documents MS Word dans ASP.NET

Aspose.Words for .NET est une API de traitement de texte riche en fonctionnalités qui vous permet de traiter facilement des documents MS Word. Il vous permet également de fusionner plusieurs documents Word en un seul document au sein d’ASP.NET ou de toute application .NET/.NET Core. Aspose.Words for .NET peut être installé à l’aide de NuGet ainsi que téléchargé en tant que fichier DLL.

PM> install-package Aspose.Words

Fusionner des documents MS Word dans ASP.NET

Voici les étapes pour créer une application ASP.NET qui vous permettra de fusionner deux ou plusieurs documents Word (DOC/DOCX) sans utiliser MS Office/Word.

  • Créez une application Web ASP.NET Core dans Visual Studio.
Créer une application Web ASP.NET Core
  • Choisissez l’application Web (modèle-vue-contrôleur) dans la liste des modèles.
Sélectionnez l'application MVC
  • Installez Aspose.Words for .NET à partir du gestionnaire de packages NuGet ou de la console du gestionnaire de packages.
API .NET pour la comparaison de mots
  • Insérez le script suivant dans votre fichier index.cshtml.
@{
    ViewData["Title"] = "Merge MS Word Documents in ASP.NET";
}

<div class="row">
    <div class="col-md-12" align="center">
        <h2 class="text-info">Merge Two or More Word DOC/DOCX Documents</h2>
        <p class="text-info">Merge MS Word documents and get the results in DOCX or PDF format.</p>
    </div>
</div>
<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-12" align="center">
            <div>
                <input type="file" id="input-id" name="files" multiple accept=".doc, .docx" class="form-control file" data-preview-file-type="text" />
            </div>
        </div>
    </div>
    <hr />
    <div class="row">
        <div class="col-md-12" align="center">
            <div class="input-group-lg">
                <strong>Save As</strong>
                <select name="outputFormat" class="form-control">
                    <option value="DOCX">DOCX</option>
                    <option value="PDF">PDF</option>
                </select>
                <button type="submit" class="form-control btn btn-success">Merge and Download</button>               
            </div> 
        </div>
    </div>
</form>
<script>
    // Glisser-déposer les options du plug-in
    $("#input-id").fileinput({ 'mainClass': "input-group-lg", 'showBrowse': true, 'showUpload': false, 'previewFileType': 'any', 'showClose': false, 'maxFileCount': 5, });
</script>
  • Insérez le code suivant dans votre classe HomeController.cs.
public FileResult UploadFiles(List<IFormFile> files, string outputFormat)
{
	if (files.Count() <= 1)
	{
		// afficher un message
		return null;
	}
	string fileName = "merged-document.docx";
	string path = "wwwroot/uploads";
	List<Document> documents = new List<Document>();
	// télécharger des fichiers 
	foreach (IFormFile file in files)
	{
		string filePath = Path.Combine(path, file.FileName);
		// Enregistrer les fichiers
		using (var stream = new FileStream(filePath, FileMode.Create))
		{
			file.CopyTo(stream);
		}
		// Ajouter tous les documents à la liste
		documents.Add(new Document(filePath));
	}
	// Charger le premier document Word
	Document doc1 = documents[0];
	for (int i = 1; i < documents.Count(); i++)
	{
    // Fusionner des documents Word
		doc1.AppendDocument(documents[i], ImportFormatMode.KeepSourceFormatting);
	}           

	var outputStream = new MemoryStream(); 
	if (outputFormat == "DOCX")
	{
		doc1.Save(outputStream, SaveFormat.Docx);
		outputStream.Position = 0;
		// Renvoyer le fichier Word généré
		return File(outputStream, System.Net.Mime.MediaTypeNames.Application.Rtf, fileName);
	}
	else
	{
		fileName = "merged-document.pdf";
		doc1.Save(outputStream, SaveFormat.Pdf);
		outputStream.Position = 0;
		// Renvoyer le fichier PDF généré
		return File(outputStream, System.Net.Mime.MediaTypeNames.Application.Pdf, fileName);
	}
}
  • Incluez les fichiers JS et CSS suivants du plug-in glisser-déposer dans la balise d’en-tête du fichier 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-->
  • Créez l’application et exécutez-la dans votre navigateur.
Fusion de documents Word ASP.NET

Télécharger

Téléchargez le code source de l’application ASP.NET Word Document Merger depuis ici.

Essayez gratuitement Aspose.Words for .NET

Obtenez votre licence temporaire (une licence complète pendant 30 jours) pour essayer gratuitement Aspose.Words for .NET.

Article associé