2

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

我初始化我的表:

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,

4

1 回答 1

3

我发现如果我将表格初始化到一个不可能的小高度(请参见下面的 height=1),则创建的表格将具有尽可能紧凑的行高。

graphicframe = slide.shapes.add_table(len(biosets) + 1, cols=5, left=Inches(0.1), top=Inches(.76), width=init_table_width, height=1)
于 2017-07-25T14:26:20.113 回答