PandasでExcelのシートの比較し変更箇所を赤でマーキング

teratail.com

pandas.pydata.org

pandas.pydata.org

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)