天天看點

python對比excel重複資料_python入門之對比兩份excel表格資料

今天老大交給我一個任務,對比兩個版本的excel資料的異同(增删情況),唉,說多了都是淚,自從學會了python,再也不用擔心老大這樣的任務了~~~

好了直接上代碼吧,代碼中解釋

import xlrd

import xlwt

#from xlutils.copy import copy #暫時用不上

import os

l_p=[]#定義兩個全局list,分别存儲原始和目的需要對比的資料

l_t=[]

def read_excel():

wb_pri = xlrd.open_workbook('verp.xlsx')#打開原始檔案

wb_tar = xlrd.open_workbook('vert.xlsx')#打開目标檔案

wb_result = xlwt.Workbook()#建立一個檔案,用來儲存結果

sheet_result = wb_result.add_sheet('result',cell_overwrite_ok=True)

result_i =0

result_j =0

for sheet_i in range(2,21):

sheet_pri = wb_pri.sheet_by_index(sheet_i) #通過index擷取每個sheet,為了省心,我根據自己的需要限定為第2-21個sheet

sheet_tar = wb_tar.sheet_by_index(sheet_i)

sheet_backup = wb_backup.get_sheet(sheet_i)

print(sheet_pri.name,sheet_tar.name)

#為什麼是取這一列,因為這就是需要對比的資料阿

l_p = sheet_pri.col_values(2)

l_t = sheet_tar.col_values(2)

#tmp =[var for val in a if val in b] #這個是求交集,老大沒要求是用不上的

#求參數在pri(原始資料)中存在,而在tar(目标)中不存在的

tmp_pd = list(set(l_p).difference(set(l_t)))

#求參數在tar中存在,而在pri中不存在的

tmp_td = list(set(l_t).difference(set(l_p)))

if result_i

result_i =result_j

else:

result_j =result_i

for pd_i in tmp_pd:

result_i = result_i+1

sheet_result.write(result_i,0,sheet_pri.name)

sheet_result.write(result_i,2,pd_i)

for td_i in tmp_td:

result_j =result_j +1

sheet_result.write(result_j,1,sheet_tar.name)

sheet_result.write(result_j,3,td_i)

#好了,可以去名為result的excel中檢視結果了

wb_result.save('result.xls')

if __name__ == '__main__':

read_excel()