关于使用xlwings和pptx库做到excel和ppt的联动

本文介绍了如何使用xlwings和pptx库将Excel中的数据、图表和组合图转换为图片并插入到PowerPoint演示文稿中。通过VBA宏获取对象名称,然后利用ImageGrab抓取剪贴板内容保存图片,最后在PPT中调整布局,创建新的演示文稿。
摘要由CSDN通过智能技术生成

本次实例使用xlwings库和pptx库,实现将excel内的图片,数据,组合图等生成图片并加入到ppt中
具体项目代码不便写出,主要记录一些方法

代码分为两部分,第一部分先从excel里提取需要的数据,图表以及组合图表生成图片保存在本地

import xlwings as xw
from PIL import ImageGrab,ImageTk
from PIL import Image
import time

def delay():
	time.sleep(2)								# 定义该函数,设置主动延迟,用于防止剪贴板失效

app1 = xw.App(visible=True, add_book=False)     # 打开excel程序
wb1 = app1.books.open('test.xlsx')              # 打开需要的工作簿
sht1 = wb1.sheets['分部利润表']                  # 定位工作表

shape1 = sht1.shapes['Group 4']                 # 该处为组合图,具体名称用vba录制宏可看
chart1 = sht1.charts['图表 16']                 # 该处为图表,具体名称用vba录制宏可看
range1 = sht1['A1:D9']                          # 该处为A1:D9部分的数据
'''以上三种分别指如何用代码表示excel里的某一项数据或图表,用于后面生成相应部分的截图'''

shape1.api.Copy()								# 复制组合图到剪贴板,注意Copy必须大写
image = ImageGrab.grabclipboard() 				# 获取剪贴板文件
image.save('shape1.png')						# 将剪贴板的图片文件保存
delay()											# 主动延迟

chart1.api[1].ChartArea.Copy()					# 复制图表到剪贴板,注意chart即图表的copy方式与组合图和数据都不太一样,并且此处大小写都不可混用,否则程序会卡死
image = ImageGrab.grabclipboard() 				# 获取剪贴板文件
image.save('chart1.png')						# 将剪贴板的图片文件保存
delay()											# 主动延迟

range1.api.Copy()								# 复制组合图到剪贴板,注意Copy必须大写
image = ImageGrab.grabclipboard() 				# 获取剪贴板文件
image.save('range1.png')						# 将剪贴板的图片文件保存
delay()											# 主动延迟

wb1.save()
wb1.close()                                    
app1.quit()

第二部分,将已经保存好的图片新生成一张ppt,仔细调整各项参数即可

from pptx import Presentation
from pptx.util import Cm

prs = Presentation()

slide1 = prs.slides.add_slide(prs.slide_layouts[6])         		 #该母版为空白幻灯片
slide1.shapes.add_picture('chart1.png',left=Cm(1),top=Cm(1),width=Cm(10),height=Cm(8))		
slide1.shapes.add_picture('range1.png',left=Cm(1),top=Cm(10),width=Cm(10),height=Cm(8))

left = top = width = height = Cm(1)
txBox = slide.shapes.add_textbox(left, top, width, height)
tf = txBox.text_frame
tf.text = "This is text inside a textbox"
'''以上四行为添加文本框并在文本框内写内容的示范'''

prs.save("test.pptx")

pptx库相关代码主要参考链接:https://python-pptx.readthedocs.io/en/latest/user/quickstart.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值