# !/usr/bin/python # -*-coding:utf-8-*- from openpyxl import load_workbook from utils.handle.save_excel_union import save_to_excel # 1.读取sqlResult文件 def sqlResult(path, sheetname, max_row): # 打开指定文件wrok, 选择sheet; wb = load_workbook(path) sheet = wb.get_sheet_by_name(sheetname) list_sqlResult = [] for i in range(1, int(max_row)): i+=1 dict_sqlResult = {} dict_sqlResult[‘mer_code‘] = sheet[‘D{}‘.format(i)].value # --> 指定单元格数据 # 获取agent_user_id agent_user_id = sheet[‘G{}‘.format(i)].value if agent_user_id == 3: agent_user_id = u‘闪银掌柜‘ elif agent_user_id == 4: agent_user_id = u‘创富通‘ elif agent_user_id == 6: agent_user_id = u‘一键联支付‘ elif agent_user_id == None: agent_user_id = ‘‘ elif agent_user_id == 14: agent_user_id = u‘厦门吉事多‘ elif agent_user_id == 13: agent_user_id = u‘中财支付‘ elif agent_user_id == 12: agent_user_id = u‘内蒙古懒人网络科技有限公司‘ elif agent_user_id == 11: agent_user_id = u‘快汇支付‘ elif agent_user_id == 10: agent_user_id = u‘创富通002‘ elif agent_user_id == 9: agent_user_id = u‘星译付信息科技南通有限公司‘ elif agent_user_id == 8: agent_user_id = u‘云付泰‘ elif agent_user_id == 7: agent_user_id = u‘莘丽支付‘ dict_sqlResult[‘agent_user_id‘] = agent_user_id list_sqlResult.append(dict_sqlResult) # print(list_sqlResult) return list_sqlResult # 执行函数 # sqlResult(‘/home/python/excel_exe/excel_docs/sqlResult_1576221.xlsx‘, ‘sqlResult_1576221‘) # 2.读取对账单 def read_checkbox(path, sheetname, max_row): # 打开指定文件wrok, 选择sheet; wb = load_workbook(path) sheet = wb.get_sheet_by_name(sheetname) list_check = [] for i in range(1, int(max_row)): i+=1 dict_check = {} dict_check[u‘商户号‘] = sheet[‘J{}‘.format(i)].value # --> 指定单元格数据 dict_check[u‘费率‘] = sheet[‘K{}‘.format(i)].value dict_check[u‘结算费率‘] = 0.025 dict_check[u‘交易金额‘] = sheet[‘M{}‘.format(i)].value dict_check[u‘交易时间‘] = sheet[‘C{}‘.format(i)].value # dict_check[‘结算金额‘] = (dict_check[‘费率‘]-dict_check[‘结算费率‘])*1280 list_check.append(dict_check) return list_check # 执行函数 # read_checkbox(‘/home/python/excel_exe/excel_docs/1101-1130对账-首瀚无卡优惠类.xlsx‘, ‘账账通终端交易查询‘) # 3.对比产生最终数据 # 最后要的数据 final_list = list() # 获取两个列表对象 # 调用函数1,读取sqlResult文件 check_obj = read_checkbox(u‘/home/python/excel_exe/excel_docs/1101-1130对账-首瀚无卡优惠类.xlsx‘, u‘账账通终端交易查询‘, 4603) # 调用函数2,读取对账单 sqlResult_obj = sqlResult(‘/home/python/excel_exe/excel_docs/sqlResult_1576221.xlsx‘, ‘sqlResult_1576221‘, 30786) for check_dict in check_obj: mer_code = check_dict[u‘商户号‘] for sqlResult in iter(sqlResult_obj): # 如果mer_code不在另一个文件中呢? # if mer_code not in sqlResult. if mer_code == sqlResult[‘mer_code‘]: check_dict[u‘第三方代理‘] = sqlResult[‘agent_user_id‘] # print(check_dict[‘第三方代理‘]) final_list.append(check_dict) # 转移excel表中 save_to_excel(‘/home/python/excel_exe/excel_docs/final_excel.xlsx‘, final_list)
# !/usr/bin/python # -*-coding:utf-8-*- from openpyxl import Workbook # 动态保存 def dynamic_save(wb, i, field, agent, index): all_sheets = wb.get_sheet_names() print(agent) if agent not in all_sheets: # create一张sheet wb.create_sheet(agent, index=index) sheet = wb.get_sheet_by_name(agent) print(sheet) # 如果sheet存在,不添加 sheet[‘A%d‘ % i] = agent print(u‘到这里了吗-----------------‘) sheet[‘B%d‘ % i] = field[u‘商户号‘] sheet[‘C%d‘ % i] = field[u‘费率‘] sheet[‘D%d‘ % i] = ‘0.25%‘ sheet[‘E%d‘ % i] = field[u‘交易金额‘] sheet[‘F%d‘ % i] = "=ROUND((C%d-D%d)*E%d, 2)" % (i, i, i) sheet[‘G%d‘ % i] = field[u‘交易时间‘] return sheet # 静态保存 def static_save(sheet): sheet[‘A1‘] = u"第三方代理" sheet[‘B1‘] = u"商户号" sheet[‘C1‘] = u"费率" sheet[‘D1‘] = u"结算费率" sheet[‘E1‘] = u"交易金额" sheet[‘F1‘] = u"结算金额" sheet[‘G1‘] = u"交易时间" # 4.存到excel表中 def save_to_excel(dest_filename, final_list): # 新建文件 wb = Workbook() # 创建当前工作表 sheet = wb.active sheet.title = u"创富通" # 静态保存 static_save(sheet) i_c = 2 i_syzg = 2 i_yj = 2 i_xmjsd = 2 i_z = 2 i_n = 2 i_k = 2 i_c2 = 2 i_xy = 2 i_slzf = 2 i_yft = 2 i_wcl = 2 for field in final_list: if field[u‘第三方代理‘] == u‘创富通‘: sheet = wb.get_sheet_by_name(u‘创富通‘) sheet[‘A%d‘% i_c] = u‘创富通‘ sheet[‘B%d‘ % i_c] = field[u‘商户号‘] sheet[‘C%d‘ % i_c] = field[u‘费率‘] sheet[‘D%d‘ % i_c] = ‘0.25%‘ sheet[‘E%d‘ % i_c] = field[u‘交易金额‘] sheet[‘F%d‘ % i_c] = "=ROUND((C%d-D%d)*E%d, 2)" % (i_c, i_c, i_c) sheet[‘G%d‘ % i_c] = field[u‘交易时间‘] i_c += 1 elif field[u‘第三方代理‘] == u‘闪银掌柜‘: # 动态数据函数 sheet = dynamic_save(wb, i_syzg, field, field[u‘第三方代理‘], 1) i_syzg += 1 # 静态数据函数 static_save(sheet) elif field[u‘第三方代理‘] == u‘一键联支付‘: # 动态数据函数 sheet = dynamic_save(wb, i_yj, field, field[u‘第三方代理‘], 2) i_yj += 1 # 静态数据函数 static_save(sheet) elif field[u‘第三方代理‘] == u‘厦门吉事多‘: # 动态数据函数 sheet = dynamic_save(wb, i_xmjsd, field, field[u‘第三方代理‘], 3) i_xmjsd += 1 # 静态数据函数 static_save(sheet) elif field[u‘第三方代理‘] == u‘中财支付‘: # 动态数据函数 sheet = dynamic_save(wb, i_z, field, field[u‘第三方代理‘], 4) i_z += 1 # 静态数据函数 static_save(sheet) elif field[u‘第三方代理‘] == u‘内蒙古懒人网络科技有限公司‘: # 动态数据函数 sheet = dynamic_save(wb, i_n, field, field[u‘第三方代理‘], 5) i_n += 1 # 静态数据函数 static_save(sheet) elif field[u‘第三方代理‘] == u‘快汇支付‘: # 动态数据函数 sheet = dynamic_save(wb, i_k, field, field[u‘第三方代理‘], 6) i_k += 1 # 静态数据函数 static_save(sheet) elif field[u‘第三方代理‘] == u‘创富通002‘: # 动态数据函数 sheet = dynamic_save(wb, i_c2, field, field[u‘第三方代理‘], 7) i_c2 += 1 # 静态数据函数 static_save(sheet) elif field[u‘第三方代理‘] == u‘星译付信息科技南通有限公司‘: # 动态数据函数 sheet = dynamic_save(wb, i_xy, field, field[u‘第三方代理‘], 8) i_xy += 1 # 静态数据函数 static_save(sheet) elif field[u‘第三方代理‘] == u‘云付泰‘: # 动态数据函数 sheet = dynamic_save(wb, i_yft, field, field[u‘第三方代理‘], 9) i_yft += 1 # 静态数据函数 static_save(sheet) elif field[u‘第三方代理‘] == u‘莘丽支付‘: # 动态数据函数 sheet = dynamic_save(wb, i_slzf, field, field[u‘第三方代理‘], 10) i_slzf += 1 # 静态数据函数 static_save(sheet) elif field[u‘第三方代理‘] == ‘‘: # 动态数据函数 sheet = dynamic_save(wb, i_wcl, field, u‘待处理‘, 11) i_wcl += 1 # 静态数据函数 static_save(sheet) wb.save(filename=dest_filename)