Bài viết này được chia thành 2 phần, phần đầu tiên đề cập đến việc tạo hình ảnh/PDF từ excel và phần tiếp theo đính kèm phần tương tự trong email triển vọng và gửi nó đi. Nó cũng có một phần thưởng bổ sung về macro và xử lý các hộp thư khác nhauTrong các hoạt động hàng ngày của chúng tôi, chúng tôi thường bắt gặp các nhiệm vụ liên quan đến việc gửi một lượng lớn thư từ, dự án này là kết quả của một yêu cầu như vậy. Show
Để bắt đầu, chúng tôi sẽ lưu ý các bước cần thiết cho quy trình tự động hóa này và sau đó cố gắng tự động hóa từng bước đó. Các bước cần thiết cho quá trình tự động hóa này như sau 1. Generate image/pdf from an excel. Chà, điều này có vẻ đủ đơn giản, vì vậy hãy bắt đầu. Hiện tại, hãy cố gắng tập trung vào mã ở đây, tôi sẽ đính kèm ý chính GitHub ở cuối Bước 1 — tạo hình ảnh/PDFChúng tôi có một excel chứa dữ liệu của tất cả các trận chiến của GOT và một biểu đồ đơn giản hiển thị số trận chiến theo khu vực. Trong bước này, mục tiêu của chúng tôi là tạo một tệp PDF/hình ảnh của biểu đồ bên dưới từ excel. Bạn có thể tải xuống excel từ đây Biểu đồ mà chúng tôi sẽ sao chép dưới dạng hình ảnhTrước tiên, chúng tôi sẽ kết nối với ứng dụng Excel và tải trang tính của mình, Python có nhiều tùy chọn để tạo các loại tệp Microsoft Office phổ biến bao gồm Excel, Word và PowerPoint. Tuy nhiên, trong một số trường hợp, có thể quá khó để sử dụng phương pháp python thuần túy để giải quyết vấn đề. May mắn thay, python có gói “Tiện ích mở rộng Python cho Windows” được gọi là pywin32 cho phép chúng tôi dễ dàng truy cập Mô hình đối tượng thành phần (COM) của Window và kiểm soát các ứng dụng của Microsoft thông qua python xlApp = win32.DispatchEx('Excel.Application') Khi đã xong, chúng tôi sẽ cung cấp tham chiếu ô của phần của trang tính mà chúng tôi muốn chuyển đổi thành hình ảnh. Các khả năng hình ảnh được cung cấp bởi gói PIL. Đoạn mã dưới đây sao chép tham chiếu ô dưới dạng hình ảnh vào khay nhớ tạm và lưu nó. Bạn có thể điều chỉnh chất lượng hình ảnh bằng cách sử dụng thông số ‘chất lượng’ và lưu ý rằng chất lượng hình ảnh chỉ áp dụng cho các tệp có định dạng JPEG. Chất lượng hình ảnh mặc định được đặt ở mức 75 và khi bạn tăng hoặc giảm giá trị này thì kích thước của hình ảnh sẽ thay đổi. Bạn có thể tham khảo tài liệu chính thức của thư viện PIL để biết chi tiết win32c = win32.constants Cho đến nay chúng tôi đã lưu hình ảnh của chúng tôi. Bây giờ nếu bạn muốn chuyển hình ảnh sang pdf bạn có thể sử dụng thư viện img2pdf. Đoạn mã dưới đây đọc hình ảnh mà chúng tôi đã lưu ở trên và lưu nó dưới dạng PDF. Bạn có thể bỏ qua phần này nếu tất cả những gì bạn cần là một hình ảnh #storing pdf path Sau khi hoàn thành bước này, chúng tôi có một hình ảnh và PDF Đã tạo hình ảnh & PDF
xlApp = win32.DispatchEx('Excel.Application') Bước 2— Tạo emailChúng tôi sẽ sử dụng gói pywin32 giống như excel để kết nối với Outlook outlook = win32.Dispatch('outlook.application')
sendfromAC = None Đối tượng triển vọng của chúng tôi được tạo bây giờ, chúng tôi sẽ thêm To/CC/Subject và các tệp đính kèm. Đối với phần đính kèm, tôi sẽ chỉ ra 2 điều, đính kèm tệp PDF trong thư dưới dạng tệp và nhúng hình ảnh vào nội dung thư. Điều này sẽ bao gồm 2 trường hợp sử dụng mail.To = '[email protected]' Đính kèm PDF ________số 8Nhúng vào nội dung thư Để nhúng hình ảnh vào nội dung email, trước tiên chúng tôi cần đính kèm hình ảnh đó dưới dạng tệp đính kèm thông thường và sau đó nhúng hình ảnh đó như một phần của nội dung thư HTML. Phần bên dưới đề cập đến việc đính kèm hình ảnh và đặt thuộc tính để triển vọng có thể xử lý hình ảnh đúng cách. Chúng ta sẽ đến ngay với phần nhúng attachment1 = mail.Attachments.Add(file_location + 'Graph.jpeg') Tiếp theo chúng ta phải tạo nội dung email. Bạn có thể đặt nội dung email ở định dạng văn bản bình thường hoặc ở định dạng HTML. Cá nhân tôi thích định dạng nội dung HTML hơn vì nó cho tôi nhiều quyền kiểm soát về cách hiển thị email thay vì để Outlook làm trọng tài. Đoạn mã dưới đây khá rõ ràng, nó sẽ đặt phần thân thư và 'cid' cuối cùng. Phần đồ thị sẽ nhúng hình ảnh đính kèm vào nội dung thư xlApp = win32.DispatchEx('Excel.Application') 0Bước 3 — Gửi thưBây giờ chúng ta đã có đối tượng thư sẵn sàng, tất cả những gì còn lại thực sự là gửi thư đi. Điều này sẽ được thực hiện bằng cách sử dụng lệnh đơn giản xlApp = win32.DispatchEx('Excel.Application') 1và hoan hô Gửi mailToàn bộ ý chính GitHub được thêm vào bên dưới Vấn đề đã biếtvấn đề 1Rất hiếm khi xảy ra sự cố trong đó tập lệnh sẽ không thể kết nối với excel. Lỗi xảy ra giống như xlApp = win32.DispatchEx('Excel.Application') 2Giải pháp bắt nguồn từ URL StackOverflow này các bước là xlApp = win32.DispatchEx('Excel.Application') 3Vấn đề 2Sự cố này phổ biến hơn Sự cố 1, sau khi chạy được vài ngày, mã sẽ báo lỗi xlApp = win32.DispatchEx('Excel.Application') 4Giải pháp đã được đưa ra theo cách đánh và thử. các bước là xlApp = win32.DispatchEx('Excel.Application') 5Tôi thực sự không biết nguyên nhân gây ra những vấn đề này, Google rộng rãi đã không mang lại giá trị gì. Có vẻ như một số loại hỏng bộ đệm |