Cou氏の徒然日記

ほのぼの日記ブログです。

Python3の学習 その23 (Excelファイルの読み込み・書き込み)

Python

 

今回はExcelファイルからの取得と書き込みについて。

Excelのアクセスには、やはりopenpyxlがよさそうです。

試しに、source.xlsx の sheet1 の内容を destination.xlsx の sheet1 にコピーする処理を作ってとGeminiに聞いてみると、こんな感じ。

 

from openpyxl import load_workbook, Workbook

# 複写元のExcelファイルを読み込む
source_workbook = load_workbook('source.xlsx')
source_sheet = source_workbook['Sheet1']

# 複写先のExcelファイルを読み込む(存在しない場合は新規作成)
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

# 複写先のExcelファイルを保存
destination_workbook.save('destination.xlsx')

 

試しに動かしてみると…

[source.xlsx]

 

[destination.xlsx]

確かにできています。

(コピー範囲を A1:C5 としているので確かにあっています)

 

ちなみに最初に聞いたときは、

Workbook() の importが抜けていたコードが出てきたので、実行時エラーになりましたが、それを指摘してみると、パッと手直ししてきましたので。

 

 

もう生成AIに聞けば、これくらいのコードは簡単に書いてくれるので、自分で考えてコードを書くというのは今後はどんどん減っていくんでしょうね。

もちろん、AIが生成したコードを鵜吞みにするのではなく、内容を吟味して自分で実際に動かして確認してみる…というのが大切ですので、AIが書いたコードをチェックするというのがメインになっていくのかもしれません。

 

Python in Excel の登場

ちなみに、最近ネットニュース等でも、「Python in Excel」という機能が出てくると言う話が出ています。

まだ一般公開はされていないみたいですが、ExcelPythonが使えるようになるのはかなり楽になりそうですし、VBAからPythonにどんどん切り替わっていくんでしょうかね。