Using loops in python-pptx to create multiple slides and writing dataframe to slides

醉酒当歌 提交于 2019-12-31 02:48:04

问题


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.


回答1:


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.




回答2:


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)


来源:https://stackoverflow.com/questions/59464366/using-loops-in-python-pptx-to-create-multiple-slides-and-writing-dataframe-to-sl

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!