2つのExcelファイルの差分抽出プログラム
Q&A
Closed
解決したいこと
2つのExcelファイルを比較して、差分を新たなExcelファイルに出力するプログラムを作成しているのですが、比較するファイルにシートが1つではなく複数あった場合で差分を出力できるようにしたいです。
発生している問題・エラー
UnboundLocalErro「cannot access local variable 'sheet_name' where it is not associated with a value」と出てしまい実行できません。
該当するソースコード
import pandas as pd
def compare_excel_files(file_path1, file_path2,sheet_names):
# シート名を指定
sheet_name = 'シート名1,シート名2'
# 出力データを格納するリスト
output_data = []
# Excelファイルを読み込む
df01 = pd.read_excel(file_path1, sheet_name=sheet_name)
df02 = pd.read_excel(file_path2, sheet_name=sheet_name)
for sheet_name in sheet_names:
# データの差分を抽出
df1=df01[sheet_name]
df2=df02[sheet_name]
diff_data = df2[df2 != df1]
diff_data.dropna(how='all', inplace=True)
# 差分がある場合は出力データに追加
if not diff_data.empty:
# 差分データを整形して出力データに追加
for row_index, row in diff_data.iterrows():
for col_name, cell_value in row.iteritems():
if pd.notnull(cell_value):
# シート名、セル、Excel1ファイルの該当する内容、Excel2ファイルの該当する内容を出力データに追加
output_data.append([sheet_name, f"{col_name}{row_index}", df1.loc[row_index, col_name], df2.loc[row_index, col_name]])
# 出力データをDataFrameに変換
output_df = pd.DataFrame(output_data, columns=['Sheet Name', 'Cell', 'Excel1', 'Excel2'])
# 出力データをExcelファイルに保存
output_df.to_excel("出力ファイル名.xlsx", index=False)
# ファイルのパスを指定してデータを比較
file_path1 = "Excel1.xlsx"
file_path2 = "Excel2.xlsx"
sheet_names=['シート名1','シート名2']
compare_excel_files(file_path1, file_path2,sheet_names)
自分で試したこと
差分プログラムの作成
0