日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python:Docx文档模板创建使用

發布時間:2023/12/31 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 for d in gdp_data %} ... {%tr endfor %}

這里我們在語句前加了tr,代表這是表格行的循環,這將會提示Docxtpl在渲染結束后刪除有這些語句的行。
類似的語法還有以下常見的幾種:

{%p jinja2_tag %} # 段落 {%tr jinja2_tag %} # 表格行 {%tc jinja2_tag %} # 表格列

這里特別說明一下段落的使用,如果你想使用語句來生成段落的話,不要這樣寫:

{%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文档模板创建使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。