如何在不丢失字体格式的情况下在powerpoint表格单元格中设置文本

时间:2016-12-19 15:37:01

标签: python-pptx

我正在编写python代码来使用python-pptx修改现有的powerpoint文档。我通常可以在保留格式的同时通过在运行中设置文本来设置文本:

shape.text_frame.paragraphs[0].runs[0].text = 'mytext'

但是,在我修改的表中,单元格没有运行。它们有一个段落[0],它包含一个没有信息的字体对象(font.name,font.size,是空白的)。我不知道表格字体信息的存储位置,但由于表格在powerpoint中有效,因此必须有一些。如果我在段落中添加运行并设置其文本,则文本的大小与我在powerpoint UI中手动执行此操作的大小不同。如何在保留原始表格中的字体信息的同时在表格单元格中设置文本?

# this does not preserve table cell formatting...
table = shape.table
cell = table.rows[0].cells[0]
run = cell.text_frame.paragraphs[0].add_run()
run.text = 'mytext'

1 个答案:

答案 0 :(得分:2)

PowerPoint中的文本格式由样式层次结构控制。

直接应用于运行的格式(例如字体大小或斜体)具有第一优先级。从那里它大致是段落默认,表格样式(在表格内),继承自布局(仅占位符),继承自主(仅占位符)和文档/主题默认。这取决于位置而变化,例如,在桌子内或不在桌子内,我没有找到确切规则的明确陈述,但这可能会给你一个想法。

因此,要回答您的问题,您需要了解原始表中格式的来源。

我的猜测是直接应用格式化,因为这是最终用户最容易获得的。另外,你说新的运行没有直接应用的格式,这意味着他们必须从某个地方继承它们。

在这种情况下,解决方案是发现原始运行中的内容并在新运行中将其设置为相同。或者,您可以将所有这些内容更改为继承主题/演示文稿默认值。