说明
在处理报表格式的过程中,我们会碰到多维表的处理,比较麻烦,因此记录下来,作为参考。
案例
首先展示一下多维表:
二维表
三维表
解决方案
二维表处理
对于二维表,处理较为简单
doc模板语法如下:
其中 {% vm %} 是列合并填充语法
三维表处理
第二种填充语法如下:
但是区域列和区县列都将会按照item数量来进行合并,因此需要使用代码对table表进行操作。
效果如下:
要合成以下效果需要进一步处理:
具体需要参考python-docx库文档
https://python-docx.readthedocs.io/en/latest/api/table.html#row-objects
# 示例如下
# self.doc是template对象
for table in self.doc.docx.tables:
# 判断表是否为我们需要的表
if table.columns[2].cells[0].text == '自然保护地类别':
# 取出需要合并的列
column = table.columns[0]
# 取出需要填充的文字
txt = column.cells[start_num].text
# 起始单元格序号 结束的单元格序号
column.cells[2].merge(column.cells[10])
# 赋值
column.cells[start_num].text = txt