Combinar documentos de Word ASP.NET

Combinar múltiples documentos de MS Word podría ser útil en varios escenarios. Por ejemplo, se puede usar para mantener un tipo similar de documentos en un solo archivo, combinar varios documentos antes de compartirlos, etc. Hay varias herramientas en línea disponibles que le permiten fusionar documentos de MS Word con bastante facilidad, sin embargo, ¿qué sucede si desea agregar esta función dentro de su propia aplicación? Para lograr esto, le mostraré cómo fusionar documentos de MS Word (DOC/DOCX) usando C# dentro de sus aplicaciones web ASP.NET. Esta aplicación de fusión de documentos de Word tendrá las siguientes características:

  • Combinar documentos de MS Word en un solo documento
  • Descargar documentos de Word combinados en formato DOCX
  • Descargar documentos combinados de Word en formato PDF

.NET API para fusionar documentos de MS Word en ASP.NET

Aspose.Words for .NET es una API de procesamiento de textos rica en funciones que le permite procesar documentos de MS Word con facilidad. También le permite fusionar varios documentos de Word en un solo documento dentro de ASP.NET o cualquier aplicación .NET/.NET Core. Aspose.Words for .NET puede instalarse mediante NuGet y descargarse como un archivo DLL.

PM> install-package Aspose.Words

Combinar documentos de MS Word en ASP.NET

Los siguientes son los pasos para crear una aplicación ASP.NET que le permitirá fusionar dos o más documentos de Word (DOC/DOCX) sin usar MS Office/Word.

  • Cree una aplicación web ASP.NET Core en Visual Studio.
Crear una aplicación web ASP.NET Core
  • Elija la aplicación web (modelo-vista-controlador) de la lista de plantillas.
Seleccione la aplicación MVC
  • Instale Aspose.Words for .NET desde NuGet Package Manager o Package Manager Console.
API .NET para comparación de palabras
  • Inserte el siguiente script en su archivo 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>
    // Opciones de complemento de arrastrar y soltar
    $("#input-id").fileinput({ 'mainClass': "input-group-lg", 'showBrowse': true, 'showUpload': false, 'previewFileType': 'any', 'showClose': false, 'maxFileCount': 5, });
</script>
  • Inserte el siguiente código en su clase HomeController.cs.
public FileResult UploadFiles(List<IFormFile> files, string outputFormat)
{
	if (files.Count() <= 1)
	{
		// mostrar algún mensaje
		return null;
	}
	string fileName = "merged-document.docx";
	string path = "wwwroot/uploads";
	List<Document> documents = new List<Document>();
	// subir archivos 
	foreach (IFormFile file in files)
	{
		string filePath = Path.Combine(path, file.FileName);
		// Guardar archivos
		using (var stream = new FileStream(filePath, FileMode.Create))
		{
			file.CopyTo(stream);
		}
		// Agregar todos los documentos a la lista
		documents.Add(new Document(filePath));
	}
	// Cargar primer documento de Word
	Document doc1 = documents[0];
	for (int i = 1; i < documents.Count(); i++)
	{
    // Combinar documentos de Word
		doc1.AppendDocument(documents[i], ImportFormatMode.KeepSourceFormatting);
	}           

	var outputStream = new MemoryStream(); 
	if (outputFormat == "DOCX")
	{
		doc1.Save(outputStream, SaveFormat.Docx);
		outputStream.Position = 0;
		// Devolver el archivo de Word generado
		return File(outputStream, System.Net.Mime.MediaTypeNames.Application.Rtf, fileName);
	}
	else
	{
		fileName = "merged-document.pdf";
		doc1.Save(outputStream, SaveFormat.Pdf);
		outputStream.Position = 0;
		// Devolver el archivo PDF generado
		return File(outputStream, System.Net.Mime.MediaTypeNames.Application.Pdf, fileName);
	}
}
  • Incluya los siguientes archivos JS y CSS del complemento de arrastrar y soltar dentro de la etiqueta principal del archivo \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-->
  • Cree la aplicación y ejecútela en su navegador.
Fusión de documentos de Word ASP.NET

Descargar

Descargue el código fuente de la aplicación ASP.NET Word Document Merger desde aquí.

Pruebe Aspose.Words for .NET gratis

Obtenga su licencia temporal (una licencia completa por 30 días) para probar Aspose.Words for .NET de forma gratuita.

Artículo relacionado