2つのExcelファイルをD&Dすると変更箇所列のみ抽出し変更部分を赤でマーキング
import argparse import openpyxl import pandas as pd def cmd(files): df1 = pd.read_excel(files[0], header=0, index_col=0) df2 = pd.read_excel(files[1], header=0, index_col=0) # 欠損値を""に置換 df1.fillna("", inplace=True) df2.fillna("", inplace=True) # 変更箇所 df_diff = df2.combine(df1, lambda l, r: l != r) # 変更列のみ抽出 df3 = df2[df_diff.any(1)] # ファイル保存 df3.to_excel("diff.xlsx") # 行数・列数取得 row, col = df3.shape # 変更リスト diff = df_diff[df_diff.any(1)].values.tolist() # excel # ファイル読み込み wb = openpyxl.load_workbook("diff.xlsx", data_only=True) ws = wb.active for y in range(row): for x in range(col): # 変更箇所を赤 if diff[y][x]: cel = ws.cell(row=y + 2, column=x + 2) cel.fill = openpyxl.styles.PatternFill("solid", fgColor="FFFF0000") wb.save("diff_red.xlsx") if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("file", nargs=2) args = parser.parse_args() cmd(args.file)