问题
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