在 python-pptx 中使用循环创建多张幻灯片并将数据帧写入幻灯片

Posted

技术标签:

【中文标题】在 python-pptx 中使用循环创建多张幻灯片并将数据帧写入幻灯片【英文标题】:Using loops in python-pptx to create multiple slides and writing dataframe to slides 【发布时间】:2020-04-15 06:37:54 【问题描述】:

我有以下代码用于从数据框创建 ppt:

下面是 3 张幻灯片的代码的 sn-p:

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"

既然我必须创建多张这样的幻灯片,是否有办法使用循环并创建多张幻灯片,而不是手动一张一张地创建?

另外,我正在将数据框写入幻灯片,如下所示:

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)

还有循环这个吗?

节点:我的代码运行良好,没有任何问题,只是想限制重复任务的代码行数。

【问题讨论】:

【参考方案1】:

不完全确定,但您可以这样尝试:

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)

【讨论】:

我猜幻灯片选项在 for 循环中不起作用。我得到:AttributeError: 'str' object has no attribute 'shape' 这里(我写的方式)“幻灯片”是一个列表对象,所以形状不起作用。但是您将能够迭代列表的索引。对吗? 我对您的代码进行了一些更改,现在可以正常工作了:list_of_datasets = [df1, df2, df3] list_of_slides = [slide1, slide2, slide3] # for i in list_of_datasets: # for j in list_of_slides: # df_to_table(j, i, left, top, width, height) for i, j in zip(list_of_datasets, list_of_slides): df_to_table(j, i, left, top, width, height) 感谢您的帮助。【参考方案2】:

这就是函数的用途,将一些重复的任务抽象为(函数)调用:

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")

您的第二个问题是一个完全不同的问题,我建议您单独提出。 *** 是围绕一次一个问题的格式设计的。

【讨论】:

感谢您的回答。请看另一个问题:***.com/q/59496023/6389099

以上是关于在 python-pptx 中使用循环创建多张幻灯片并将数据帧写入幻灯片的主要内容,如果未能解决你的问题,请参考以下文章

使用python-pptx创建PPT演示文档功能实践

python-pptx 将现有ppt的每张幻灯片保存为图片

Ionic2 显示多张幻灯片。或者它的一部分

如何在ppt的一页 实现横向多张图片循环滚动播放的效果

修改引导轮播以同时显示多张幻灯片

python 创建 PPT 文档