启明办公

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 76|回复: 0

十行代码写个摸鱼神器,帮你自动化操作Excel

[复制链接]

2

主题

8

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2022-12-13 11:49:18 | 显示全部楼层 |阅读模式
为啥要做这个?

现在很多公司会监控员工行为,包括上厕所的时长,不在座位的时长,发呆的时长,都在电脑上用了什么软件,发了多少邮件,打开了什么网站等等。
监控方式,包括软件,行为监控网关,人力,摄像头监控等等。目的就是防止员工摸鱼,在离职/辞退/裁员的时候,如果员工申请仲裁或者诉讼要求支付剩余工资或者要求赔偿,这个时候用人单位就可以拿出这些「证据」,拒绝支付工资或赔偿。
所以,最好能在自己发呆和上厕所的时候,有个机器人程序帮自己操作电脑,假装还在忙碌,忙着做报表。

# 代码基于Python,行数很少,不重复代码十行左右


python
#!/usr/bin/env python3
# encoding: utf-8

import pyautogui
import os
import time
import random

pyautogui.FAILSAFE = True  # 防失控机制,鼠标失控时,人工将鼠标移动到屏幕左上角,强制结束程序
pyautogui.PAUSE = 0.25   # 为每个操作增加延迟

# 打开EXCEL表,准备改成让用户输入路径的
os.popen(r'D:\loaf\费用报表.xlsx')
time.sleep(10)

# 1.简单移动鼠标, 可以考虑加随机数
def move_mouse():
    pyautogui.moveTo(100,100)
    time.sleep(2)
    pyautogui.moveTo(300,300)

# 2.鼠标简单点击,可以考虑加随机数
def left_click():
    pyautogui.click(500,500)

# 3.滚动鼠标滚轮
def mouse_scroll():
    pyautogui.scroll(-300)
    time.sleep(2)
    pyautogui.scroll(300)

# 4.全选快捷键
def select_all():
    pyautogui.hotkey('ctrl', 'a')

# 5.输入公式
def input_func():
    pyautogui.press('shift')
    pyautogui.typewrite('=SUM(A2:A6)', interval=0.25)
    time.sleep(3)
    pyautogui.press('esc',presses=2)

# 6.查找对象
def find_object():
    pyautogui.hotkey('ctrl', 'g')
    time.sleep(1.5)
    pyautogui.hotkey('alt', 's')
    time.sleep(1.5)
    pyautogui.press('b')
    time.sleep(1.5)
    pyautogui.press('enter')
    time.sleep(3)
    pyautogui.press('esc',presses=2)

# 7.随机切换sheet
def switch_sheet():
    pyautogui.hotkey('ctrl', random.choice(['pageup', 'pagedown']))

# 随机选择一个操作
while True:
    action_choice = ['move_mouse', 'left_click', 'mouse_scroll', 'select_all',
                     'input_func', 'find_object', 'switch_sheet']
    eval("".join([random.choice(action_choice), "()"]))
    time.sleep(1)
主要用到了Pyautogui这个库,用来操作键盘鼠标。OS库用来打开Excel表,time库用来设置延迟,适当的延迟才能表现的像人类的操作,过快了机械感觉太重,不像人操作的。
最下面随机选择操作的While True循环这段代码是我优化过的。原代码是这样的:
# 随机选择一个操作
while True:
    action_choice = random.randint(1, 7)
    if action_choice == 1:
        move_mouse()
    if action_choice == 2:
        left_click()
    if action_choice == 3:
        mouse_scroll()
    if action_choice == 4:
        select_all()
    if action_choice == 5:
        input_func()
    if action_choice == 6:
        find_object()
    if action_choice == 7:
        switch_sheet()
    time.sleep(1)
原代码if语句较多,显得冗长,但可读性较强。这种if语句较多的情况,可以用列表或者字典来代替,能减少代码行数。至于可读性,仁者见仁,智者见智了。
另外,eval这个是把字符串变成可执行代码,有点虚拟世界元宇宙的意思。
相关的视频:
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|天恒办公

Copyright © 2001-2013 Comsenz Inc.Template by Comsenz Inc.All Rights Reserved.

Powered by Discuz!X3.4

快速回复 返回顶部 返回列表