当我将Excel图表添加到同一幻灯片中时,重新定位它们



我使用Python3和win32com软件包自动从excel文件中复制图表,并将其粘贴到powerpoint演示文稿中。除非调整了图表的大小,否则它们并不能全部放在一张幻灯片上,所以我将它们的宽度缩放0.85。然而,我不知道如何将它们粘贴在特定的位置,所以它们都是一个接一个地粘贴在一起的。我想我已经在visual basic中找到了一个解决方案(此处:https://www.mrexcel.com/board/threads/vba-positioning-chart-in-powerpoint-after-copy-pasting-from-excel.1107603/和这里:VBA:复制+粘贴选定的图表从Excel到Powerpoint(,但我不知道任何VBA,所以不知道如何将其翻译成python。谢谢你的帮助!

import os
import win32com.client as client
from win32com.client import constants        
xl = client.gencache.EnsureDispatch('Excel.Application')
ppt = client.gencache.EnsureDispatch('PowerPoint.Application')
wb = xl.Workbooks.Open(os.path.abspath("desiredFile.xlsx"))
prs = ppt.Presentations.Open(os.path.abspath("sample00.pptx"))
sheet = wb.Sheets('TheSheetINeed')

Slide = prs.Slides.Add(prs.Slides.Count,constants.ppLayoutBlank)
for ch in sheet.ChartObjects():
ch.Activate()
ch.Copy()

Slide.Shapes.PasteSpecial(constants.ppPasteShape).ScaleWidth(.85,0)
#Here is where I need help

prs.Save()
prs.Close()   
wb.Close(False)
ppt.Quit()
xl.Quit()

我不知道Python3是如何声明变量或以其他方式工作的,但我会尝试以下方法。代替

Slide.Shapes.PasteSpecial(constants.ppPasteShape).ScaleWidth(.85,0)

我会试试

shp = Slide.Shapes.PasteSpecial(constants.ppPasteShape).ScaleWidth(.85,0)
shp.Left = LeftValue
shp.Top = TopValue

其中shp是表示粘贴形状的变量。

最新更新