python-3.x - 使用 docxtpl 生成多列表
问题描述
我有一系列数据(在二维列表“CombinedTable”中)我需要用来在 MS Word 模板中填充表格。该表有 7 列,所以我尝试使用 docxtpl 模块进行以下操作:
context = {
'tpl_modules1': CombinedTable[0]
'tpl_modules2': CombinedTable[2]
'tpl_modules3': CombinedTable[4]
'tpl_modules4': CombinedTable[6]
'tpl_modules5': CombinedTable[8]
'tpl_modules6': CombinedTable[10]
'tpl_modules7': CombinedTable[12]
}
tpl.render(context)
tpl.save(FilePath + FileName)
这不是我所知道的最优雅的解决方案,但我只是想让它工作 - 不幸的是,将此代码与以下模板一起使用会导致 tpl_modules7 数据被写入所有列,而不仅仅是第 7 列。
有人对如何解决这个问题有建议吗?我试图通过列和行创建一个 for 循环,但没有成功将任何内容写入文档(保存为空白和空文档)。
CombinedTable 变量是一个包含 12 个列表的列表(模板中的每一列都有一个,尽管只有 7 个包含数据)。这 12 个列表中的每一个都包含另一个列表,其中包含单元格数据,其长度等于要写入该列中表的行数。这意味着每列写入的行数不同。
编辑:更仔细地查看docs,它指出我不能%tr
在同一行中多次使用。我假设我将不得不使用循环%tc
和%tr
(我尝试过并且无法正常工作)。关于如何实现这一点的任何建议?特别是在word文档的一边。谢谢!
解决方案
我能够根据我的要求令人满意地解决这个问题,但是我的解决方案可能并不适合所有人。我只是在一个包含 7 列的文档中设置了 7 个不同的表格,并调整了边距/边框以适应表格所需的尺寸。7 个表中的每一个都具有与我的问题中的图像相同的 docxtpl 语法,它们之间的小缓冲区列被 word 文档中的列替换。
推荐阅读
- php - 如何从styles.php中的数据库中获取一个值
- javascript - Problem when I want to filter on 3 conditions
- spring-data-jdbc - 如何在 Spring Data JDBC 中使用数组
- javascript - 如何在javascript中将数字转换为数组范围
- symfony - 使用完整的 composer.json 迁移 symfony 4 项目
- android - 智能手机唯一标识符作为密码/登录凭据?
- mysql - 插入引用另一个表的值
- office365 - 通过 Graph API 更新递归会议的结束日期不起作用
- c# - 如何判断哪个 WPF 控件调用了命令?
- android - 断点在 Android Studio 3.3 上不起作用