Mesclar documentos do Word ASP.NET

Mesclar vários documentos do MS Word pode ser útil em vários cenários. Por exemplo, ele pode ser usado para manter um tipo semelhante de documentos em um único arquivo, combinar vários documentos antes de compartilhar e assim por diante. Estão disponíveis várias ferramentas online que permitem mesclar documentos do MS Word com bastante facilidade, no entanto, e se você quiser adicionar esse recurso em seu próprio aplicativo? Para fazer você conseguir isso, mostrarei como mesclar documentos do MS Word (DOC/DOCX) usando C# em seus aplicativos da Web ASP.NET. Este aplicativo Word Document Merger terá os seguintes recursos:

  • Mesclar documentos do MS Word em um único documento
  • Baixar documentos do Word mesclados como formato DOCX
  • Baixar documentos do Word mesclados como formato PDF

API .NET para mesclar documentos do MS Word no ASP.NET

Aspose.Words for .NET é uma API de processamento de texto rica em recursos que permite processar documentos do MS Word com facilidade. Ele também permite mesclar vários documentos do Word em um único documento no ASP.NET ou em qualquer aplicativo .NET/.NET Core. O Aspose.Words for .NET pode ser instalado usando NuGet, bem como baixado como um arquivo DLL.

PM> install-package Aspose.Words

Mesclar documentos do MS Word no ASP.NET

A seguir estão as etapas para criar um aplicativo ASP.NET que permitirá mesclar dois ou mais documentos do Word (DOC/DOCX) sem usar o MS Office/Word.

  • Crie um aplicativo Web ASP.NET Core no Visual Studio.
Criar aplicativo Web ASP.NET Core
  • Escolha o aplicativo da Web (Model-View-Controller) na lista de modelos.
Selecione o aplicativo MVC
  • Instale o Aspose.Words for .NET do Gerenciador de Pacotes NuGet ou do Console do Gerenciador de Pacotes.
.NET API para comparação de palavras
  • Insira o script a seguir em seu arquivo 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>
    // Opções de plug-in de arrastar e soltar
    $("#input-id").fileinput({ 'mainClass': "input-group-lg", 'showBrowse': true, 'showUpload': false, 'previewFileType': 'any', 'showClose': false, 'maxFileCount': 5, });
</script>
  • Insira o código a seguir em sua classe HomeController.cs.
public FileResult UploadFiles(List<IFormFile> files, string outputFormat)
{
	if (files.Count() <= 1)
	{
		// exibir alguma mensagem
		return null;
	}
	string fileName = "merged-document.docx";
	string path = "wwwroot/uploads";
	List<Document> documents = new List<Document>();
	// fazer upload de arquivos 
	foreach (IFormFile file in files)
	{
		string filePath = Path.Combine(path, file.FileName);
		// Salvar arquivos
		using (var stream = new FileStream(filePath, FileMode.Create))
		{
			file.CopyTo(stream);
		}
		// Adicionar todos os documentos à lista
		documents.Add(new Document(filePath));
	}
	// Carregar primeiro documento do Word
	Document doc1 = documents[0];
	for (int i = 1; i < documents.Count(); i++)
	{
    // Mesclar documentos do Word
		doc1.AppendDocument(documents[i], ImportFormatMode.KeepSourceFormatting);
	}           

	var outputStream = new MemoryStream(); 
	if (outputFormat == "DOCX")
	{
		doc1.Save(outputStream, SaveFormat.Docx);
		outputStream.Position = 0;
		// Retornar arquivo do Word gerado
		return File(outputStream, System.Net.Mime.MediaTypeNames.Application.Rtf, fileName);
	}
	else
	{
		fileName = "merged-document.pdf";
		doc1.Save(outputStream, SaveFormat.Pdf);
		outputStream.Position = 0;
		// Retornar arquivo PDF gerado
		return File(outputStream, System.Net.Mime.MediaTypeNames.Application.Pdf, fileName);
	}
}
  • Inclua os seguintes arquivos JS e CSS do plug-in de arrastar e soltar na tag head do arquivo 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-->
  • Compile o aplicativo e execute-o em seu navegador.
Fusão de documentos do ASP.NET Word

Download

Baixe o código-fonte do aplicativo ASP.NET Word Document Merger aqui.

Experimente o Aspose.Words for .NET gratuitamente

Obtenha sua licença temporária (uma licença completa por 30 dias) para experimentar o Aspose.Words for .NET gratuitamente.

Artigo relacionado