Using loops in python-pptx to create multiple slid

2020-04-14 03:38发布

I have the below code for creating ppt out of dataframes:

Below is a snippet of the code for 3 slides:

title_slide_layout = prs.slide_layouts[1]
slide = prs.slides.add_slide(title_slide_layout)
slide2 = prs.slides.add_slide(title_slide_layout)
slide3 = prs.slides.add_slide(title_slide_layout)
title = slide.shapes.title
title.text = "Summary Table"
title2 = slide2.shapes.title
title2.text = "New Table"
title3 = slide3.shapes.title
title3.text = "Old Table"

Since i have to create multiple such slides is there anyway to use loops and create multiple slides instead of creating it one by one manually?

Also, I am writing dataframes to slides like this:

df_to_table(slide, df1, left, top, width, height)
df_to_table(slide2, df2, left, top, width, height)
df_to_table(slide3, df3, left, top, width, height)

Is there anyway to loop this too?

Node: My code is working fine without any issues, just want to limit the lines of code for repetitive tasks.

2条回答
祖国的老花朵
2楼-- · 2020-04-14 04:04

Not sure fully but you may try like this:

slide = ["slide" + str(num1)  for num1 in range(1,4)] 
df = ["df" + str(num1)  for num1 in range(1,4)]

for i in range(0,3):
    df_to_table(slide[i], df[i], left, top, width, height)
查看更多
劳资没心,怎么记你
3楼-- · 2020-04-14 04:27

This is what functions are for, to abstract some repetative task down to a (function) call:

def add_slide(prs, layout, title):
    """Return slide newly added to `prs` using `layout` and having `title`."""
    slide = prs.slides.add_slide(layout)
    slide.shapes.title.text = title
    return slide


title_slide_layout = prs.slide_layouts[1]
slide = add_slide(prs, title_slide_layout, "Summary Table")
slide2 = add_slide(prs, title_slide_layout, "New Table")
slide3 = add_slide(prs, title_slide_layout, "Old Table")

Your second question is an entirely different question and I recommend you ask it separately. StackOverflow is designed around a one-question-at-a-time format.

查看更多
登录 后发表回答