Hợp nhất tài liệu Word ASP.NET

Hợp nhất nhiều tài liệu MS Word có thể hữu ích trong các tình huống khác nhau. Ví dụ: nó có thể được sử dụng để giữ một loại tài liệu tương tự thành một tệp duy nhất, kết hợp nhiều tài liệu trước khi chia sẻ, v.v. Có sẵn nhiều công cụ trực tuyến cho phép bạn hợp nhất các tài liệu MS Word khá dễ dàng, tuy nhiên, nếu bạn muốn thêm tính năng này vào trong ứng dụng của mình thì sao? Để giúp bạn đạt được điều này, tôi sẽ chỉ cho bạn cách hợp nhất các tài liệu MS Word (DOC/DOCX) bằng C# trong các ứng dụng web ASP.NET của bạn. Ứng dụng Hợp nhất Tài liệu Word này sẽ có các tính năng sau:

  • Hợp nhất tài liệu MS Word thành một tài liệu
  • Tải xuống các tài liệu Word đã hợp nhất ở định dạng DOCX
  • Tải xuống các tài liệu Word đã hợp nhất ở định dạng PDF

.NET API để Hợp nhất Tài liệu MS Word trong ASP.NET

Aspose.Words for .NET là API xử lý văn bản giàu tính năng cho phép bạn xử lý tài liệu MS Word một cách dễ dàng. Nó cũng cho phép bạn hợp nhất nhiều tài liệu Word thành một tài liệu duy nhất trong ASP.NET hoặc bất kỳ ứng dụng .NET/.NET Core nào. Có thể cài đặt Aspose.Words for .NET bằng cách sử dụng NuGet cũng như tải xuống dưới dạng tệp DLL.

PM> install-package Aspose.Words

Hợp nhất tài liệu MS Word trong ASP.NET

Sau đây là các bước để tạo một ứng dụng ASP.NET cho phép bạn hợp nhất hai hoặc nhiều tài liệu Word (DOC/DOCX) mà không cần sử dụng MS Office/Word.

  • Tạo một ứng dụng web ASP.NET Core trong Visual Studio.
Tạo ứng dụng web ASP.NET Core
  • Chọn Ứng dụng web (Model-View-Controller) từ danh sách mẫu.
Chọn ứng dụng MVC
  • Cài đặt Aspose.Words for .NET từ Trình quản lý gói NuGet hoặc Bảng điều khiển quản lý gói.
.NET API để so sánh từ
  • Chèn tập lệnh sau vào tệp index.cshtml của bạn.
@{
    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>
    // Kéo và thả các tùy chọn plugin
    $("#input-id").fileinput({ 'mainClass': "input-group-lg", 'showBrowse': true, 'showUpload': false, 'previewFileType': 'any', 'showClose': false, 'maxFileCount': 5, });
</script>
  • Chèn đoạn mã sau vào lớp HomeController.cs của bạn.
public FileResult UploadFiles(List<IFormFile> files, string outputFormat)
{
	if (files.Count() <= 1)
	{
		// hiển thị một số tin nhắn
		return null;
	}
	string fileName = "merged-document.docx";
	string path = "wwwroot/uploads";
	List<Document> documents = new List<Document>();
	// tải tập tin lên 
	foreach (IFormFile file in files)
	{
		string filePath = Path.Combine(path, file.FileName);
		// Lưu các tập tin
		using (var stream = new FileStream(filePath, FileMode.Create))
		{
			file.CopyTo(stream);
		}
		// Thêm tất cả tài liệu vào danh sách
		documents.Add(new Document(filePath));
	}
	// Tải tài liệu Word đầu tiên
	Document doc1 = documents[0];
	for (int i = 1; i < documents.Count(); i++)
	{
    // Hợp nhất các tài liệu Word
		doc1.AppendDocument(documents[i], ImportFormatMode.KeepSourceFormatting);
	}           

	var outputStream = new MemoryStream(); 
	if (outputFormat == "DOCX")
	{
		doc1.Save(outputStream, SaveFormat.Docx);
		outputStream.Position = 0;
		// Trả lại tệp Word đã tạo
		return File(outputStream, System.Net.Mime.MediaTypeNames.Application.Rtf, fileName);
	}
	else
	{
		fileName = "merged-document.pdf";
		doc1.Save(outputStream, SaveFormat.Pdf);
		outputStream.Position = 0;
		// Trả lại tệp PDF đã tạo
		return File(outputStream, System.Net.Mime.MediaTypeNames.Application.Pdf, fileName);
	}
}
  • Bao gồm các tệp JS và CSS sau đây của plugin kéo và thả trong thẻ đầu của tệp 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-->
  • Xây dựng ứng dụng và chạy nó trong trình duyệt của bạn.
Hợp nhất tài liệu ASP.NET Word

Tải xuống

Tải xuống mã nguồn của ứng dụng ASP.NET Word Document Merger từ tại đây.

Dùng thử miễn phí Aspose.Words for .NET

Nhận giấy phép tạm thời(giấy phép đầy đủ trong 30 ngày) để dùng thử miễn phí Aspose.Words for .NET.

Bài viết liên quan