Chào mọi người,
Dạo gần đây mình có tìm hiểu về việc tự động hóa các tác vụ lặp đi lặp lại trong Excel, đặc biệt là việc gửi báo cáo qua email. Mình thấy nhiều anh em trên diễn đàn cũng quan tâm đến chủ đề này, đặc biệt là với Python. Hôm nay mình xin chia sẻ một cách khá hay để tự động gửi báo cáo Excel hàng ngày bằng Python và Outlook.
Công việc này rất hữu ích khi bạn cần gửi báo cáo định kỳ cho sếp hoặc đồng nghiệp mà không muốn tốn thời gian thao tác thủ công mỗi ngày.
Các bước thực hiện
- Chuẩn bị file Excel báo cáo: Đảm bảo file Excel của bạn đã được chuẩn bị sẵn sàng, chứa dữ liệu và định dạng theo yêu cầu.
- Cài đặt thư viện Python: Chúng ta sẽ cần thư viện
pywin32để tương tác với Outlook. Nếu chưa có, bạn có thể cài đặt bằng pip:pip install pywin32 - Viết script Python: Dưới đây là một đoạn code mẫu để gửi email. Bạn cần thay đổi các thông tin như địa chỉ email người nhận, tiêu đề, nội dung và đường dẫn file đính kèm cho phù hợp.
import win32com.client as win32
import os
def send_excel_report(recipient_email, subject, body, attachment_path):
outlook = win32.Dispatch('outlook.application')
mail = outlook.CreateItem(0)
mail.To = recipient_email
mail.Subject = subject
mail.Body = body
if os.path.exists(attachment_path):
mail.Attachments.Add(attachment_path)
else:
print(f"File đính kèm không tồn tại: {attachment_path}")
mail.Send()
print("Email đã được gửi thành công!")
# Thông tin chi tiết
recipient = "nguoinhan@example.com"
email_subject = "Báo cáo hàng ngày - "
email_body = "Kính gửi Anh/Chị,
Dưới đây là báo cáo hàng ngày.
Trân trọng,"
excel_file = "C:\\Path\\To\\Your\\Report.xlsx" # Thay đổi đường dẫn file của bạn
send_excel_report(recipient, email_subject, email_body, excel_file)
Lưu ý
- Script này yêu cầu Outlook phải được cài đặt trên máy tính của bạn và đang hoạt động.
- Hãy chắc chắn rằng đường dẫn đến file Excel là chính xác.
- Bạn có thể tùy chỉnh thêm nội dung email, thêm nhiều người nhận, hoặc thậm chí là định dạng HTML cho email nếu muốn.
Hy vọng chia sẻ này hữu ích cho mọi người. Nếu có bất kỳ câu hỏi nào, đừng ngần ngại đặt câu hỏi nhé!