侧边栏壁纸
  • 累计撰写 26 篇文章
  • 累计收到 0 条评论

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

2026-5-14 / 0 评论 / 425 阅读
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")

评论一下?

OωO
取消