使用Python对比两个excel表格中的重复数据

几天前,单位同事遇到一个难题,需要将两个电子表格中的数万条数据进行对比,找到其中的重复数据,电子表格也有这个功能,但是因为数据量太大,起动对比之后计算机就卡死了。

我听了他的介绍之后,告诉他,我可以用Python试一试。

于是让他把数据传给我,开始研究起来,花了1个小时终于把代码调好了,总计23行代码,结果立马呈现出来了,小有成就。

但是还是不够完美,为了让程序能够适应所有要对比的数据,并生成一个新的电子表格,陆续又做了一些改进,总计32行代码,把代码晒出来,分享一下:

from openpyxl import load_workbook, Workbook        #导入模块

wb1 = load_workbook('D:\peple\excel01.xlsx')         #打开工作簿,并创建一个工作簿对象wb1
wb2 = load_workbook('D:\peple\excel02.xlsx')

a_wb = wb1['导出']        #创建一个工作表对象
b_wb = wb2['导出']

a_wb_max_row = len(a_wb['A'])
b_wb_max_row = len(b_wb['A'])

c=[]        #建立一个空列表,用于存放对比出来的相同数据

for row in a_wb.iter_cols(min_row=1, max_row=a_wb_max_row, min_col=1, max_col=1, values_only=True):    #历遍工作表对象制定区域的数值
    row1 = list(row)    #将元祖转换我列表
for row in b_wb.iter_cols(min_row=1, max_row=b_wb_max_row, min_col=1, max_col=1, values_only=True):
    row2 = list(row)

for i in row1:
    if i in row2:   #如果包含则返回循环
        break
    else:       #如果不包含,则把值保存到c列表中
        c.append(i)

wb3 = Workbook()    #创建新工作簿对象
c_wb = wb3.active   #创建活动工作表对象

for i in range(len(c)):     #将列表分行写入工作表对象
    d=[c[i]]
    c_wb.append(d)

wb3.save('D:\peple\mynewdata.xlsx')       #保存数据到新工作簿

你可能感兴趣的:(Python高效办公,python)