0

我正在编写 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'
4

1 回答 1

2

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

直接应用于运行的格式(例如字体大小或斜体)具有第一优先级。从那里它大致进入段落默认值、表格样式(在表格内时)、从布局继承(仅占位符)、从主文件继承(仅占位符)和文档/主题默认值。这会根据位置而有所不同,例如是否在桌子内,我还没有找到关于确切规则的明确声明,但这可能会给你一个想法。

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

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

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

于 2016-12-19T19:02:05.633 回答