好吧,我继续使用python-docx-template。
我正在为一些表格制作模板,特别是这一个:
我正在寻找的结果表是这样的(撇开日期/fecha):
最初的想法是表将从实验室结果接收数据,但立法可能会有所不同(结果可以通过决议或法令进行比较),我用字典做了一些列表来填充表,并将信息放入表中,但抛出了一个错误,我正在研究,一切似乎都以这种方式嵌套表循环,并在试图寻找'legis'列表时产生错误。
这是代码,它比任何东西都更列表:
from docxtpl import DocxTemplate
# Cargar plantilla
doc = DocxTemplate('template/prueba.docx')
# Parametros
puntos = ['EPO-ARD-DO1: ENTRADA PLANTA DE TRATAMIENTO ARD', 'EPO-ARD-DO2: SALIDA PLANTA DE TRATAMIENTO ARD']
codSample = ['MCS 17466', 'MCS 17465']
... Many lists ...
# Sample list
norma2 = 'law name'
legis3 = [
{'art 2.2.3.3.9.14' : 'N.E.', 'art 2.2.3.3.9.16' : 'N.E.', 'art 2.2.3.3.9.17' : 'N.E.', 'art 2.2.3.3.9.18' : 'N.E.'},
{'art 2.2.3.3.9.14' : 'N.E.', 'art 2.2.3.3.9.16' : 'N.E.', 'art 2.2.3.3.9.17' : 'N.E.', 'art 2.2.3.3.9.18' : 'N.E.'},
{'art 2.2.3.3.9.14' : 'N.E.', 'art 2.2.3.3.9.16' : 'N.E.', 'art 2.2.3.3.9.17' : 'N.E.', 'art 2.2.3.3.9.18' : 'N.E.'},
... more things ...
]
# extract articles of law
art_limi = legis3[0].keys()
# Context
context = {
'puntos' : puntos,
'cdSam' : codSample,
'lab_results' : resultados,
'norma' : norma2,
'articulos' : art_limi,
'legis' : legis3
}
doc.render(context)
# Guardar documento
doc.save('output/salidaPrueba2.docx')
这就是我得到的错误:
File "c:\xampp\htdocs\pythonDocx\prueba.py", line 132, in <module>
doc.render(context)
File "C:\Python\Python311\Lib\site-packages\docxtpl\template.py", line 368, in render
xml_src = self.build_xml(context, jinja_env)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Python\Python311\Lib\site-packages\docxtpl\template.py", line 315, in build_xml
xml = self.render_xml_part(xml, self.docx._part, context, jinja_env)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Python\Python311\Lib\site-packages\docxtpl\template.py", line 245, in render_xml_part
raise exc
File "C:\Python\Python311\Lib\site-packages\docxtpl\template.py", line 239, in render_xml_part
dst_xml = template.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Python\Python311\Lib\site-packages\jinja2\environment.py", line 1301, in render
self.environment.handle_exception()
File "C:\Python\Python311\Lib\site-packages\jinja2\environment.py", line 936, in handle_exception
raise rewrite_traceback_stack(source=source)
File "<template>", line 11, in top-level template code
File "C:\Python\Python311\Lib\site-packages\jinja2\environment.py", line 485, in getattr
return getattr(obj, attribute)
^^^^^^^^^^^^^^^^^^^^^^^
jinja2.exceptions.UndefinedError: 'dict object' has no attribute 'cols'
我在考虑将一些数据作为允许的限制传递给结果列表,但我不知道如何很好地适应标题。
我现在有点被卡住了,如果有人能帮我把table往前挪一挪,我会很感激的。
先谢了。
好吧,当我试图分离的表,我得到正确的渲染,我分离的表,看看如果只有一个表有问题或发生了什么,在这个例子中,我会改变比较的法律,并在替换获得良好的结果.
对于单独的表来说是很好的工作,但关键是这种替换从查询开始就对表起作用。
1条答案
按热度按时间2izufjch1#
看最后一行,很明显:
这是错误的原因。
1.看看Word code:是lab_results元素的属性。
1.**但是我看不到任何名为resultados的变量的定义。**看起来你丢失了你的主变量!它发生.
那么,你能自己去查一下这个错误吗?当然!好的做法是用flake 8工具检查代码。
我检查了你的代码,flake 8证实了我的建议: