python pptx 从中间加几页_Python pptx 向已有ppt的不同page里面插入table

如果只是布局不同,数据有变化,你应该考虑使用多母版+占位符的形式自动完成。出现只有最后一页有更新,在于你始终用最后一张幻灯片对象的引用,add_table本质并不是直接添加进幻灯片类,而是加入当前shapes类(该类相当于ps中的图层)。另建议不要用globals(),滥用全局变量会产生不可预知结果。先认识pptx模块类层次关系,多页示例代码如下

Presentation 演示文稿构造对象

slide_masters 幻灯片母版(一个演示文件可以具有多个幻灯片母版)

slide_layouts 幻灯片片布局(属于母版而非prs)

slides 幻灯片 add_slide

shapes 形状,类似于ps中的图层 add_shape

placeholders... 占位符,字典辅助类...

Presentation -> slide_masters -> slide_layouts

Presentation -> slides -> shapes -> placeholders | note | text_frame ...

下面示例是一个使用了默认母版的,添加5页不同标题幻灯片示例,仅供参考

from pptx import Presentation

from pptx.util import Inches

# 演示文稿根对象,使用默认母版

prs = Presentation()

# 幻灯片布局

title_only_slide_layout = prs.slide_layouts[5]

# prs.slide_masters 幻灯片母版

for i in range(0,5):

# 1. 当前幻灯片对象

slide = prs.slides.add_slide(title_only_slide_layout)

# 若prs = Presentation("xx.pttx") xx为已存在的模板

# slide = prs.slides[i] 读取已存在的幻灯片第i+1张

# 2. 当前shapes(背景画布)对象

shapes = slide.shapes

# 变更幻灯片主标题内容

shapes.title.text = 'Adding a Table pardon110'+str(i)

# 3.配置位置尺寸参数

rows = cols = 2

left = top = Inches(2.0)

width = Inches(6.0)

height = Inches(0.8)

# 4.在(画布)上添加表格图层(表格是shapes的一种类型)

table = shapes.add_table(rows, cols, left, top, width, height).table

# 5.table图层设置

table.columns[0].width = Inches(2.0)

table.columns[1].width = Inches(4.0)

# 表格头填充

table.cell(0, 0).text = 'Foo'

table.cell(0, 1).text = 'Bar'

# 表格内容填充

table.cell(1, 0).text = 'Baz'

table.cell(1, 1).text = 'Qux'

# # 添加多个表格

# left = Inches(2.0)

# top = Inches(6.0)

# 当前画布上添加另一个表格

# table = shapes.add_table(rows, cols, left, top, width, height).table

# table.cell(0, 0).text = 'pardon110'

prs.save('test.pptx')

上述代码演示了创建table,没直接上修改table。之所以这样做是有原因的,详情参见用 pttx 模块批量操作幻灯片

你可能感兴趣的:(python,pptx,从中间加几页)