You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用docxtpl根据条件动态更改Word表格行背景色?

使用docxtpl动态设置Word表格行背景色

核心思路

docxtpl支持在{%tr%}标签中通过条件判断动态绑定行样式,我们可以在Python上下文里准备数据,同时在Word模板中根据行内值的条件(如包含'Error'/'Fail')指定行的背景色样式。


1. 修改Word模板代码

将你原有的模板代码修改为带条件样式的版本,在{%tr%}标签中添加条件判断,匹配到目标值时设置背景色:

{% for key, rows in img.tables.items() %}
    {% if key == "Summary" %}
        {%tr style="background-color:#ffcccc;" if row[1] in ['Error', 'Fail'] else "" for row in rows%}
            {{ row[0] }}
            {{ row[1] }}
        {%tr endfor %}
    {% endif %}
{% endfor %}

说明:#ffcccc是浅红色,可根据需求替换为其他十六进制颜色码,比如#ffffcc(浅黄色)等。


2. Python代码实现

以下是完整的Python代码示例,包含数据准备、模板渲染的全流程:

from docxtpl import DocxTemplate

# 初始化模板
doc = DocxTemplate("template.docx")  # 替换为你的模板文件路径

# 准备上下文数据(模拟你的img.tables结构)
context = {
    "img": {
        "tables": {
            "Summary": [
                ["测试项1", "Pass"],
                ["测试项2", "Error"],
                ["测试项3", "Fail"],
                ["测试项4", "Pass"]
            ],
            # 其他表格可在此扩展
        }
    }
}

# 渲染模板并保存
doc.render(context)
doc.save("result.docx")

关键说明

  • 样式绑定逻辑:模板中的{%tr style=...%}会根据row[1]的值动态决定是否应用背景色,Python只需保证数据格式正确即可。
  • 颜色自定义:如需其他颜色,直接替换十六进制颜色码即可,比如#d9ead3(浅绿色)对应Pass状态,也可扩展多条件判断。
  • 复杂样式扩展:如果需要更复杂的样式(如字体颜色、加粗),可在style属性中追加CSS样式,示例:style="background-color:#ffcccc; color:#dc143c; font-weight:bold;"

内容的提问来源于stack exchange,提问作者vsm

火山引擎 最新活动