Tạo tài liệu MS Word từ Mẫu trộn thư bằng Python

Phối thư trong MS Word là một tính năng phổ biến cho phép bạn tạo thư, hóa đơn, phong bì, báo cáo, v.v. Sử dụng phối thư, bạn có thể tạo mẫu và điền dữ liệu vào mẫu. Kết quả là, một tài liệu được tạo cho mỗi mục nhập trong nguồn dữ liệu. Để tự động hóa tính năng này, bài viết này trình bày cách thực hiện phối thư MS Word bằng Python. Bạn sẽ học cách tạo một mẫu trộn thư từ đầu và điền nó theo chương trình.

Thư viện Python để tự động kết hợp thư MS Word

Để tự động kết hợp thư MS Word, chúng tôi sẽ sử dụng Aspose.Words dành cho Python. Đây là một thư viện mạnh mẽ cho phép bạn tạo và thao tác các tài liệu Word. Hơn nữa, nó cho phép bạn tạo các mẫu trộn thư và điền chúng một cách liền mạch. Có thể cài đặt Aspose.Words dành cho Python từ PyPI bằng lệnh pip sau.

pip install aspose-words 

Tạo mẫu trộn thư bằng Python

Mẫu phối thư chứa các trường hợp nhất được điền với các giá trị trong nguồn dữ liệu. Mẫu có thể có định dạng DOT, DOTX, DOC hoặc DOCX. Để tạo mẫu phối thư, bạn có thể sử dụng MS Word. Tuy nhiên, để tự động hóa quy trình này bằng Python, bạn có thể làm theo các bước dưới đây.

  • Tạo một đối tượng của lớp DocumentBuilder.
  • Chèn văn bản bằng phương thức DocumentBuilder.inserttextinput().
  • Chèn trường hợp nhất bằng phương thức DocumentBuilder.insertfield().
  • Lặp lại việc chèn văn bản và hợp nhất các trường theo yêu cầu.
  • Lưu mẫu dưới dạng tệp bằng phương thức DocumentBuilder.document.save().

Mẫu mã sau đây cho thấy cách tạo mẫu trộn thư DOCX bằng Python.

import aspose.words as aw

# Tạo một trình xây dựng tài liệu
builder = aw.DocumentBuilder()

# Chèn một trường nhập văn bản, tên duy nhất của trường này là "Xin chào", các tham số khác xác định
# Loại FormField đó là gì, định dạng của văn bản, kết quả trường và độ dài văn bản tối đa (0 = không có giới hạn)
builder.insert_text_input("TextInput", aw.fields.TextFormFieldType.REGULAR, "", "Hello ", 0)
builder.insert_field("MERGEFIELD CustomerFirstName \\* MERGEFORMAT")

builder.insert_text_input("TextInput1", aw.fields.TextFormFieldType.REGULAR, "", " ", 0)
builder.insert_field("MERGEFIELD CustomerLastName \\* MERGEFORMAT")

builder.insert_text_input("TextInput1", aw.fields.TextFormFieldType.REGULAR, "", " , ", 0)

# Chèn ngắt đoạn vào tài liệu
builder.insert_paragraph()

# Chèn nội dung thư
builder.insert_text_input("TextInput", aw.fields.TextFormFieldType.REGULAR, "", "Thanks for purchasing our ", 0)
builder.insert_field("MERGEFIELD ProductName \\* MERGEFORMAT")

builder.insert_text_input("TextInput", aw.fields.TextFormFieldType.REGULAR, "", ", please download your Invoice at ", 0)
builder.insert_field("MERGEFIELD InvoiceURL \\* MERGEFORMAT")

builder.insert_text_input("TextInput", aw.fields.TextFormFieldType.REGULAR, "", ". If you have any questions please call ", 0)
builder.insert_field("MERGEFIELD Supportphone \\* MERGEFORMAT")

builder.insert_text_input("TextInput", aw.fields.TextFormFieldType.REGULAR, "", ", or email us at ", 0)
builder.insert_field("MERGEFIELD SupportEmail \\* MERGEFORMAT")

builder.insert_text_input("TextInput", aw.fields.TextFormFieldType.REGULAR, "", ".", 0)

builder.insert_paragraph()

# Chèn phần cuối thư
builder.insert_text_input("TextInput", aw.fields.TextFormFieldType.REGULAR, "", "Best regards,", 0)
builder.insert_break(aw.BreakType.LINE_BREAK)
builder.insert_field("MERGEFIELD EmployeeFullname \\* MERGEFORMAT")

builder.insert_text_input("TextInput1", aw.fields.TextFormFieldType.REGULAR, ",", " ", 0)
builder.insert_field("MERGEFIELD EmployeeDepartment \\* MERGEFORMAT")

# Lưu mẫu dưới dạng tệp DOCX
builder.document.save("mail_merge_template.docx")

Sau đây là ảnh chụp màn hình của mẫu mà chúng tôi vừa tạo bằng cách sử dụng mẫu mã ở trên.

tạo mẫu trộn thư trong python

Tạo tài liệu Word bằng cách sử dụng mẫu trộn thư trong Python

Bây giờ khi bạn đã tạo mẫu trộn thư, đã đến lúc điền các giá trị vào các trường của nó. Sau đây là các bước để tạo tài liệu Word từ mẫu phối thư bằng Python.

  • Tải mẫu phối thư bằng cách sử dụng lớp Tài liệu.
  • Gọi phương thức Document.mailmerge.execute() và truyền dữ liệu dưới dạng một mảng.
  • Lưu tài liệu đã tạo bằng phương thức Document.save().

Mẫu mã sau đây cho biết cách tạo tài liệu Word từ mẫu phối thư.

import aspose.words as aw

# Tải mẫu phối thư
doc = aw.Document("mail_merge_template.docx")

# Điền dữ liệu vào các trường trong tài liệu
doc.mail_merge.execute(["CustomerFirstName", "CustomerLastName", "ProductName", "InvoiceURL", "SupportPhone", "SupportEmail", "EmployeeFullname", "EmployeeDepartment"],
    ["John", "Doe", "Aspose.Words", "aspose.com", "111-222-333", "support@aspose.com", "Jimmy", "Sales"]
    )

# Lưu tài liệu
doc.save("mail_merge_populated.docx")

Ảnh chụp màn hình sau đây cho thấy tài liệu Word mà chúng tôi đã tạo từ mẫu phối thư.

tạo tài liệu từ từ mẫu trộn thư trong python

Nhận giấy phép miễn phí

Bạn có thể sử dụng Aspose.Words dành cho Python mà không có giới hạn đánh giá bằng cách nhận giấy phép tạm thời miễn phí.

Sự kết luận

Phối thư MS Word là một tính năng hữu ích để tạo tài liệu Word từ các mẫu được xác định trước. Để tự động trộn thư, bài viết này đề cập đến cách tạo các mẫu trộn thư và điền chúng bằng dữ liệu bằng Python. Bạn cũng có thể khám phá các tính năng khác của Aspose. AdWords for Python bằng cách sử dụng tài liệu. Trong trường hợp bạn có bất kỳ câu hỏi nào, hãy đăng chúng lên diễn đàn của chúng tôi.

Xem thêm