こんにちは。
今回は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')
エクセルファイルのすべての範囲を見ていますので、かなり便利なマージプログラムになります。