
今回はExcelファイルからの取得と書き込みについて。
Excelのアクセスには、やはりopenpyxlがよさそうです。
試しに、source.xlsx の sheet1 の内容を destination.xlsx の sheet1 にコピーする処理を作ってとGeminiに聞いてみると、こんな感じ。
from openpyxl import load_workbook, Workbook
source_workbook = load_workbook('source.xlsx')
source_sheet = source_workbook['Sheet1']
try:
destination_workbook = load_workbook('destination.xlsx')
except FileNotFoundError:
destination_workbook = Workbook()
destination_sheet = destination_workbook.create_sheet('Sheet1')
min_row = 1
max_row = 3
min_col = 1
max_col = 5
start_row = 1
start_col = 1
for row_idx, row in enumerate(source_sheet.iter_rows(min_row=min_row, max_row=max_row, min_col=min_col, max_col=max_col)):
for col_idx, cell in enumerate(row):
destination_row = start_row + row_idx
destination_col = start_col + col_idx
destination_sheet.cell(row=destination_row, column=destination_col).value = cell.value
destination_workbook.save('destination.xlsx')
試しに動かしてみると…
[source.xlsx]

[destination.xlsx]

確かにできています。
(コピー範囲を A1:C5 としているので確かにあっています)
ちなみに最初に聞いたときは、
Workbook() の importが抜けていたコードが出てきたので、実行時エラーになりましたが、それを指摘してみると、パッと手直ししてきましたので。

もう生成AIに聞けば、これくらいのコードは簡単に書いてくれるので、自分で考えてコードを書くというのは今後はどんどん減っていくんでしょうね。
もちろん、AIが生成したコードを鵜吞みにするのではなく、内容を吟味して自分で実際に動かして確認してみる…というのが大切ですので、AIが書いたコードをチェックするというのがメインになっていくのかもしれません。
ちなみに、最近ネットニュース等でも、「Python in Excel」という機能が出てくると言う話が出ています。
まだ一般公開はされていないみたいですが、ExcelでPythonが使えるようになるのはかなり楽になりそうですし、VBAからPythonにどんどん切り替わっていくんでしょうかね。
