【PYTHONメモ】2つのエクセルファイル 異なる箇所だけ更新

PYTHON

こんにちは。

今回は2つのエクセルファイルの異なる箇所だけ更新するプログラムを紹介いたします。

プログラムの内容

例えば1つの入力表として使っているエクセルファイルがあるとします。

入力数が多いので、2人で入力を作業して最後にデータを合体させるということがあると思います。

その時に2人が作業範囲を昇順で決めて行っていれば、後からまとめてコピーペーストで済みますが、ランダムに入力している場合は、それぞれの入力場所を見ながらまとめていかなければなりません。

例えば下に2つのファイルがあります。

これをドッキングして下のファイルを作るわけです。

サンプルコード

from openpyxl import load_workbook
from openpyxl import Workbook

folder = 'C:/Labo/'

workbook1 = load_workbook(folder+'file1.xlsx')
sheet1 = workbook1['Sheet1']


workbook2 = load_workbook(folder+'file2.xlsx')
sheet2 = workbook2['Sheet1']

try:
    combined_workbook = load_workbook(folder+'combined_data.xlsx')
except FileNotFoundError:
    combined_workbook = Workbook()


combined_sheet = combined_workbook.active

max_rows = max(sheet1.max_row, sheet2.max_row)
max_cols = max(sheet1.max_column, sheet2.max_column)

for row in range(1, max_rows + 1):
    for col in range(1, max_cols + 1):
        cell1_value = sheet1.cell(row=row, column=col).value
        cell2_value = sheet2.cell(row=row, column=col).value
        combined_sheet.cell(
            row=row, column=col).value = cell1_value if cell1_value else cell2_value

combined_workbook.save(folder+'combined_data.xlsx')

エクセルファイルのすべての範囲を見ていますので、かなり便利なマージプログラムになります。

 

PYTHON
スポンサーリンク
シェアする
フォローする
タイトルとURLをコピーしました