如何用Python结合Pandas与Docxtpl将CSV图片插入Docx替换{{image}}标签
解决docxtpl替换Word模板图片的问题
docxtpl替换图片不能直接传路径文本,需要使用InlineImage类生成图片对象,具体操作如下:
- 从
docxtpl导入InlineImage类 - 基于CSV中存储的图片路径创建
InlineImage实例(必须传入DocxTemplate对象作为第一个参数) - 将实例绑定到context的对应键,模板中用
{{image}}调用
修改后的代码示例:
from docxtpl import DocxTemplate, InlineImage # 新增导入InlineImage import pandas as pd doc = DocxTemplate("plantilla-mi-info.docx") df = pd.read_csv('fake_data.csv') for index, row in df.iterrows(): # 假设csv的image列存储的是图片本地路径 img_path = row['image'] # 创建InlineImage对象 img = InlineImage(doc, img_path) context = { 'a': row['a'], 'b': row['b'], 'image': img # 对应模板中的{{image}} } doc.render(context) doc.save(f"descargo_{index}.docx") # 每次循环后重新加载模板,避免重复渲染导致的异常 doc = DocxTemplate("plantilla-mi-info.docx")
Python基础学习建议
- 先掌握核心语法:变量、数据类型、条件判断、循环、函数、类与对象等基础内容
- 熟悉常用数据结构:列表、字典、集合,以及pandas的DataFrame操作(这是你当前代码的核心数据载体)
- 学会阅读第三方库官方文档:比如docxtpl的官方文档里有专门的图片替换示例,遇到问题优先查阅官方说明
- 多做实战练习:从简单的文件读写、数据处理开始,逐步过渡到模板生成这类场景
内容的提问来源于stack exchange,提问作者Guillermo Robledo
相关产品推荐
相关产品推荐

