python自动化操作模型——excel刷新数据并发送微信

时间:2020-04-14
本文章向大家介绍python自动化操作模型——excel刷新数据并发送微信,主要包括python自动化操作模型——excel刷新数据并发送微信使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
 1 import  os
 2 import win32gui, win32api, win32con, win32com
 3 from win32com.client import Dispatch
 4 from PIL import ImageGrab,Image    
 5 from time import sleep
 6 import pyperclip
 7        
 8 # 调用win32api的模拟点击功能实现ctrl+v粘贴快捷键   
 9 def ctrlV():
10     win32api.keybd_event(17,0,0,0)  #ctrl键位码是17
11     win32api.keybd_event(86,0,0,0)  #v键位码是86
12     win32api.keybd_event(86,0,win32con.KEYEVENTF_KEYUP,0) #释放按键
13     win32api.keybd_event(17,0,win32con.KEYEVENTF_KEYUP,0)
14 
15 # 调用win32api的模拟点击功能实现alt+s微信发送快捷键 (可以根据自己微信发送快捷键是什么来进行调整)
16 def altS(): 
17     win32api.keybd_event(18, 0, 0, 0)    #Alt  
18     win32api.keybd_event(83,0,0,0) #s
19     win32api.keybd_event(83,0,win32con.KEYEVENTF_KEYUP,0) #释放按键
20     win32api.keybd_event(18,0,win32con.KEYEVENTF_KEYUP,0)
21      
22 # 调用win32gui调用桌面窗口,获取指定窗口句柄id,激活窗口  ,向函数传递窗口名称to_weixin 
23 def wx_send(to_weixin):
24     for i in range(0,len(to_weixin)):
25         hw = win32gui.FindWindow(None, to_weixin[i])  # 获取窗口句柄
26         win32gui.GetClassName(hw)  # 获取窗口classname
27         title = win32gui.GetWindowText(hw)  # 获取窗口标题
28         win32gui.GetDlgCtrlID(hw)
29         win32gui.SetForegroundWindow(hw) # 激活窗口
30         sleep(1)
31         ctrlV()
32         sleep(1)
33         altS()
34         
35 # 使win32调用excel,刷新数据,并发送微信,
36 def wkb_Operate(class_picture,wkb_path,sleep_time):
37         os.system('taskkill /IM EXCEL.exe /F')
38         xlapp = win32com.client.gencache.EnsureDispatch('Excel.Application')
39         xlapp.Visible = 1
40         xlapp.DisplayAlerts = False # 关闭警告
41         wkb = xlapp.Workbooks.Open(wkb_path)
42         wkb.RefreshAll()
43         sleep(sleep_time)
44         print('文件【{}】已打开!'.format(wkb_path))
45         try:
46             for key,vlaue in class_picture.items():
47                 
48                 to_weixin = class_picture[key]['发送群']
49                 to_sontent = class_picture[key]['发送文本']
50                 sheet_name = class_picture[key]['sheetname']
51                 range_pic = class_picture[key]['图片区域']
52                 
53                 pyperclip.copy(to_sontent)
54                 wx_send(to_weixin)
55                 
56                 sheet_msg = wkb.Worksheets(sheet_name)
57                 sheet_msg.Range(range_pic).CopyPicture()
58                 wkb.Worksheets.Add().Name = 'picture'
59                 sheet_picture = wkb.Worksheets('picture')
60                 sleep(1)
61                 sheet_picture.Range('A1').Select()
62                 sheet_picture.Paste()
63                 sleep(1)
64                 xlapp.Selection.ShapeRange.Name = 'pic_name'
65                 sheet_picture.Shapes('pic_name').Copy()
66                 sleep(1)
67                 img = ImageGrab.grabclipboard()
68                 sleep(1)
69                 wx_send(to_weixin)
70                 wkb.Worksheets('picture').Delete()
71                 print('#粘贴 成功:%s',sheet_name)
72         except BaseException as e:
73             print(e)
74             pass
75         wkb.Save()
76         wkb.Close(1)
77         xlapp.Quit()
78         print('#更新 成功:%s' % wkb_path)
79         pass   
80 # *********************主程序,大致方向是,1、调用wkb_Operate刷新函数刷新exce数据,并返回文本数据播报内容,
81 #2、调用wx_send激活微信窗口,3、ctrlV(),altS()模拟粘贴发送功能,4、调用excel_picture函数,截图到剪切板上,并调用wx_send(),ctrlV(),altS()微信发送图片
82 # 微信发送窗口,必须保持一致,按照此名字识别,否则发送不会成功******
83 
84 # 文件路径:
85 path_process = r"C:\Users\1\Desktop\备份\YTshuaxin\hour\2020年新流水监控表.xlsx"  # 文件夹路径
86 
87 #*********主程序***************#
88 class_picture1 = {'pic1':{'发送群':['管理团队','数据中心'],
89                           'sheetname':'日监控',
90                           '图片区域':'a1:Al50',
91                           '发送文本':'截止到目前的流水和PK情况'}}
92 result_sheet_value = wkb_Operate(class_picture1,path_process,8)

原文地址:https://www.cnblogs.com/gujianjian/p/12697514.html