如何用Python调整PowerPoint中粘贴的Excel图表图片大小?
解决Excel图表粘贴到PPT后无法调整图片大小的问题
你之前尝试调整大小的代码无效,核心问题是没有正确捕获刚粘贴的形状对象,而且win32com操作PowerPoint的语法和你写的有出入。
正确的解决步骤:
- 调用
PasteSpecial时,直接接收它返回的ShapeRange对象(这就是刚粘贴的图表图片) - 直接对这个对象设置
Width和Height属性(PowerPoint默认单位是磅,数值按需调整)
修改后的完整代码:
import win32com.client # 连接Excel实例 ExcelApp = win32com.client.Dispatch("Excel.Application") ExcelApp.Visible = True # 打开目标工作簿 xlWorkbook = ExcelApp.Workbooks.Open(r'C:\Users\ana\Python\Chart\NDC_wan_Oct24.xlsx') # 创建PowerPoint实例并设置可见 PPTApp = win32com.client.gencache.EnsureDispatch("PowerPoint.Application") PPTApp.Visible = True # 创建新演示文稿 PPTPresentation = PPTApp.Presentations.Add() # 遍历工作表 for xlWorksheet in xlWorkbook.Worksheets: # 获取当前工作表的所有图表 xlCharts = xlWorksheet.ChartObjects() # 遍历每个图表 for index, xlChart in enumerate(xlCharts): # 添加空白幻灯片 PPTSlide = PPTPresentation.Slides.Add(Index=index + 1, Layout=12) # 12为空白布局 print('导出工作表{}中的图表{}'.format(xlWorksheet.Name, xlChart.Name)) # 复制图表 xlChart.Copy() # 粘贴为图片并获取形状对象 pasted_shape = PPTSlide.Shapes.PasteSpecial(DataType=1)[0] # 调整大小(单位:磅,可根据需求修改数值) pasted_shape.Width = 600 pasted_shape.Height = 400 # 保存演示文稿 PPTPresentation.SaveAs(r"C:\Users\ana\Python\Chart\output")
为什么之前的尝试失败:
PPTSlide.Shapes(1):Python中win32com访问集合元素要用方括号PPTSlide.Shapes[1],但如果幻灯片已有其他形状,这个索引不一定对应刚粘贴的图表PPTSlide.Shapes.items(1):items()返回的是迭代器,不能直接传入索引获取元素PPTSlide.Shapes.width:这是Shapes集合的属性,无法直接设置单个形状的大小
内容的提问来源于stack exchange,提问作者Ana Varathan
相关产品推荐
相关产品推荐

