Pythonでエクセルブックを上書き保存する方法(openpyxl)

AIや機械学習用で利用が多いプログラミング言語Pythonでは、表計算ソフトのエクセルのファイルも操作することができます。

Pythonのエクセル操作で最も利用されているopenpyxlライブラリを使い、既存のExcelブックを開いて編集し、エクセルファイルを上書き保存する方法を解説します。

Pythonはエクセル操作の業務改善にも利用可能

Pythonは近年、AIや機械学習などのプログラミング言語として人気を集めています。

しかし、Pythonの利用範囲は非常に多く、Webアプリケーションの制作にも活用されています。

さらに、Pythonでエクセルなどのオフィスアプリケーションも操作可能です。

そのため、Pythonを活用することでエクセルのデータ処理やファイル生成の自動化が実現できます。

最近はプログラマー以外もPythonを活用してエクセル関連の業務改善に取り組んでいる人も多いです。

エクセル操作用openpyxlライブラリインストール方法

Pythonでエクセルのブックやシートを操作するには、それ用のライブラリをインストールする必要があります。

Pythonのエクセル操作用ライブラリとして最も有名なのが「openpyxl」です。

openpyxlライブラリを利用するには、Pythonのライブラリをインストールするpipコマンドを使用します。

Pythonでエクセル操作ができるopenpyxlライブラリはpipコマンドを使い「pip install openpyxl」でインストール

※その前にPythonのインストールしておきましょう。

opnepyxlをインストールすることで、メソッドを実行して各種エクセル操作ができるようになります。

Excelブックの上書き保存は新規作成と同じsaveメソッド

Pythonのopenpyxlライブラリを使って、エクセルブックを上書きしたい場合は、新規作成と同じようにsaveメソッドを使用します。

※PythonでExcelのブックを新規作成して名前をつけて保存する方法は下記の記事で解説しています。

Pythonでエクセルの上書き保存するには、まず既存のエクセルファイルを開き、編集後に保存します。

openpyxlのsaveメソッドでエクセルブックを保存する際に、引数に指定する名前を開いたエクセルファイルと同じにすると上書き保存になります。

PythonのopenpyxlでExcelブックを上書き保存

実際にPythonのopenpyxlライブラリで、エクセルブックを開いて編集後に上書き保存するサンプルコードを解説します。

Pythonのopenpyxlライブラリを利用して作成されたエクセルブック

上記ようなsample.xlsxのエクセルブックを開いた後、セルの値を修正して上書き保存するPythonプログラムです。

Pythonのopenpyxlライブラリで、エクセルブックを開いて編集後に上書き保存するサンプルコード
#openpyxlライブラリのインポート
import openpyxl

#すでに存在するExcelワークブックを読み込む
wb = openpyxl.load_workbook(r"sample.xlsx")
#ワークブック内のアクティブなシートを取得
ws = wb.active
#シート内のA1セルに文字列を入力
ws["A1"] = '上書きテスト'
#saveメソッドで同じ名前で上書き保存
wb.save(r"sample.xlsx")

Pythonのサンプルコードを実行すると、先程のエクセルブックの中身が書き換わっているのが確認できます。

Pythonのopenpyxlライブラリでエクセルブックの上書き保存した結果セルが書き換わる

同じエクセルのファイル名でsaveメソッドで保存することで、ファイルを上書き保存することができました。

Pythonでエクセルの上書き保存する際の注意点

PythonでExcelブックの上書き保存する際には注意点があります。

Pythonで上書き保存を行う処理を行う時は、当該のエクセルファイルを端末で開いてはいけない点です。

Pythonで上書き保存したいExcelファイルを端末で開いた状態で、先程のサンプルコードを実行すると、実行エラーが生じます。

Pythonでエクセルブックの上書き保存する場合、端末で当該のエクセルファイルを開いていると保存でエラー

「PermissionError: [Errno **] Permission denied: 'sample.xlsx’」というエラーメッセージで、パーミッションエラーが記録されています。

すでに端末でエクセルを開いていると、そちらが権限を保持しているため、Pythonから上書き保存ができません。

Pythonでエクセルの上書き保存したい場合は、端末でエクセルを開かないよう注意しましょう。

特にコードを修正しながら、上書き保存内容をチェックしていると、エクセルブックを開きっぱなしにしてエラーすることがあります。

まとめ・終わりに

今回、Pythonのopenpyxlライブラリを使い、エクセルブックの上書き保存をする方法を紹介しました。

エクセルブックの上書き保存は新規作成と同じようにsaveメソッドを使用しますが、既存のエクセルブックと同じ名前を引数に指定します。

エクセルの上書き保存ができると、収集したデータを1つのエクセルに記録していくことなどが可能です。

ただ、エクセルファイルを端末で起動していると、保存時にエラーしてしまうことがあります。

共有ファイルのエクセルブックなどは他の人が開いていると保存エラーで、Pythonの上書き保存に失敗することがあるので注意しましょう。

Pythonでエクセルの上書き保存ができると、情報の更新などに活用できるので、Excelブックの上書き保存方法を覚えておきましょう。