OA公文处理系统自动处理
本帖最后由 yidaiyeer757 于 2022-3-24 15:30 编辑OA公文处理系统,办公室的收文处理大概都是这么个流程,收文,然后录入收文簿,然后将收文薄传到OA上,本工具是将收文薄的数据直接自动填进oa和WebOffice插件,利用py的selenium进行浏览器操作。```
from time import sleep
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from PyQt5.Qt import *
import sys
import win32clipboard as wc
import win32con
import openpyxl
import mouse
import pynput
def setCopyTxet(strs):# 设置写入粘贴板函数
wc.OpenClipboard()# 打开粘贴板
wc.EmptyClipboard()# 清空粘贴板
wc.SetClipboardData(win32con.CF_UNICODETEXT, strs)# 写入粘贴板
wc.CloseClipboard()# 关闭粘贴板
chrome_options = Options()
options = webdriver.ChromeOptions()
options.debugger_address = "127.0.0.1:9222"
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
chrome_driver = "C:\Program Files\Google\Chrome\Application\chromedriver.exe"# 指定自己的chromedriver路径
driver = webdriver.Chrome(chrome_driver, chrome_options=chrome_options)
#创建一个应用程序对象
class mywindow(QWidget):
def __init__(self):
'''=========窗口代码开始=========='''
super(mywindow, self).__init__()
self.window=QWidget() #创建窗口对象
self.window.setWindowTitle("") #窗口名字
self.window.resize(200,100) #改变窗口大小
self.window.move(400,200) #移送窗口位置
self.window.setWindowFlags(Qt.WindowStaysOnTopHint)
self.bt()
self.ted()
'''=========窗口代码结束=========='''
self.window.show()
def btevt(self):
if self.tedd.toPlainText() != None:
driver.get("http://36.134.194.224:8098/admin/persion/dispatch/index")
path = "C:\\Users\\Administrator\\Desktop\\2020收文薄2022.1.23备份.xlsx"
sleep(1)
driver.find_elements_by_class_name("layui-admin-iframe").click()# 点击收文处理笺
workbook = openpyxl.load_workbook(path)# 打开表格
shenames = workbook.get_sheet_names()# 获取表格所有子表名
worksheet = workbook.get_sheet_by_name(shenames)# 读取子表
a = worksheet["C" + self.tedd.toPlainText()].value
b = worksheet["d" + self.tedd.toPlainText()].value
c = worksheet["A" + self.tedd.toPlainText()].value
d = self.tedd.toPlainText()
e = worksheet["i" + self.tedd.toPlainText()].value
driver.find_elements_by_class_name("layui-input").click()
driver.find_elements_by_class_name("layui-input").send_keys(a)
driver.find_elements_by_class_name("layui-input").click()
driver.find_elements_by_class_name("layui-input").send_keys(b)
driver.find_elements_by_class_name("layui-input").click()
driver.find_elements_by_class_name("layui-input").send_keys(c)
driver.find_elements_by_class_name("layui-input").click()
driver.find_elements_by_class_name("layui-input").send_keys(d)
driver.find_elements_by_class_name("layui-btn").click()
sleep(1)
'''====鼠标事件===='''
ctr = pynput.mouse.Controller()
mouse.move(766, 190)# 之鼠标位置
ctr.press(pynput.mouse.Button.left)# 按下
ctr.release(pynput.mouse.Button.left)# 弹起
sleep(5)
# mouse.click() #点击
# keyboard.hook(lambda x: print(x))#匿名函数 调用直接销毁
ctrj = pynput.keyboard.Controller()
'''=====单位======'''
setCopyTxet(a)
mouse.move(520, 509)
ctr.press(pynput.mouse.Button.left)
ctr.release(pynput.mouse.Button.left)
ctrj.press(pynput.keyboard.KeyCode.from_vk(17))
ctrj.press('v')
ctrj.release(pynput.keyboard.KeyCode.from_vk(17))
ctrj.release('v')
sleep(0.2)
'''====文件名======'''
setCopyTxet(b)
mouse.move(660, 660)
ctr.press(pynput.mouse.Button.left)
ctr.release(pynput.mouse.Button.left)
ctrj.press(pynput.keyboard.KeyCode.from_vk(17))
ctrj.press('v')
ctrj.release(pynput.keyboard.KeyCode.from_vk(17))
ctrj.release('v')
sleep(0.2)
'''=====文件号======'''
setCopyTxet(c)
mouse.move(770, 510)
ctr.press(pynput.mouse.Button.left)
ctr.release(pynput.mouse.Button.left)
ctrj.press(pynput.keyboard.KeyCode.from_vk(17))
ctrj.press('v')
ctrj.release(pynput.keyboard.KeyCode.from_vk(17))
ctrj.release('v')
sleep(0.2)
'''=====编号======'''
setCopyTxet(d)
mouse.move(770, 570)
ctr.press(pynput.mouse.Button.left)
ctr.release(pynput.mouse.Button.left)
ctrj.press(pynput.keyboard.KeyCode.from_vk(17))
ctrj.press('v')
ctrj.release(pynput.keyboard.KeyCode.from_vk(17))
ctrj.release('v')
sleep(0.2)
'''=====编号======'''
setCopyTxet(e)
mouse.move(458, 730)
ctr.press(pynput.mouse.Button.left)
ctr.release(pynput.mouse.Button.left)
ctrj.press(pynput.keyboard.KeyCode.from_vk(17))
ctrj.press('v')
ctrj.release(pynput.keyboard.KeyCode.from_vk(17))
ctrj.release('v')
sleep(0.2)
def bt(self):
self.btt=QPushButton(self.window)
self.btt.resize(80, 30)
self.btt.move(60, 60)
self.btt.setText("读取")
self.btt.clicked.connect(self.btevt)
def ted(self):
self.tedd=QTextEdit(self.window)
self.tedd.resize(80, 30)
self.tedd.move(60, 20)
zt = QFont("楷体", 13)
self.tedd.setFont(zt)
if __name__ == '__main__':
app=QApplication(sys.argv)
window=mywindow()
sys.exit(app.exec())
``` chinguy 发表于 2022-3-27 08:55
这个很实用,看起来很快捷方便。
浏览器是后台操作,插件是模拟手动操作,是挺方便的,不用来回切换表格浏览器和插件复制粘贴。只需要输入标号一键操作:lol lizy169 发表于 2022-3-29 07:24
这个好,很实用,要好好学习一下
根据我自己实际情况写的,有啥不懂或者不一样的可以回复我哦 谢谢分享,很实用! 谢谢分享!学习了 这个很实用,看起来很快捷方便。 twapj 发表于 2022-3-27 06:39
谢谢分享!学习了
:lol半自动的,我每天一部分工作都是处理文件,现在轻松不少了 这个好,很实用,要好好学习一下 坐标跟按键位置没对应上,没太看懂 lwz373146809 发表于 2022-3-29 13:02
坐标跟按键位置没对应上,没太看懂
你这是坐标这些可以自己改哦