Python:Docx文档模板创建使用
?博文作者 wangzirui32
💖 喜歡的可以 點(diǎn)贊 收藏 關(guān)注哦~~
👉本文首發(fā)于CSDN,未經(jīng)許可禁止轉(zhuǎn)載
😎Hello,大家好,我是wangzirui32,今天我們來(lái)學(xué)習(xí)Docx文檔模板創(chuàng)建與使用,開(kāi)始學(xué)習(xí)吧!
1. Docxtpl
Docxtpl是用于快速處理Word模板填充的Python第三方庫(kù),它的安裝命令如下:
pip install docxtpl安裝完畢后,即可開(kāi)始學(xué)習(xí)。
2. Word模板編寫(xiě)
新建一個(gè)Word文檔(*.docx),根據(jù)類(lèi)似Jinja2模板的語(yǔ)法,寫(xiě)出如下示例模板:
Tips: 這里根據(jù)筆者的全國(guó)GDP分析預(yù)測(cè)文章(傳送門(mén))制作了文檔模板。
這里簡(jiǎn)單敘述一下模板語(yǔ)法:
2.1 插值語(yǔ)法
插入一段文本或圖片或其它內(nèi)容的語(yǔ)法如下:
{{ 變量名 }}2.2 循環(huán),判斷語(yǔ)法
循環(huán)語(yǔ)法如下:
{%tag for i in items %} {{ i }} # 每次循環(huán)渲染的內(nèi)容 {%tag endfor %}判斷語(yǔ)法如下:
{%tag if 變量/布爾值 %} {{ content }} {%tag endif %}這里的tag解釋如下:
此時(shí)這里的語(yǔ)法與Jinja2有些不同,我們需要在原有的語(yǔ)句中根據(jù)實(shí)際插入內(nèi)容進(jìn)行選擇,如剛才的示例模板里的表格循環(huán):
這里我們?cè)谡Z(yǔ)句前加了tr,代表這是表格行的循環(huán),這將會(huì)提示Docxtpl在渲染結(jié)束后刪除有這些語(yǔ)句的行。
類(lèi)似的語(yǔ)法還有以下常見(jiàn)的幾種:
這里特別說(shuō)明一下段落的使用,如果你想使用語(yǔ)句來(lái)生成段落的話,不要這樣寫(xiě):
{%p jinja2_tag %}content{%p end... %}而應(yīng)該這樣寫(xiě):
{%p jinja2_tag %} content {%p end... %}這是因?yàn)?#xff0c;Word文檔自動(dòng)把同一行的內(nèi)容視作一個(gè)段落,在渲染完畢后,Docxtpl會(huì)把含有這些輔助的語(yǔ)句所在段落刪除,從而導(dǎo)致把渲染的內(nèi)容也刪除了。同理,這種特性對(duì)其它情況也仍然存在。
3. 渲染模板
創(chuàng)建一個(gè)新Python文件(*.py),寫(xiě)入如下示例代碼:
import jinja2 from docxtpl import DocxTemplatefrom docxtpl import InlineImage from docx.shared import Mm # 年份 years = [2010, ... , 2021] # 數(shù)據(jù)來(lái)源:data.stats.gov.cn 國(guó)家統(tǒng)計(jì)局 (單位:億元) # 第一季度 gdp_Q1 = [87501.3, ... ,247985.0] # 第二季度 gdp_Q2 = [99347.4, ... ,281528.0] # 第三季度 gdp_Q3 = [105963.7, ... ,289919.3] # 第四季度 gdp_Q4 = [119306.8, ... , 324237.4] # 全年GDP總和 gdp_all_year = [412119.3, ... ,1143669.7] gdp_data = list(zip(years, gdp_Q1, gdp_Q2, gdp_Q3, gdp_Q4, gdp_all_year)) tpl = DocxTemplate('template.docx') context = {"gdp_data": gdp_data,"p1": InlineImage(tpl, 'p1.png', width=Mm(175),height=Mm(95)), "p2": InlineImage(tpl, 'p2.png', width=Mm(175),height=Mm(95)), "fit": "全年總值 = 第一季度總值 * 0.2041 + 第二季度總值 * 3.8656 + 9671.4240"} jinja_env = jinja2.Environment() # Jinja2環(huán)境 可以自定義渲染規(guī)則 默認(rèn)就行了 tpl.render(context, jinja_env) tpl.save("output.docx")這里我們需要先讀入模板(DocxTemplate對(duì)象),然后生成渲染字典(context),指定每個(gè)變量名指代的具體內(nèi)容,最后生成Jinja2的渲染環(huán)境,用render傳入并渲染模板,輸出到output.docx文件中。
提示:我們可以用InlineImage對(duì)象插入圖片,可以指定長(zhǎng)與寬,如上文代碼所示。
4. 最終效果
程序生成的最后效果如下:
可以看到,表格、圖片、文字均已正確插入。
🎉🎉🎉 好了,今天的課程就到這里,我是wangzirui32,喜歡的可以點(diǎn)個(gè)收藏和關(guān)注,我們下次再見(jiàn)!
總結(jié)
以上是生活随笔為你收集整理的Python:Docx文档模板创建使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 面具卡米怎么删模块_一加8/8Pro/7
- 下一篇: python抓取网页内容到excel_P