python-pptx表 - 保持行高尽可能小

时间:2017-07-25 13:39:42

标签: python-pptx

我想创建一个尽可能短的表,即具有最小的行高,同时使规定的文本符合规定的大小。我正在使用此代码:

我初始化我的表:

init_table_width = prs.slide_width - Inches(0.2)
graphicframe = slide.shapes.add_table(rows = len(biosets) + 1, cols=5, left=Inches(0.1), top=Inches(.76), width=init_table_width, height=prs.slide_height - Inches(.76 + 3.2))
table = graphicframe.table

然后我填充表并设置像这样的单元格属性:

for i in range(len(biosets)):
    new_row = ['Bioset'+str(i+1)+': '+biosets[i], studies[i], correlation[i], common_genes[i], pvals[i]]
    rownum += 1
    for col_index, col_name in enumerate(new_row):
        cell = table.cell(rownum, col_index)
        cell.text = col_name
        cell.margin_left = cell.margin_right = cell.margin_top = cell.margin_bottom = 0;
        cell.text_frame.paragraphs[0].font.size = Pt(7.5)

当我打开ppt演示文稿时,桌子比我想要的高。我可以向上拖动表格的底部,并从自动创建的表格中减小表格的高度。如果我将边距设置为0,为什么还有可以减少的额外高度?创建的表的高度大于我为表初始化的高度;当我手动拖动&减小表高度,高度小于我为表初始化的高度。这意味着它可以将我的所有内容都放入我想要的大小的表中。文本确实包裹了几行,这可以解释为什么它从原始大小扩展。即便如此,如果我已将单元格边距设置为0,为什么还有一些额外的高度可以拖动和减少?是什么元素促成了这个,我怎么能摆脱它?我不想硬编码row.height,因为我不知道文本什么时候会换行到两行。

1 个答案:

答案 0 :(得分:2)

我想通过如果我将表初始化到一个不可能的小高度(参见下面的高度= 1),创建的表将尽可能紧凑行高。

graphicframe = slide.shapes.add_table(len(biosets) + 1, cols=5, left=Inches(0.1), top=Inches(.76), width=init_table_width, height=1)