Hướng dẫn này sẽ hướng dẫn cách tự động hóa tài liệu Word bằng cách sử dụng python-docx và gửi email bằng thư viện win32com. Hãy tưởng tượng rằng chúng ta có một danh sách thông tin khách hàng được lưu trữ bên trong tệp Excel (hoặc cơ sở dữ liệu). Quá trình trông giống như sau
- Tự động tạo hóa đơn trong MS Word cho từng khách hàng
- Chuyển đổi tài liệu Word sang định dạng PDF
- Gửi (sử dụng Ứng dụng MS Outlook) hóa đơn PDF cho khách hàng bằng tin nhắn chúc mừng tùy chỉnh
Thư viện cần thiết
Chúng tôi sẽ cần ba thư viện cho dự án này. Chúng tôi sử dụng pandas để đọc dữ liệu từ tệp Excel, nhưng thư viện pandas không phải là thứ bắt buộc phải có nếu dữ liệu của bạn ở nơi khác hoặc nếu bạn muốn trích xuất dữ liệu khách hàng theo cách khác
python-docx để tự động hóa. docx (e. g. Tệp MS Word, tài liệu Google, v.v.)
pip install python-docx import docx2 để tương tác với Windows API
pip install pandas python-docx pywin32Tự động hóa tài liệu Word bằng python-docx
Thư viện bạn sẽ nghe là pip install python-docx import docx3;
Vì vậy, lưu ý sự khác biệt sau
pip install python-docx import docxKể từ khi thư viện pip install python-docx import docx3 tạo ra. docx, bạn không cần phải sử dụng MS Word. Cả Google Docs và LibreOffice đều là những lựa chọn thay thế miễn phí hỗ trợ. docx và chúng tốt như bộ MS Office
Để tạo ra một. docx, trước tiên chúng ta cần tạo một đối tượng pip install python-docx import docx6. Sau đó, bên trong đối tượng pip install python-docx import docx7, chúng ta có thể thêm các thành phần khác nhau như tiêu đề, đoạn văn, hình ảnh, v.v. Trong đoạn mã dưới đây, đối tượng pip install python-docx import docx8 được sử dụng để xác định kích thước của một phần tử, e. g. một bức tranh
________số 8_______Đối tượng pip install python-docx import docx9
Đối tượng pip install python-docx import docx9 đại diện cho bất kỳ văn bản nào – nó có thể là một chữ cái, một từ, một câu hoặc một đoạn văn đầy đủ. Trực quan, mỗi ô màu đỏ trong hình bên dưới đại diện cho một pip install python-docx import docx9 riêng biệt. Chúng ta sử dụng from docx import Document from docx.shared import Inches document = Document() document.add_picture('brand_logo.png', width = Inches(1)) document.add_heading('Invoice', 0)2 để bắt đầu một câu/đoạn văn mới “This is a”. Sau đó, chúng ta có thể tiếp tục thêm from docx import Document from docx.shared import Inches document = Document() document.add_picture('brand_logo.png', width = Inches(1)) document.add_heading('Invoice', 0)3 mới vào đối tượng from docx import Document from docx.shared import Inches document = Document() document.add_picture('brand_logo.png', width = Inches(1)) document.add_heading('Invoice', 0)4 hiện có
Khi chúng tôi thêm một pip install python-docx import docx9, chúng tôi cũng có thể sửa đổi các thuộc tính của nó như phông chữ, kích thước, màu sắc, v.v.
Đoạn mã sau sẽ tạo câu trên với các kiểu được hiển thị
from docx import Document from docx.shared import Pt, RGBColor document = Document() p1 = document.add_paragraph('This is a ') p1.add_run('MS WORD ').bold = True p1.add_run('document ') eg = p1.add_run('example') eg.font.size = Pt(20) eg.font.color.rgb = RGBColor(0,128,0)Tạo hóa đơn
Dữ liệu mẫu của chúng tôi bên trong Excel trông giống như sau
Tất nhiên, chúng tôi không muốn gửi đến địa chỉ email thực của những người này, vì vậy tôi đang sử dụng địa chỉ email thử nghiệm của riêng mình
Về cơ bản, đây là dữ liệu bán hàng của công ty chúng tôi, chẳng hạn, bản ghi đầu tiên có nghĩa là. Chúng tôi đã bán 10 đơn vị tên lửa Falcon 9 cho Elon Musk với đơn giá 1 triệu USD. Hãy tạo hóa đơn cho từng khách hàng 🙂
Vì đây là một phần của quy trình được sắp xếp hợp lý, nên chúng tôi sẽ viết một hàm chỉ thực hiện một việc tại một thời điểm. Bước đầu tiên là tạo hóa đơn trong. định dạng docx. Hàm này sẽ nhận các đối số sau. tên khách hàng, email, sản phẩm được bán cho họ, số lượng đơn vị và đơn giá
Trong đoạn mã dưới đây
- dòng 6 chèn tên khách hàng
- dòng 10 chèn số đơn vị
- dòng 12 chèn tên sản phẩm
- dòng 15 sử dụng cách hiểu danh sách để thêm hai dòng trống
- dòng 17 – 30 tạo bảng tổng hợp hóa đơn
- dòng 38 lưu tài liệu với tên khách hàng
Hãy kiểm tra chức năng, có vẻ tốt
make_client_invoice('Elon Musk', 'amznbotnotification@gmail.com','Falcon 9',10, 1000000)Chuyển đổi tài liệu MS Word sang định dạng PDF
Bây giờ chúng tôi có hóa đơn trong Word, hãy chuyển đổi nó thành PDF vì đó là định dạng chuẩn cho các tài liệu kinh doanh
Chúng tôi sẽ sử dụng thư viện pip install python-docx import docx2/win32com, thư viện này cũng có cách đặt tên lạ giữa tên cài đặt và tên thư viện. Lưu ý sự khác biệt dưới đây
pip install pywin32 import win32com.clientwin32com là một thư viện tuyệt vời cho phép chúng ta kiểm soát rất nhiều thứ trong hệ điều hành Windows. Ví dụ, nó có thể kiểm soát Bộ ứng dụng Office
Để chuyển đổi Word (. docx) sang định dạng PDF, về cơ bản, chúng tôi mở tài liệu bằng cách sử dụng win32com, sau đó Lưu dưới dạng định dạng PDF. Dễ như ăn bánh
Mã bên dưới lấy đường dẫn tệp đầu vào from docx import Document from docx.shared import Pt, RGBColor document = Document() p1 = document.add_paragraph('This is a ') p1.add_run('MS WORD ').bold = True p1.add_run('document ') eg = p1.add_run('example') eg.font.size = Pt(20) eg.font.color.rgb = RGBColor(0,128,0)0, sau đó chuyển đổi và lưu pdf thành đường dẫn tệp from docx import Document from docx.shared import Pt, RGBColor document = Document() p1 = document.add_paragraph('This is a ') p1.add_run('MS WORD ').bold = True p1.add_run('document ') eg = p1.add_run('example') eg.font.size = Pt(20) eg.font.color.rgb = RGBColor(0,128,0)1
from docx import Document from docx.shared import Pt, RGBColor document = Document() p1 = document.add_paragraph('This is a ') p1.add_run('MS WORD ').bold = True p1.add_run('document ') eg = p1.add_run('example') eg.font.size = Pt(20) eg.font.color.rgb = RGBColor(0,128,0)2 sẽ tạo một thể hiện/đối tượng MS Word bên trong Python. Thay thế Word bằng Excel, sau đó bạn sẽ có một phiên bản Excel
from docx import Document from docx.shared import Pt, RGBColor document = Document() p1 = document.add_paragraph('This is a ') p1.add_run('MS WORD ').bold = True p1.add_run('document ') eg = p1.add_run('example') eg.font.size = Pt(20) eg.font.color.rgb = RGBColor(0,128,0)3 có thể là một quy ước được sử dụng bởi VBA, hãy kiểm tra danh sách này trên các tùy chọn loại tệp khác mà chúng tôi có thể lưu vào
Tự động gửi email bằng ứng dụng Outlook
Tiếp theo, chúng tôi sẽ gửi hóa đơn cho khách hàng của chúng tôi. win32com một lần nữa là người trợ giúp của chúng tôi để tương tác với Ứng dụng Outlook. Lưu ý – không phải Outlook dựa trên web mà là ứng dụng thực được cài đặt trên máy tính của chúng tôi. Bước này yêu cầu bạn đã cài đặt Office (đặc biệt là Outlook) trên máy tính của mình và đăng nhập vào tài khoản Outlook. Tên người dùng và mật khẩu không bắt buộc miễn là Ứng dụng Outlook của bạn vẫn đăng nhập
Trong đoạn code trên, dòng 3 CreateItem(0) có nghĩa là tạo một đối tượng Mail. Xem bảng bên dưới về các đối tượng khả thi khác mà chúng tôi có thể tạo bên trong Outlook
Để thêm tệp đính kèm, chỉ cần chuyển vào vị trí tệp tương tự như dòng 8
Có vẻ như chúng tôi thậm chí không cần mở Ứng dụng Outlook để gửi email bằng Python. Miễn là trước đó chúng tôi đã đăng nhập vào Ứng dụng Outlook của mình, bạn có thể sử dụng. Phần tốt nhất - không yêu cầu thông tin đăng nhập hoặc mật khẩu, win32com sẽ chỉ tương tác với Outlook bằng các cài đặt hiện có của bạn
Đặt nó lại với nhau
Bây giờ tôi cung cấp ba chức năng cho ba bước của hệ thống hóa đơn. Đến lượt bạn để thử đặt nó lại với nhau. Bạn có thể sử dụng vòng lặp để gửi từng hóa đơn hoặc xây dựng chúng với các quy trình khác. Vui thích