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.
- Escolha o aplicativo da Web (Model-View-Controller) na lista de modelos.
- Instale o Aspose.Words for .NET do Gerenciador de Pacotes NuGet ou do Console do Gerenciador de Pacotes.
- 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.
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.