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