import openpyxl as vb from openpyxl import Workbook # 读取 需要对比的excel表 # 代表表1 workbook_a = vb.load_workbook(r"D://a//表1.xlsx") # 代表表2 workbook_b = vb.load_workbook(r"D://a//表2.xlsx") # 读取需要对比的sheet名 sheet_a = workbook_a['Sheet1'] sheet_b = workbook_b['Sheet1'] # 遍历所有的行与列 #.max_row最大行 maxrow_a = sheet_a.max_row #.max_column最大列 maxcolumn_a = sheet_a.max_column maxrow_b = sheet_b.max_row maxcolumn_b = sheet_b.max_column data_a = {} data_b = {} #key 出现重复时,会得到最后一次出现的key和value #表1 for i in range(1, int(maxrow_a) + 1): cell_a_k = sheet_a.cell(i, 1) c_a_k = str(cell_a_k.value) data_a_v =[] for j in range(2, int(maxcolumn_a)+1): cell_a_v = sheet_a.cell(i,j) c_a_v = str(cell_a_v.value) data_a_v.append(c_a_v) data_a[c_a_k] = data_a_v # print(data_a) # 表2 for i in range(1, int(maxrow_b) + 1): cell_b_k = sheet_b.cell(i, 1) c_b_k = str(cell_b_k.value) data_b_v =[] for j in range(2, int(maxcolumn_b) + 1): cell_b_v = sheet_b.cell(i, j) c_b_v = str(cell_b_v.value) data_b_v.append(c_b_v) data_b[c_b_k] = data_b_v # print(data_b) #表1有表2没有 data_aa={} for key,value in data_a.items(): if key not in data_b.keys(): print(key,value) #setdefault()方法用于添加键值,如果键存在,则返回其值,不进行修改;如果键不存在,则添加新的键值对,并返回新值。 data_aa.setdefault(key,value) workbook_1 = Workbook() worksheet_1 = workbook_1.active # 写入表头 row = 1 column = 1 for key in data_aa.keys(): worksheet_1.cell(row, column, key) row += 1 # 写入数据 column += 1 for values in zip(*data_aa.values()): row = 1 for value in values: worksheet_1.cell(row, column, value) row += 1 column += 1 # 保存文件 workbook_1.save("D://a//表1有表2没有.xlsx") #表2有表1没有 data_bb={} for key,value in data_b.items(): if key not in data_a.keys(): print(key,value) data_bb.setdefault(key,value) workbook_2 = Workbook() worksheet_2 = workbook_2.active # 写入表头 row = 1 column = 1 for key in data_bb.keys(): worksheet_2.cell(row, column, key) row += 1 # 写入数据 column += 1 for values in zip(*data_bb.values()): row = 1 for value in values: worksheet_2.cell(row, column, value) row += 1 column += 1 # 保存文件 workbook_2.save("D://a//表2有表1没有.xlsx")
版权属于:
Landscape
文章声明:
本文版权内容属于《FreeBlog》转载请标明出处
评论一下?