Chúng ta thường cần so sánh hai tài liệu MS Word DOC/DOCX để kiểm tra sự giống và khác nhau. So sánh cho chúng ta ý tưởng về những gì đã được thay đổi trong hai phiên bản của một tài liệu Word. Có sẵn nhiều ứng dụng so sánh tài liệu trực tuyến cho phép bạn so sánh hai tài liệu Word. Tuy nhiên, có thể xảy ra trường hợp bạn cần tích hợp các tính năng so sánh tài liệu trong ứng dụng web của mình. Mặt khác, bạn có thể muốn xây dựng ứng dụng so sánh tài liệu trực tuyến của riêng mình. Để giải quyết những trường hợp như vậy, tôi sẽ chỉ cho bạn cách so sánh hai Word DOCX bằng C# trong ứng dụng web ASP.NET. Ứng dụng này sẽ có các tính năng sau.
- API C# .NET để so sánh tài liệu Word DOCX
- So sánh hai tài liệu Word (DOC/DOCX) trong C#
- Tải xuống kết quả so sánh ở định dạng DOCX
- Tải xuống kết quả so sánh ở định dạng PDF
API C# .NET để so sánh Word DOCX
Để thực hiện so sánh các tài liệu Word mà không có MS Office, chúng tôi sẽ sử dụng Aspose.Words for .NET, một API xử lý văn bản mạnh mẽ cho ASP.NET hoặc các ứng dụng .NET/.NET Core khác. Bạn có thể tải xuống API hoặc cài đặt nó trong ứng dụng ASP.NET của mình bằng NuGet.
PM> Install-Package Aspose.Words
So sánh hai tài liệu Word trong C# ASP.NET
- Tạo Ứng dụng web ASP.NET Core mới trong Visual Studio 2017 trở lên.
- Chọn mẫu Ứng dụng web (Model-View-Controller).
- Cài đặt gói Aspose.Words for .NET bằng Trình quản lý gói NuGet.
- Sao chép và dán tập lệnh sau vào chế độ xem index.cshtml.
@{
ViewData["Title"] = "MS Word Comparison in ASP.NET";
}
<h2 class="text-info">Compare Two Word DOC/DOCX Documents</h2>
<p class="text-info">Compare the contents of MS Word documents and get the results in DOCX or PDF format.</p>
<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-6" align="center">
<div class="form-group">
<input type="file" id="input-id" name="files" accept=".doc, .docx" class="form-control file" data-preview-file-type="text" />
</div>
</div>
<div class="col-md-6" align="center">
<div class="form-group">
<input type="file" id="input-id2" name="files" accept=".doc, .docx" class="form-control file" />
</div>
</div>
</div>
<br />
<div class="row">
<div class="col-md-12" align="center">
<div class="form-group">
<p class="text-info">
<strong>Output format:</strong>
<select name="outputFormat" class="form-control">
<option value="DOCX">DOCX</option>
<option value="PDF">PDF</option>
</select>
</p>
</div>
<div class="col-md-12" align="center">
<div class="form-group">
<button type="submit" class="form-control btn btn-success">Compare and Download</button>
</div>
</div>
</div>
</div>
</form>
<script>
// Kéo và thả các tùy chọn plugin
$("#input-id").fileinput({ 'showUpload': false, 'previewFileType': 'any', 'showClose': false });
$("#input-id2").fileinput({ 'showUpload': false, 'previewFileType': 'any', 'showClose': false });
</script>
- Sao chép và dán phương thức sau vào bộ điều khiển HomeController.cs.
[HttpPost]
public FileResult UploadFiles(List<IFormFile> files, string outputFormat)
{
if(files.Count()==0)
{
return null;
}
string fileName = "result.docx";
// Tải tệp lên
var file1 = Path.Combine("wwwroot/uploads", files[0].FileName);
var file2 = Path.Combine("wwwroot/uploads", files[1].FileName);
using (var stream = new FileStream(file1, FileMode.Create))
{
files[0].CopyTo(stream);
}
using (var stream = new FileStream(file2, FileMode.Create))
{
files[1].CopyTo(stream);
}
// Tải tài liệu Word
Document doc1 = new Document(file1);
Document doc2 = new Document(file2);
// Đặt tính năng so sánh
CompareOptions compareOptions = new CompareOptions();
compareOptions.IgnoreFormatting = true;
compareOptions.IgnoreCaseChanges = true;
compareOptions.IgnoreComments = true;
compareOptions.IgnoreTables = true;
compareOptions.IgnoreFields = true;
compareOptions.IgnoreFootnotes = true;
compareOptions.IgnoreTextboxes = true;
compareOptions.IgnoreHeadersAndFooters = true;
compareOptions.Target = ComparisonTargetType.New;
var outputStream = new MemoryStream();
// So sánh tài liệu Word
doc1.Compare(doc2, "John Doe", DateTime.Now, compareOptions);
if (outputFormat == "DOCX")
{
// Đối với kết quả so sánh trong 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
{
// Đối với kết quả so sánh trong PDF
fileName = "result.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);
}
}
- Chèn các tệp CSS và JS sau của plugin kéo và thả vào thẻ đầu của chế độ xem 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 trên trình duyệt.
Ứng dụng so sánh C# ASP.NET Word DOCX - Demo
Sau đây là minh họa cách so sánh hai tài liệu Word bằng ứng dụng so sánh tài liệu C# ASP.NET của chúng tôi.
Tải xuống ứng dụng so sánh C# ASP.NET DOCX
Bạn có thể tải xuống toàn bộ mã nguồn của ứng dụng so sánh tài liệu ASP.NET Word từ tại đây.
Giới thiệu về Aspose.Words for .NET
Dùng thử miễn phí Aspose.Words for .NET
Aspose cung cấp giấy phép tạm thời để dùng thử miễn phí các API của Aspose. Nhận của bạn để đánh giá Aspose.Words for .NET.