我使用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是表示粘贴形状的变量。