python使用openpyxl做表格第一列比较

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")

posted @ 2025-05-08 23:32  try-hard  阅读(21)  评论(0)    收藏  举报