Mail Merge - Trộn Thư là tính năng rất hữu ích của Ms Word, tính năng này giúp chúng ta giảm thiểu thời gian trong các việc như: soạn hợp đồng, in phiếu lương, in giấy mời, thư cám ơn,... Hôm nay chúng ta tìm hiểu cách thực hiện Mail Merge trên python.
Có file Noidung.xlm có nội dung:
Hi: your_nameYour ID: your_idYour Password: your_passwordYour OTP: your_otp
và file Danhsach.csv có nội dung:
Yêu cầu:
Các trường: your_name, your_id, your_password, your_otp của file Noidung.xlm
sẽ thay đổi, mỗi dòng trong file Danhsach.csv sẽ được điền vào các trường
tương ứng ở file Noidung.xlm. Kết quả tương tự như hình bên dưới
Nhận xét:
Chúng ta thấy phần nội dung của file Noidung.xlm được lặp lại 6 lần (tùy thuộc
vào số lượng dòng trong file Danhsach.csv). Nên file Noidung.xlm sẽ
được mở trước sau đó mở file Danhsach.csv và sẽ
có sự đi lặp lại khi xử lý file này.
Thực hiện:
Code:
with open ("Noidung.xml","r") as rf:
noidung = rf.read()
with open ("danhsach.csv","r") as rf_ds:
for line_ds in rf_ds.readlines():
fiedls_ds = line_ds.split(",")
# đảm bảo khi thực hiện mỗi bước nhảy của vòng lặp nội dung file mới là đúng nội dung ban đầu của file Noidung.xml và
noidung_moi = noidung
'''
Thực hiện thay thế
Nếu thấy các trường:your_name, your_id, your_password, your_otp
thì thay thế bằng các trường tương ứng trong file danh sách
'''
noidung_moi = noidung_moi.replace("your_name",fiedls_ds[1])
noidung_moi = noidung_moi.replace("your_id",fiedls_ds[2])
noidung_moi = noidung_moi.replace("your_password",fiedls_ds[3])
noidung_moi = noidung_moi.replace("your_otp",fiedls_ds[4])
print(noidung_moi)
Kết quả:
C:\python>python Demo.pyHi: Nguyen Van TroiYour ID: id2020Your Password: 112233Your OTP: aabbccHi: Tran Van LuongYour ID: id2121Your Password: 445566Your OTP: ddeeffHi: Truong Viet HoangYour ID: id2222Your Password: 778899Your OTP: gghhkkHi: Cong VuongYour ID: id2323Your Password: 223344Your OTP: xxyyzzHi: Tien LinhYour ID: id2424Your Password: 334455Your OTP: aawwqqHi: Van QuyetYour ID: id2525Your Password: 556677Your OTP: ppkkllC:\python>
Với code trên chúng ta thấy từ dòng 15 đến dòng 18 chúng ta có thể thay bằng vòng lặp và các trường: your_name, your_id, your_password, your_otp có thể đưa vào biến list sẽ thích hợp hơn, và code sẽ gọn hơn.
Code:
# Định nghĩa biến key_word là một list gồm các key word sẽ được thay thế
key_word = ["No.", "your_name", "your_id","your_password", "your_otp"]
with open ("Noidung.xml","r") as rf:
noidung = rf.read()
with open ("danhsach.csv","r") as rf_ds:
rf_ds.readline() # Bỏ dòng đầu tiên, vì dòng đầu tiên là dòng tiêu đề
for line_ds in rf_ds.readlines():
fiedls_ds = line_ds.split(",")
# đảm bảo khi thực hiện mỗi bước nhảy của vòng lặp nội dung file mới là đúng nội dung ban đầu của file Noidung.xml và
noidung_moi = noidung
#tạo vòng lặp chạy từ 1 cho đến hết chiều dài của biến key_word
for i in range(1, len(key_word),1):
noidung_moi = noidung_moi.replace(key_word[i],fiedls_ds[i])
print(noidung_moi))
Xong!
No comments:
Post a Comment