python 填充Word文档模板 循环填充表格、图片 docxtpl、 jinja2

该代码示例展示了如何使用python-docx-template库和jinja2模板引擎来读取input.txt文件中的数据,动态填充Word模板(tpl.docx)中的表格和图片。每个样本的信息包括评分、面积以及两张不同放大倍数的图片,并保存到新的Word文档(new_test.docx)中。
摘要由CSDN通过智能技术生成

python 填充Word文档 循环填充表格、图片

code

from docxtpl import DocxTemplate, InlineImage
from docx.shared import Inches, Cm, Mm
import jinja2


word_template = 'tpl.docx'
out_word_file = 'new_test.docx'
input_file = "input.txt"
image_dir = '/mnt/f/'
desc_string = f"""
desc_string 
"""


tpl = DocxTemplate(word_template)

with open(input_file) as f_in:
    data_list = [i.split('\t') for i in f_in.read().strip('\n').split('\n')]

frameworks = []
for line_list in data_list[1:]:
    sample, sample_area, target_area, score = line_list
    image_path_1 = f"{image_dir}/{sample}_5.0x.jpg"
    image_path_2 = f"{image_dir}/{sample}_20.0x.jpg"
    sample_image_dict = {
        'sample': sample,
        'sample_area' : sample_area,
        'target_area' : target_area,
        'score' : score,
        'image_1': InlineImage(tpl, image_path_1, width=Mm(76), height=Mm(40)),
        'image_2': InlineImage(tpl, image_path_2, width=Mm(76), height=Mm(40)),
    }
    frameworks.append(sample_image_dict)

context = {
    'frameworks': frameworks
}

jinja_env = jinja2.Environment(autoescape=True)
tpl.render(context, jinja_env)
tpl.save(out_word_file)
print(out_word_file)

word模板

会循环填充表格
在这里插入图片描述

复制出代码

{%tr for items in frameworks %}
{{ items.image_1 }} {{ items.image_2 }}
{{ items.sample }}
样本评分:{{ items.score }} 样本面积:{{ items.sample_area }} 目标面积:{{ items.target_area }}
{%tr endfor %}

input.txt 内容

名称 样本面积 目标面积 样本评分
A 10 5 0.5

参考

链接: https://github.com/elapouya/python-docx-template
https://zhuanlan.zhihu.com/p/146363527

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值