Python自動化:根據(jù)模板批量生成含指定數(shù)據(jù)的word文檔

作者:一只河馬h ?| 想學(xué)好Python
來源:簡說Python
一、需求說明
?


效果如下

二、開始動手動腦
第一步:導(dǎo)入相關(guān)模塊:
from?docxtpl?import?DocxTemplate
import?pandas?as?pd
import?os
第二步:用Python新建文件夾用來存放入學(xué)通知書,如果文件夾已存在代碼會跳過這一步:
zpath?=?os.getcwd()?+?'\\'??#獲取當(dāng)前的路徑
zpath?=?r'E:\python\tj'?+?'\\'
file_path?=?zpath?+?r'\通知書合集'
try:
????os.mkdir(file_path)??#創(chuàng)建一級目錄
except:
????pass
第三步:讀取csv文件中的數(shù)據(jù):
把表格里的每一列數(shù)據(jù)分別賦值給一個(gè)series類型變量,可以把series看成數(shù)組一樣的類型。
data?=?pd.read_csv(zpath+'AdmissionList.csv',?encoding='gbk')??#讀取csv里的目標(biāo)數(shù)據(jù)
name?=?data["姓名"].str.rstrip()??#?str.rstrip()用于去掉空白
academy?=?data["學(xué)院"].str.rstrip()
major?=?data["專業(yè)"].str.rstrip()
begin_date?=?data["開始時(shí)間"].str.rstrip()
end_date?=?data["結(jié)束時(shí)間"].str.rstrip()
第四步:將數(shù)據(jù)寫入模板:
遍歷表格的每一行,將數(shù)據(jù)存入字典列表,
num?=?data.shape[0]???#?獲取數(shù)據(jù)行數(shù)
for?i?in?range(num):
????context?=?{
???????"姓名":?name[i],
???????"學(xué)院":?academy[i],
???????"專業(yè)":?major[i],
???????"開始時(shí)間":?begin_date[i],
???????"結(jié)束時(shí)間":?end_date[i]
}
選定模板,
tpl?=?DocxTemplate(zpath+'入學(xué)通知書.docx')
渲染替換,將context里的內(nèi)容寫入word模板中,
tpl.render(context)#渲染替換
保存文件,名字為:**的入學(xué)通知書。
tpl.save(file_path+r"\{}的入學(xué)通知書.docx".format(姓名[i]))
?
1)文件名亂碼:可以嘗試把解碼方式換成gbk;
2)權(quán)限問題:可能是需要讀入的數(shù)據(jù)文件正在被使用,關(guān)閉就行了;
3)生成的word文件行數(shù)混亂:可以把str.rstrip()寫成str.rstrip(‘\n’);
4)只能生成同一份word文檔:每渲染一次,就要重新選定模板。
干貨文章,求點(diǎn)贊轉(zhuǎn)發(fā)支持。
--END--
掃碼即可加我微信
老表朋友圈經(jīng)常有贈書/紅包福利活
如何找到我:
近期優(yōu)質(zhì)文章:
原創(chuàng)回答|用 Python 進(jìn)行數(shù)據(jù)分析,學(xué)習(xí)書籍或資料推薦?
學(xué)習(xí)更多: 整理了我開始分享學(xué)習(xí)筆記到現(xiàn)在超過250篇優(yōu)質(zhì)文章,涵蓋數(shù)據(jù)分析、爬蟲、機(jī)器學(xué)習(xí)等方面,別再說不知道該從哪開始,實(shí)戰(zhàn)哪里找了 “點(diǎn)贊”就是對博主最大的支持?
評論
圖片
表情

