引言
在工作中,有時需要批量制作很多個內(nèi)容相似的word文檔赋咽,一般通過word郵件合并功能可以實現(xiàn)旧噪。今天簡單介紹一下,如何通過python讀取Excel中的數(shù)據(jù)脓匿,批量修改生成word文檔淘钟。
批量制作詢價函
假如你是一名負(fù)責(zé)采購的員工,你們公司需要采購一批物資亦镶,你需要向幾家供貨商詢價日月。詢價函的大概內(nèi)容如圖1-詢價函,你需要修改“收件人公司名稱”缤骨,“聯(lián)系人名稱”爱咬。
供貨商聯(lián)系人名單是xlsx文件,如圖2-聯(lián)系方式
代碼如下:
# -- coding: utf-8 --
from envelopes import Envelope
import xlwings as xw
from docx import Document
import os
# 定義word內(nèi)容修改函數(shù)
def make_file(data):
# 打開D盤征詢函模版
document=Document(r'd:\征詢函模版.docx ')
# 征詢函需要修改的地方绊起,全部以表格形式存在精拟,只需要修改表格中的內(nèi)容
tables=document.tables
tables[0].cell(0,2).text=data[0]
tables[0].cell(1,2).text=data[1]+'經(jīng)理'
tables[1].cell(0,0).text=data[0]+':'
file_path=os.path.join('D:','征詢函-%s.docx'%data[0])
document.save(file_path)
# 打開聯(lián)系方式.xlsx,并讀取A2以下表格部分的內(nèi)容虱歪,即聯(lián)系人信息
app=xw.App(visible=True,add_book=False)
wb=app.books.open(r'd:\聯(lián)系方式.xlsx ')
rng=wb.sheets[0].range('A2').expand()
lists=rng.value
wb.close()
# 將讀取的聯(lián)系人蜂绎,傳遞給make_file函數(shù),批量修改生成詢價函
for data in lists:
make_file(data)
結(jié)果如下:
將附件通過郵件發(fā)送
# 定義發(fā)送郵件的函數(shù)
def send_mail(data):
from_addr='xxx@qq.com'
to_addr=data[2]
# 以QQ郵箱為例笋鄙,密碼需要為smtp服務(wù)授權(quán)碼
passwords='xxxxx'
sever='smtp.qq.com'
# 主題(subject)與內(nèi)容(content)
subject='XXXX'
text_body='%s經(jīng)理:\n\n您好师枣!我們川菜館子近期需要向貴公司采購一批香腸和老臘肉,報價相關(guān)資料見附件萧落。\n\n祝您工作順利践美!'%data[1]
# carbon copy 抄送老板郵箱
cc_addr='xxxx@qq.com'
msg=Envelope(to_addr=to_addr,cc_addr=cc_addr,from_addr=from_addr,subject=subject,text_body=text_body)
# 附件(attachment)
file_path=os.path.join('D:','征詢函-%s.docx'%data[0])
msg.add_attachment(file_path)
msg.send(sever,login=from_addr,password=passwords,tls=True)
將這段代碼整合到上一段制作詢價函的代碼中去洗贰,自動化批量制作詢價函并郵件發(fā)送的功能就實現(xiàn)了。
結(jié)果如下:
由以上面的圖上可知陨倡,三封抄送老板并發(fā)送給供貨商的郵件已經(jīng)發(fā)送成功了敛滋,但是,附件的名字不是詢價函-XXX.docx兴革,這是因為我們的文件名是中文绎晃,需要進(jìn)行特殊的編碼處理,實際上將附件下載下來杂曲,后綴改為xxx.docx庶艾,一樣可以打開文件。因為在前面對征詢函進(jìn)行命名的時候解阅,用英文進(jìn)行命名就好了落竹。
結(jié)論
本文主要簡單介紹了,如何利用python讀取Excel文件中的數(shù)據(jù)货抄,并批量修改生成word文檔述召。最后,利用envelopes模塊蟹地,編寫Email郵件积暖,并將word文檔作為附件發(fā)送。
【參考資料】
python郵件處理模塊envelopes
python-docx官方文檔
tcmime.xxxx.xxxx.xxxx.bin這個文件是什么怪与?
MIME type