Объединение документов Word ASP.NET

Объединение нескольких документов MS Word может быть полезно в различных сценариях. Например, его можно использовать для хранения документов аналогичного типа в одном файле, объединения нескольких документов перед совместным использованием и т. д. Доступны различные онлайн-инструменты, которые позволяют довольно легко объединять документы MS Word, однако что, если вы хотите добавить эту функцию в свое собственное приложение? Чтобы помочь вам добиться этого, я покажу вам, как объединять документы MS Word (DOC/DOCX) с помощью C# в ваших веб-приложениях ASP.NET. Это приложение Word Document Merger будет иметь следующие функции:

  • Объединить документы MS Word в один документ
  • Скачать объединенные документы Word в формате DOCX
  • Скачать объединенные документы Word в формате PDF

.NET API для слияния документов MS Word в ASP.NET

Aspose.Words for .NET — это многофункциональный API для обработки текстов, который позволяет с легкостью обрабатывать документы MS Word. Он также позволяет объединять несколько документов Word в один документ в ASP.NET или любом приложении .NET/.NET Core. Aspose.Words для .NET можно установить с помощью NuGet, а также загрузить в виде файла DLL.

PM> install-package Aspose.Words

Объединение документов MS Word в ASP.NET

Ниже приведены шаги по созданию приложения ASP.NET, которое позволит вам объединить два или более документов Word (DOC/DOCX) без использования MS Office/Word.

  • Создайте основное веб-приложение ASP.NET в Visual Studio.
Создание основного веб-приложения ASP.NET
  • Выберите веб-приложение (модель-представление-контроллер) из списка шаблонов.
Выберите приложение MVC
  • Установите Aspose.Words для .NET из диспетчера пакетов NuGet или консоли диспетчера пакетов.
.NET API для сравнения слов
  • Вставьте следующий скрипт в файл 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>
    // Перетащите параметры плагина
    $("#input-id").fileinput({ 'mainClass': "input-group-lg", 'showBrowse': true, 'showUpload': false, 'previewFileType': 'any', 'showClose': false, 'maxFileCount': 5, });
</script>
  • Вставьте следующий код в свой класс HomeController.cs.
public FileResult UploadFiles(List<IFormFile> files, string outputFormat)
{
	if (files.Count() <= 1)
	{
		// показать какое-то сообщение
		return null;
	}
	string fileName = "merged-document.docx";
	string path = "wwwroot/uploads";
	List<Document> documents = new List<Document>();
	// загрузить файлы 
	foreach (IFormFile file in files)
	{
		string filePath = Path.Combine(path, file.FileName);
		// Сохранить файлы
		using (var stream = new FileStream(filePath, FileMode.Create))
		{
			file.CopyTo(stream);
		}
		// Добавить все документы в список
		documents.Add(new Document(filePath));
	}
	// Загрузить первый документ Word
	Document doc1 = documents[0];
	for (int i = 1; i < documents.Count(); i++)
	{
    // Объединить документы Word
		doc1.AppendDocument(documents[i], ImportFormatMode.KeepSourceFormatting);
	}           

	var outputStream = new MemoryStream(); 
	if (outputFormat == "DOCX")
	{
		doc1.Save(outputStream, SaveFormat.Docx);
		outputStream.Position = 0;
		// Вернуть сгенерированный файл Word
		return File(outputStream, System.Net.Mime.MediaTypeNames.Application.Rtf, fileName);
	}
	else
	{
		fileName = "merged-document.pdf";
		doc1.Save(outputStream, SaveFormat.Pdf);
		outputStream.Position = 0;
		// Вернуть сгенерированный файл PDF
		return File(outputStream, System.Net.Mime.MediaTypeNames.Application.Pdf, fileName);
	}
}
  • Включите следующие файлы JS и CSS плагина перетаскивания в тег заголовка файла \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-->
  • Создайте приложение и запустите его в браузере.
Слияние документов ASP.NET Word

Скачать

Загрузите исходный код приложения ASP.NET Word Document Merger из здесь.

Попробуйте Aspose.Words для .NET бесплатно

Получите временную лицензию (полную лицензию на 30 дней), чтобы бесплатно попробовать Aspose.Words для .NET.

Связанная статья