PYTHON 两个EXCEL文件数据对比

解决问题:对比文件A和文件B,查找文件A中文件B的数据,如果有,则高亮背景绿色显示。

文件A:source.xlsx

文件B: dest.xlsx

from openpyxl import Workbook
from openpyxl import load_workbook
from openpyxl.styles import Alignment,Border,Side,PatternFill
def read_workbook(filename):
    wb = load_workbook(filename)
    #print(wb.sheetnames)
    return wb
def find_different(sourfile, sourcesheet,destfile, destsheet):
    #print("find_different \n")
    sourWB = read_workbook(sourfile)
    sourSheet = sourWB[sourcesheet]
    destWB = read_workbook(destfile)
    destSheet = destWB[destsheet]
    initfill = PatternFill('solid')
    flag = False
    fill = PatternFill('solid', fgColor="00FF00")
    border = \
        Border(left=Side(style='thin', color='00000000'),
               bottom=Side(style='thin', color='00000000'),
               right=Side(style='thin', color='00000000'),
               top=Side(style='thin', color='00000000'))
    initborder = \
        Border(left=Side(style='thin', color='00000000'),
               bottom=Side(style='thin', color='00000000'),
               right=Side(style='thin', color='00000000'),
               top=Side(style='thin', color='00000000'))

    differences = []
    #遍历两个工作表的行和单元格
    for row1 in sourSheet.iter_rows(min_row=3,max_row=None,min_col=1,max_col=1,values_only=False):
        for cell1 in row1:
            value1 = cell1.value
            if value1:
                for row2 in destSheet.iter_rows(min_row=11,max_row=None,min_col=4,max_col=4,values_only=False):
                    for cell2 in row2:
                        value2 = cell2.value
                        if value2 == value1:
                            flag = True
                            #print(f"find the same: {value1},{value2}")
                            cell1.border = border
                            cell1.fill = fill
                            break
                        else:
                            flag = False
                            #print(f"Can't find the same: {value1}")
                            #没有找到匹配的单元格,记录下来
                            #cell1.border = initborder
                            #cell1.fill = initfill
                            #differences.append((cell1.row,cell1.column, value1))
            if flag == False:
                #cell1.border = initborder
                #cell1.fill = initfill
                differences.append(cell1)


    print(differences)
    sourWB.save(sourfile)
    destWB.save(destfile)

    return
def read_sheet2():
    myworkbook = load_workbook("test.xlsx")
    sheet = wb["工作表1"]
    #rows = sheet.cell(row=1, column=3)
    for rows in sheet:
        for cell in rows:
            print(cell.value,end=" ")
    return
def create_mysheet(filename):
    myworkbook = load_workbook(filename)
    wb.save(filename)
    sheet = wb.active
    sheet2 = wb.create_sheet("工作表1")
    sheet3 = wb.create_sheet("工作表2")

    return wb
#创建一个工作表
wb = Workbook()
wb.save("test1.xlsx")
wb = create_mysheet("test1.xlsx")
#保存为本地excel文件
sheet = wb.active
sheet2 = wb['工作表1']
sheet3 = wb['工作表2']
sourceFile = f"MCU_CDCU_CommunicationMatrix.xlsx"
destFile = f"F57_CDCU_Testcase_下行测试用例Lev2.xlsx"
sourceSheet = f"IVIToMCU"
destSheet = f"TC"

find_different(sourceFile,sourceSheet, destFile, destSheet)

#在前3行,前6列输入数据
for i in range(1,3):
    for j in range(1,6):
        cell = sheet.cell(row= i, column= j, value= 111)
        cell.alignment = Alignment(horizontal="center", vertical="center")
        cell.border =\
            Border(left=Side(style='thin', color='00000000'),
            bottom=Side(style='thin', color='00000000'),
            right=Side(style='thin', color='00000000'),
            top=Side(style='thin', color='00000000'))
        cell.fill = PatternFill('solid', fgColor="00FF00")
        sheet2.cell(row= i, column= j, value= 222)
        sheet3.cell(row=i, column=j, value=333)

#for s in wb:
    #print(s.title)
current = wb["工作表1"]

#read_sheet2()
wb.save("工作表1")

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你需要比较两个Excel文件并进行替换操作,可以使用pandas库来处理Excel文件,具体的操作步骤如下: 1. 首先,使用pandas的`read_excel()`函数读取两个Excel文件,并将它们分别存储为两个DataFrame对象。 ```python import pandas as pd # 读取两个Excel文件 df1 = pd.read_excel('file1.xlsx') df2 = pd.read_excel('file2.xlsx') ``` 2. 然后,使用pandas的`merge()`函数将两个DataFrame对象合并为一个新的DataFrame对象。在合并的过程中,需要指定一个或多个关键字列,这些列将用于匹配两个数据集中的记录。 ```python # 合并两个DataFrame对象 merged_df = pd.merge(df1, df2, on=['关键字列1', '关键字列2'], how='outer') ``` 在上面的代码中,`on`参数指定了用于比较的关键字列,`how`参数指定了合并的方式,这里使用了`outer`表示使用外连接的方式合并两个数据集。 3. 接下来,遍历新的DataFrame对象,并根据需要进行替换操作。例如,可以使用pandas的`loc[]`函数来选择需要替换的记录,并使用`at[]`函数将指定列的值替换为新的值。 ```python # 遍历新的DataFrame对象,进行替换操作 for index, row in merged_df.iterrows(): if row['需要替换的列'] == '原始值': merged_df.at[index, '需要替换的列'] = '新的值' ``` 4. 最后,将修改后的结果保存到一个新的Excel文件中。 ```python # 将结果保存到新的Excel文件中 merged_df.to_excel('result.xlsx', index=False) ``` 完整的代码如下: ```python import pandas as pd # 读取两个Excel文件 df1 = pd.read_excel('file1.xlsx') df2 = pd.read_excel('file2.xlsx') # 合并两个DataFrame对象 merged_df = pd.merge(df1, df2, on=['关键字列1', '关键字列2'], how='outer') # 遍历新的DataFrame对象,进行替换操作 for index, row in merged_df.iterrows(): if row['需要替换的列'] == '原始值': merged_df.at[index, '需要替换的列'] = '新的值' # 将结果保存到新的Excel文件中 merged_df.to_excel('result.xlsx', index=False) ``` 需要注意的是,这个例子只是一个简单的示例,仅用于演示如何使用pandas比较和替换两个Excel文件。实际应用中,可能需要根据实际情况进行修改和调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值