python excel中列数据比对_Python3.7 比较两个Excel文件指定列的值的异同,并将核对结果写入Excel中...

importxlrdimportxlwtimporttime

origin_dict= {} #初始化,用于保存源文件{key(主键):value(需要核对的列值)}

target_dict = {} #初始化,用于保存目标文件{key(主键):value(需要核对的列值)}

#放在函数外部声明 会报错 还不晓得原因#success = 0#fail = 0

defcompare_excel(ori_path,tar_path,col_ori,col_tar):'''ori_path:用于存放源文件

tar_path:用于存放目标文件

col_ori:源文件中需要比较的列

col_tar:目标文件中需要比较的列'''success= 0 #核对无差异的个数

fail = 0 #核对结果有差异的个数

row_res = 0 #要写入的文件的行

#分别打开源文件与目标文件

wb_ori =xlrd.open_workbook(ori_path)

wb_tar=xlrd.open_workbook(tar_path)#新建一个excel,用于存放核对结果

wb_res =xlwt.Workbook()#分别获取源文件与目标文件的sheet

sheet_ori =wb_ori.sheet_by_index(0)

sheet_tar=wb_tar.sheet_by_index(0)#新建一名称为result的sheet页,用于存放核对具体结果

sheet_res = wb_res.add_sheet('result')#获取源文件中由主键、需核对列组成的键值对,放入字典中

for row_ori in range(1,sheet_ori.nrows):

cell_ori_key= sheet_ori.cell_value(row_ori,0) #因我的源文件的主键位于第0列,故该列未参数化,大家可以视自己实际情况进行优化

cell_ori_value =sheet_ori.cell_value(row_ori,col_ori)

origin_dict[cell_ori_key]=cell_ori_value#print('源文件获取成功')

#print('源文件如下:%s' % origin_dict)

#获取目标文件中由主键、待核对列组成的键值对,放入字典中

for row_tar in range(1,sheet_tar.nrows):

cell_tar_key=sheet_tar.cell_value(row_tar,0)

cell_tar_value=sheet_tar.cell_value(row_tar,col_tar)

target_dict[cell_tar_key]=cell_tar_value#print('目标文件获取成功')

#print('目标文件如下:%s' % target_dict)

#核对逻辑

try:for i in origin_dict.keys(): #获取源文件字典的键

if target_dict.get(i) == origin_dict.get(i): #对比两个字典中相同键的值

success += 1 #值相等,则无差异数+1

sheet_res.write(row_res+1,0,i) #将键写入结果文件的第0列

sheet_res.write(row_res+1,1,'你俩长一样') #将核对无差异结果写入结果文件的第1列

row_res += 1 #结果文件行数+1

print('金融产品 %s 核对无差异'%i)else:

fail+=1 #值不相等,则有差异数+1

sheet_res.write(row_res+1,0,i)

sheet_res.write(row_res+1,1,'核对有差异:源文件的值为:%s,目标文件的值为:%s' % (origin_dict.get(i),target_dict.get(i))) ##将核对有差异结果写入结果文件的第1列

row_res += 1 #结果文件行数+1

print('金融产品 %s 核对有差异:源文件的值为:%s,目标文件的值为:%s' %(i,origin_dict.get(i),target_dict.get(i)))

wb_res.save('result.xlsx') #保存结果文件

print(time.strftime('%Y-%m-%d %H-%M-%S',time.localtime())+'核对完成,共核对 %d 条,其中无差异 %d 条, 有差异 %d条' %(len(origin_dict),success,fail))exceptException as error:print(str(error))

compare_excel('C111111.xlsx','O222222.xlsx',3,2) #核对源文件第4列,目标文件第3列

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值