本帖最后由 d8349565 于 2020-12-12 23:03 编辑
“专业的IT人员不做繁琐的日常文件管理工作,专业的白领也负担不起软件定制与维护”
以上大概就是我开始自学Python编程的原因吧!
-----------------------------------------------------------------------------------------------------------------------------------------------
其实标题并不夸张,上个月我确实录入了4960条单据到公司内的系统,原因是临时新增的模块,需要录入初始化数据,IT反馈没办法一次性导入,所以就有了今天这个帖子。
软件介绍:
公司系统近期新增一个业务模块,项目进度较紧凑,大量初始化数据需要录入,多次询问了公司IT组,反馈无法办理一次性导入,只能手工录入。
无奈之下,通过百度搜索学习,“千辛万苦”找到了应对思路,才制作这个软件,实现自动录入系统数据功能。
附件总览:
image.png (78.54 KB, 下载次数: 0)
2020-12-12 22:48 上传
设计思路及流程:
从《数据源》Excel表格中获取所有需要录入的数据“data”;
从“data”中逐一获取每行数据;(注明:每行数据对应系统中一个单据所需要填写的项目信息)
从每行数据中逐一获取单个数据;
将单个数据复制到系统的剪切板;
获取公司系统单据对应项目填写位置在电脑屏幕上的坐标;
模拟鼠标点击操作,激活公司系统文本填写框内;
模拟键盘Ctrl+V操作,将单个数据粘贴只公司系统文本填写框内;
模拟鼠标点击操作,点击办理下一个单据。
以上循环
假装以下为系统单据界面:
image.png (19.65 KB, 下载次数: 0)
2020-12-12 22:50 上传
数据源:
image.png (28.96 KB, 下载次数: 0)
2020-12-12 22:48 上传
手工操作录入:
试着像这样手工录入了几十个单据,感觉要崩溃!!!
1.gif (917.7 KB, 下载次数: 0)
2020-12-12 22:31 上传
使用方法:
1、打开附件中的这个软件获取鼠标实时坐标;
image.png (6.95 KB, 下载次数: 0)
2020-12-12 22:32 上传
2、将鼠标移至输入框后,获取XY坐标值,输入到txt文本中;
image.png (11.5 KB, 下载次数: 0)
2020-12-12 22:35 上传
image.png (19.22 KB, 下载次数: 0)
2020-12-12 22:37 上传
特别注意:【应用坐标】对应的是以下坐标:
image.png (41.38 KB, 下载次数: 0)
2020-12-12 22:40 上传
3、打开exe应用,选择数据源,即可开始录入数据:
2.gif (372.9 KB, 下载次数: 0)
2020-12-12 22:39 上传
Python源码:
[Python] 纯文本查看 复制代码import pyperclip
import pyautogui
import pandas as pd
import easygui as g
pyautogui.FAILSAFE =True # 如果出错,将鼠标移至屏幕左上角可停止程序
#--------------------------------------选择文件,并清洗数据(因为示例文件的数据相对简单,谈不上清洗)
path=g.fileopenbox(msg='')
data=pd.read_excel(path,header=0)
data = data.iloc[:, 1:5] #选择2-5列
[m, n] = data.shape
print(data)
#--------------------------------------设置各项目在屏幕上的坐标数值(x,y)
with open('信息补充.txt', 'r', encoding='utf-8') as t:
txt = t.readlines()
def zuobiao(i):
x=txt[i].split("=")[-1].strip().split(",")[0]
y=txt[i].split("=")[-1].strip().split(",")[1]
a=(int(x),int(y))
return a
应用坐标 = zuobiao(0)
数据输入坐标1 = zuobiao(1)
数据输入坐标2 = zuobiao(2)
数据输入坐标3 = zuobiao(3)
数据输入坐标4 = zuobiao(4)
按钮坐标 = zuobiao(5)
print(应用坐标)
print(数据输入坐标1)
# 应用坐标=(807,1073) # 应用图标位置
# 数据输入坐标1=(560,332) # 项目A
# 数据输入坐标2=(930,331) # 项目B
# 数据输入坐标3=(556,456) # 项目C
# 数据输入坐标4=(932,539) # 项目D
# 按钮坐标=(1168,332) # 按钮
#--------------------------------------函数设置
def 输入(数据输入坐标,第几个数据,一行数据):
pyperclip.copy(一行数据[第几个数据]) #将数据复制到剪贴板
pyautogui.click(数据输入坐标)
pyautogui.hotkey('ctrl','v')
# print(一行数据[第几个数据])
def main ():
pyautogui.PAUSE = 0.3
pyautogui.click(应用坐标)
for i in range(0,m):
一行数据=data.loc[i] # 选择某一行数据
# print(一行数据)
输入(数据输入坐标1,0,一行数据) # 选择第1个数据
输入(数据输入坐标2,1,一行数据) # 选择第2个数据
输入(数据输入坐标3,2,一行数据) # 选择第3个数据
输入(数据输入坐标4,3,一行数据)
pyautogui.click(按钮坐标)
main ()
下载链接:
大于100M,蓝奏云不能上传了
链接: https://pan.baidu.com/s/1780NStS05qbkQ_qeFZ6LyQ 提取码: h2gj 复制这段内容后打开百度网盘手机App,操作更方便哦
链接:https://pan.xunlei.com/s/VMOMPbXY5IbSVKKozzxIUJmXA1 提取码:jh5d
补充:
以下是我用Notion整理的关于pandas模块的笔记,欢迎指导!
https://www.notion.so/Pandas-64b1f4e594304fb2bc7450ebd8aa4385
image.png (456.29 KB, 下载次数: 0)
2020-12-12 23:03 上传