基于pyautogui的Python财务机器人练习

本文介绍了如何使用Python库pyautogui自动化处理财务工作,包括读取Excel单元格数据、转换为大写汉字金额,并实现跨工作表的流程。通过实例展示了从复制到大写金额输入再到Excel单元格的全过程。
摘要由CSDN通过智能技术生成

所谓财务机器人,就是将传统人工处理财务工作的操作由计算机程序自动来完成。为此,一些可以提供键盘和鼠标模拟的工具都可以应用于此。pyautogui就是一个常见的Python库。下面介绍下基本的使用方法(以PyCharm和Excel为例):

1)首先可以看到Excel版本的记账凭证,界面如:

Excel文档下载:https://www.njcie.com/python/pbda-data/5/记账凭证.rar 

这里有三个工作表,我们的工作就是要将每个工作表的借贷发生总额即C11单元格的数字以大写汉字金额的方式补充到B11的合计中。

2)为了能够实现上述工作的自动化,我们需要先对pyautogui了解下。

在PyCharm项目中导入pyautogui后,即可做如下测试:

import pyautogui

pyautogui.press('a')

 运行后,你会发现在当前编辑器光标处会自动出现了一个a的字符,就像刚才你按下了a这个键一样。

注意两个问题:一是此时如果大写模式打开,会输入A;二是如果打开了中文输入法,也会显示似乎以a来输入汉字的界面:

 3)接下来,我们来尝试操作Excel文档。代码为:

import pyautogui
import time

time.sleep(5)
pyautogui.click(800, 780)

运行后,可以快速打开Excel文档界面,你会发现大约五秒后(sleep的作用),C11单元格被点击了一下。这个过程其实就是click函数模拟的,而后面两个整数代表了点击的坐标,这个坐标就是在我电脑上Excel中C11单元格中的一个点。因此大家如果需要也定位到C11,就需要灵活根据自己电脑的屏幕来确定坐标。方法很简单,按下PrtSc键截取当前屏幕,然后在开始菜单中打开“画笔”(注意不是画图3D等),直接按下Ctrl+V粘贴,在按下Esc键确定。此时在图片上移动鼠标,会发现左下角有两个数字在变化,那就是坐标,此时即可选中位于C11单元格的一个点坐标即可。

有一种可能性,那就是屏幕相对较小,不能直接看到C11,还需要滚动鼠标才能看到。为了简化练习,可以考虑将当前Excel表格内容缩小显示,比如按下Excel表格右下角的滑钮缩小,或者折叠工具栏,使得C11直接显示在屏幕即可。

4)这些操作确认没有问题后,就可以继续完善代码了。

import pyautogui
import time

time.sleep(5)
pyautogui.click(800, 780)
pyautogui.hotkey('ctrl', 'c')

此时会点击后模拟复制操作,打开任何一款编辑器,粘贴内容都会发现已将金额复制成功

5)接下来就可以将复制的金额再转换为大写汉字金额:

import pyautogui
import pyperclip
import time


def daxie(number):
    numchar = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']
    pr = ['圆', '拾', '佰', '仟', '萬']
    lengh = len(str(number))
    result = ''
    for i in str(number):
        lengh -= 1
        result += ('%s%s' % (numchar[int(i)], pr[lengh]))
    return result


time.sleep(5)
pyautogui.click(800, 780)
pyautogui.hotkey('ctrl', 'c')
print(daxie(int(float(pyperclip.paste().replace(',', '')))))

 此时五秒钟结束后可以在PyCharm中发现输出:壹萬零仟零佰零拾零圆

该代码将刚才复制到剪贴板的内容,通过pyperclip模块的paste函数获取到,并再去除掉千分位符号后,转换为整数,交给daxie函数完成大写汉字金额的输出。

6)最后就可以将这个大写汉字金额直接追加到Excel表格中了,效果为:

 代码为:

import pyautogui
import pyperclip
import time


def daxie(number):
    numchar = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']
    pr = ['圆', '拾', '佰', '仟', '萬']
    lengh = len(str(number))
    result = ''
    for i in str(number):
        lengh -= 1
        result += ('%s%s' % (numchar[int(i)], pr[lengh]))
    return result


time.sleep(5)
pyautogui.click(800, 780)
pyautogui.hotkey('ctrl', 'c')
pyperclip.copy(daxie(int(float(pyperclip.paste().replace(',', '')))))
pyautogui.doubleClick(490, 780)
pyautogui.hotkey('ctrl', 'v')

7)进一步完善代码,更多模拟切换到下一工作表再循环处理的方法,可以实现完整应用:

import pyautogui
import pyperclip
import time


def daxie(number):
    numchar = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']
    pr = ['圆', '拾', '佰', '仟', '萬']
    lengh = len(str(number))
    result = ''
    for i in str(number):
        lengh -= 1
        result += ('%s%s' % (numchar[int(i)], pr[lengh]))
    return result


time.sleep(5)

for i in range(3):
    pyautogui.hotkey('ctrl', 'home')  # 回到A1,确保整个记账页面显示出来
    pyautogui.click(800, 780)
    pyautogui.hotkey('ctrl', 'c')
    pyperclip.copy(daxie(int(float(pyperclip.paste().replace(',', '')))))
    pyautogui.doubleClick(490, 780)
    pyautogui.hotkey('ctrl', 'v')
    pyautogui.hotkey('ctrl', 'pagedown')  # 跳转下一工作表

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leeshuqing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值