作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我阅读了有关 python-docx-template
的文档,但我对表格部分感到非常困惑。假设我有一个名为 Template.docx
的 docx 模板。在 docx 文件中,我有一个表格,其中只有标题的标题。
如何使用 python-docx-template
动态填充表格(添加行和值)?
最佳答案
一般来说,您可以使用 python-docx-template
释放 jinja2
的强大功能。
填充单个变量
假设您制作一个带有表格的 template.docx
文件:
**table 1** **table 2**
{{some_content1}} {{some_content2}}
然后你可以使用它来填充它
from docxtpl import DocxTemplate
import jinja2
doc = DocxTemplate("template.docx")
context = { 'some_content1' : "test", "some_content_2": "other"} # Where the magic happens
doc.render(context)
doc.save("generated_doc.docx")
如果您有 pd.DataFrame
形式的数据,那么您还可以生成 context
字典。例如:
import itertools
context = {}
for row, col in itertools.product(df.index, df.columns):
context[f'{row}_{col}'] = df.loc[row, col]
动态表格
您还可以动态生成表格,我想您可能不想这样做(如果您正在谈论在 docx 中指定“表头”)。不过,这还是值得研究一下的。使用这个template使用 git 测试中的这个示例:
from docxtpl import DocxTemplate
tpl = DocxTemplate('templates/dynamic_table_tpl.docx')
context = {
'col_labels' : ['fruit', 'vegetable', 'stone', 'thing'],
'tbl_contents': [
{'label': 'yellow', 'cols': ['banana', 'capsicum', 'pyrite', 'taxi']},
{'label': 'red', 'cols': ['apple', 'tomato', 'cinnabar', 'doubledecker']},
{'label': 'green', 'cols': ['guava', 'cucumber', 'aventurine', 'card']},
]
}
tpl.render(context)
tpl.save('output/dynamic_table.docx')
关于Python 使用 DocxTemplate 填充 docx 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54928806/
我在尝试使用 DocxTemplate 逐行填写表格时遇到问题。我只是对模板的外观感到困惑。 这是我的 python 代码: from docxtpl import Docxtemplate doc
我阅读了有关 python-docx-template 的文档,但我对表格部分感到非常困惑。假设我有一个名为 Template.docx 的 docx 模板。在 docx 文件中,我有一个表格,其中只
我是一名优秀的程序员,十分优秀!