我有一个 excel 文件,其中一个名为的选项卡上有一系列格式化图表Charts
。我已经给图表命名了,Figure1
, Figure2
, Figure3
, etc.
我有一个现有的 PowerPoint 模板。该模板每张幻灯片有 2 个占位符(以便每张幻灯片可以容纳 2 个图表)。
我想粘贴Figure1
在幻灯片 3 的左侧占位符中,以及Figure2
在幻灯片 3 的右侧占位符中。我想在 python 中执行此操作,因为数据分析是在 python 中完成的,并且使用 excel 与同事共享存储的结果。
尝试1:
尝试1使用win32com.client
。我正在遵循这个例子:如何使用Python从Excel复制图表并将其作为图表粘贴到powerpoint(而不是图像)中 https://stackoverflow.com/questions/60445740/how-to-copy-chart-from-excel-and-paste-it-as-chart-into-powerpoint-not-image-u
但我无法获得正确的语法来将图表插入占位符。当我遵循解决方案中的语法时,没有任何反应,并且收到一条消息
>
当前代码:
xlApp = win32.Dispatch('Excel.Application')
wb = xlApp.Workbooks.Open(outputPath+'Chart Pack.xlsb')
pptApp = win32.Dispatch('PowerPoint.Application')
ppt = pptApp.Presentations.Open(template)
# attempt 1
wb.sheets('Charts').ChartObjects('Figure1').Copy
ppt.slides[2].Shapes.Paste
# attempt 2
wb.sheets('Charts').ChartObjects('Figure1').Copy
ppt.slides[2].placeholders[1].Paste
尝试2:
尝试2使用python-pptx
。我查看了这里的文档:https://python-pptx.readthedocs.io/en/latest/user/placeholders-using.html https://python-pptx.readthedocs.io/en/latest/user/placeholders-using.html
但该示例涉及在 PowerPoint 中从头开始创建 Excel 图表(我不确定您为什么要这样做),并且我无法弄清楚从 Excel 插入现有图表的语法。
当前代码:
from pptx import Presentation
xlApp = win32.Dispatch('Excel.Application')
wb = xlApp.Workbooks.Open(outputPath+'Chart Pack.xlsb')
prs = Presentation(template)
slide = prs.slides[3]
for shape in slide.placeholders:
print('%d %s' % (shape.placeholder_format.idx, shape.name))
placeholder = prs.slides[3].placeholders[1]
placeholder.name
placeholder.placeholder_format.type
placeholder.insert_chart(wb.sheets('Charts').ChartObjects('Figure1').Copy)
要求:
-
我想将 Excel 图表粘贴为 Excel 对象(而不是图片),因为我的同事希望能够单击数据系列来获取基础值等。
-
我想将图表粘贴到占位符内(而不是在其顶部)。
-
我不想像大多数示例那样在 PowerPoint 中生成新图表。一位同事准备了一个 Excel 仪表板,并根据需要格式化了许多图表,从头开始做这一切会很费力。
-
我不想在 VBA 中这样做。我想用 python 来完成它,因为它是更广泛的程序的一部分。
-
我不想使用类似的东西plotnine
, seaborn
, matplotlib
等等。根据 1,我的同事喜欢 Excel 对象,他可以单击这些对象来显示基础值。这在这些程序中是无法完成的。
Python 应该能够做到这一点。有任何想法吗?