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
- 3732: Network
- 洛谷P3388 【模板】割点(割顶)(tarjan求割点)
- 每天学一点Docker(3)(制作你的第一个容器)
- 1635: [Usaco2007 Jan]Tallest Cow 最高的牛
- 1653: [Usaco2006 Feb]Backward Digit Sums
- 1619: [Usaco2008 Nov]Guarding the Farm 保卫牧场
- 1682: [Usaco2005 Mar]Out of Hay 干草危机
- 1637: [Usaco2007 Mar]Balanced Lineup
- AutoFac在项目中的应用
- 每天学一点Docker(5)——了解Docker架构
- 跨站请求伪造(CSRF/XSRF)
- 我这么玩Web Api(一)
- 1624: [Usaco2008 Open] Clear And Present Danger 寻宝之路
- 点双连通分量与割点
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Django使用redis作为缓存系统
- 一天一大 leet(两个数组的交集 II)难度:简单-Day20200713
- 2020年研一末找实习总结(面经)
- 一天一大 leet(三角形最小路径和)难度:中等-Day20200714
- 一天一大 leet(判断二分图)难度:中等-Day20200716
- 一天一大 lee(被围绕的区域)难度:中等-Day20200811
- 一天一大 leet(搜索插入位置)难度:简单-Day20200717
- 一天一大 leet(两数之和 II - 输入有序数组)难度:简单-Day20200720
- 一天一大 leet(分割数组的最大值)难度:困难-Day20200725
- 一天一大 leet(矩阵中的最长递增路径)难度:困难-Day20200726
- 一天一大 lee(克隆图)难度:中等-Day20200812
- 一天一大 lee(有效的括号)难度:简单-Day20200814
- 一天一大 leet(判断子序列)难度:简单-Day20200727
- 一天一大 leet(寻宝)难度:困难-Day20200729
- LeetCode刷题记录(easy难度21-40题)