You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用python-docx-template生成表格仅新增行无内容问题求助

使用python-docx-template生成表格时数据未填充的问题排查与解决

我在使用python-docx-template自动化生成报告时遇到表格数据填充异常,遂从基础表格开始测试:

  • 模板表格:包含parametro、unidad、tecnica、metodo四个表头,预留了待动态填充的空行
  • 测试代码:
from docxtpl import DocxTemplate
tpl = DocxTemplate('TITULO.docx')

context = {
'tbl_contents': [
    {'parametro' : 'TEMPERATURA AMBIENTE', 'unidad' : '°C', 'tecnica' : 'TERMOMETRICO', 'metodo' : 'SM 2550 B'},
    {'parametro' : 'TEMPERATURA MUESTRA', 'unidad' : '°C', 'tecnica' : 'TERMOMETRICO', 'metodo' : 'SM 2550 B'},
    {'parametro' : 'pH', 'unidad' : 'UNIDADES', 'tecnica' : 'ELECTROMETRICO', 'metodo' : 'SM 4500H+ B'},
    ]
}

tpl.render(context)
tpl.save('output/dynamic_table.docx')

执行后脚本成功新增3行,但对应数据未填充,最终表格仅显示空的新增行。参考了动态填充表格的可正常运行示例,特此求助问题原因及解决方法。


可能原因及解决方法

1. 模板表格的标签格式不规范

python-docx-template对表格动态填充的标签有严格要求:

  • 变量标签必须用{{ 变量名 }}格式,且要和context中的键完全一致(注意大小写,比如parametro不能写成Parametro)
  • 循环控制标签{% for item in tbl_contents %}和{% endfor %}必须分别放在待循环行的第一个单元格和最后一个单元格内,不能跨单元格或混在其他文本中
  • 每个单元格的变量要对应context中字典的键,比如第一个单元格写{{ item.parametro }},第二个写{{ item.unidad }},以此类推

2. 模板未正确设置循环块

正确的模板表格行设置示例:

表头1表头2表头3表头4
{% for item in tbl_contents %}{{ item.parametro }}{{ item.unidad }}{{ item.tecnica }}{{ item.metodo }}{% endfor %}

3. 模板文件格式兼容问题

  • 确保模板是用Microsoft Word保存的标准.docx文件,避免用WPS等其他办公软件保存,防止格式损坏
  • 不要使用合并单元格的表格结构,python-docx-template对合并单元格的动态填充支持有限

验证步骤

  1. 打开模板文件TITULO.docx,检查待填充行的每个单元格是否按上述要求设置了标签
  2. 保存模板后重新运行测试代码,查看生成的dynamic_table.docx是否正常填充数据

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 05:13:16