任务目标:
与网页版金蝶配合,登录金蝶,将当日银行流水明细下载后,对下载的表格进行处理修正后,在金蝶对每一条打款明细进行相应的判断后收款。
登录网页金蝶:
page = rpa.app.chrome.create('http://')
name = ''
password = ''
sleep(2)
page = rpa.app.chrome.catch('金蝶云星空', mode='title', pattern='equal')
page.click('点击切换主体', index = 1, simulate = True, button = 'left')
sleep(2)
page.input_text('主体输入框', value = zt, index = 1, simulate=True, replace = True, sent_raw = False, wait_mili_seconds = 20)
sleep(1)
rpa.ui.win32.send_key('{ENTER}')
page.input_text("用户名",value = "")
page.input_hotkeys('用户名','VK_SHIFT')
page.input_text("用户名",value = name)
page.input_hotkeys('用户名','VK_SHIFT')
sleep(1)
page.input_text("密码",value = password)
sleep(1)
page.click("登录")
sleep(12)
下载表格:
page.click("主页点击")
sleep(1)
page.click("网上银行")
sleep(1)
page.click("银行账户交易明细查询")
sleep(2)
page.click('币种', index = 1, simulate = True, button = 'left')
if bz == 'CNY':
page.click('人民币', index = 1, simulate = True, button = 'left')
else:
page.click('美元', index = 1, simulate = True, button = 'left')
sleep(1)
page.click('币种返回', index = 1, simulate = True, button = 'left')
sleep(1)
page.click("选择银行账号")
sleep(2)
page.input_text("输入银行账号",value = banknum)
sleep(1)
rpa.ui.win32.send_key('{ENTER}')
sleep(1)
page.click("点击确认")
sleep(1)
page.click("银行账号返回数据")
sleep(2)
page.click('过滤方案确定', index = 1, simulate = True, button = 'left')
sleep(10)
page.click('查询选项', index = 1, simulate = True, button = 'left')
page.click('引出1', index = 1, simulate = True, button = 'left')
sleep(1)
page.click('引出2', index = 1, simulate = True, button = 'left')
sleep(1)
page.click('下载', index = 1, simulate = True, button = 'left')
sleep(1)
wnd = rpa.ui.win32.catch('另存为', mode='exact', process_name='chrome', class_name='#32770')
sleep(1)
wnd.input_text('文件名', filename, simulate = True, replace = True, index = 1, send_window_message = True, sent_raw = False, wait_mili_seconds = 20)
sleep(1)
wnd.click('保存', button='left', simulate=True, index=1, offset_x=0, offset_y=0)
sleep(1)
page.click('关闭保存', index = 1, simulate = True, button = 'left')
sleep(1)
page.click('页面明细查询关闭', index = 1, simulate = True, button = 'left')
sleep(1)
page.click('返回主页', index = 1, simulate = True, button = 'left')
sleep(20)
去重
count_max = int(sheet_yq_CNY.row_count())-3
count_min = 4
sleep(1)
while count_min < count_max+1:
#H单元格取值
Hcell = 'H'+str(count_min)
Hcell_value = sheet_yq_CNY.read(Hcell)
if Hcell_value!= None:
result_yq_CNY = sheet_yq_CNY.find(Hcell_value)
sleep(1)
if len(result_yq_CNY)==2:
#如果有符号,去除第一个符号
#一号的收入支出
cell_typein1 = 'D' + str(result_yq_CNY[0][0])
cell_typeout1 = 'E' + str(result_yq_CNY[0][0])
cell_in1 = sheet_yq_CNY.read(cell_typein1)
cell_out1 = sheet_yq_CNY.read(cell_typeout1)
sleep(1)
#二号的收入支出
cell_typein2 = 'D' + str(result_yq_CNY[1][0])
cell_typeout2 = 'E' + str(result_yq_CNY[1][0])
cell_in2 = sheet_yq_CNY.read(cell_typein2)
cell_out2 = sheet_yq_CNY.read(cell_typeout2)
sleep(1)
#比对删除数据
if cell_in1==cell_out2 and cell_in1!=None and cell_out2!=None:
sheet_yq_CNY.delete(result_yq_CNY[1][0])
sheet_yq_CNY.delete(result_yq_CNY[0][0])
count_max -=2
count_min =4
if cell_in2==cell_out1 and cell_in2!=None and cell_out1!=None:
sheet_yq_CNY.delete(result_yq_CNY[1][0])
sheet_yq_CNY.delete(result_yq_CNY[0][0])
count_max -=2
count_min =4
if len(result_yq_CNY)>2:
for p in range (len(result_yq_CNY)):
for q in range (p+1,len(result_yq_CNY)):
#如果有符号,去除第一个符号
#一号的收入支出
cell_typein1 = 'D' + str(result_yq_CNY[p][0])
cell_typeout1 = 'E' + str(result_yq_CNY[p][0])
cell_in1 = sheet_yq_CNY.read(cell_typein1)
cell_out1 = sheet_yq_CNY.read(cell_typeout1)
sleep(1)
#二号的收入支出
cell_typein2 = 'D' + str(result_yq_CNY[q][0])
cell_typeout2 = 'E' + str(result_yq_CNY[q][0])
cell_in2 = sheet_yq_CNY.read(cell_typein2)
cell_out2 = sheet_yq_CNY.read(cell_typeout2)
sleep(1)
#比对删除数据
if cell_in1==cell_out2 and cell_in1!=None and cell_out2!=None:
sheet_yq_CNY.delete(result_yq_CNY[q][0])
sheet_yq_CNY.delete(result_yq_CNY[p][0])
count_max -=2
count_min =4
break
if cell_in2==cell_out1 and cell_in2!=None and cell_out1!=None:
sheet_yq_CNY.delete(result_yq_CNY[1][0])
sheet_yq_CNY.delete(result_yq_CNY[0][0])
count_max -=2
count_min =4
break
sleep(1)
count_min +=1
excel_yq_CNY.save()
sleep(1)