openpyxlで既存のエクセルファイルを編集して保存したいんだけど、
ショートカットを作っているファイルだから、このファイルに上書き保存したい…。
なるほど…。
別名保存すると、元ファイルが更新されないから都合が悪いということですね…。
では今回は、「openpyxlで既存のエクセルファイルに上書き保存する方法」を
できるだけわかりやすく解説いたします。
openpyxlで既存のエクセルファイルに上書き保存する方法
「save()」を使って元データと同じファイルパスを指定します。
まずは全コードと実行結果をお見せします。
解説は後ほど行います。
全コード
既存のエクセルファイルのA1セルに「上書き保存」と書き込みして上書き保存した例です。
import openpyxl
wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
ws = wb['Sheet1']
ws['A1'].value = '上書き保存'
wb.save('C:/Utatane/input.xlsx')
wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
wb.save('C:/Utatane/input.xlsx')
実行結果
事前準備
- openpyxlのインストール
既存のエクセルファイルを編集するには「openpyxl」のインストールが必要です。
openpyxlのインストール方法
openpyxlを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install openpyxl
※openpyxlを使用したことがある場合は、このインストール作業は不要です。
インストールに関する詳細や、インストールができなかった場合の対処法は下記記事で解説しております。
また、既存ファイルを開いて保存する方法など、基本解説も行っておりますのでご参考ください。
解説
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
インポート~ブック・シートの取得
import openpyxl
wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
ws = wb['Sheet1']
上記コードにて、エクセル操作に必要な「openpyxl」のインポートと、エクセルブック・シートを取得しています。
詳細は、「インストール方法」の記事をご参考ください。
エクセルファイルを編集
ws['A1'].value = '上書き保存'
上記コードにて、エクセルファイルを編集しています。
今回は最も簡単な【A1セルに「上書き保存」】と書き込みする編集です。
ここは本題ではないため、解説は割愛します。
詳細は、「インストール方法」の記事をご参考ください。
上書き保存
ここからが本題です。
wb.save('C:/Utatane/input.xlsx')
上記コードにて、編集したエクセルファイルを上書き保存しています。
【コードの解説】
ワークブックを取得した変数(今回はwb)に続けて「.save()」を書きます。
()内には、「ワークブックを取得した時と同じファイルパス」を書いて完了です。
【ファイルパスとは?】
対象のファイルがどのフォルダに入っているのかを表したものです。
ファイルの住所だと思ってください。
今回は、「Cドライブ」の「Utatane」フォルダの中にある「input.xlsx」が対象なので、
「C:/Utatane/input.xlsx」がファイルパスになります。
#ワークブックを取得した時
wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
#上書き保存する時
wb.save('C:/Utatane/input.xlsx')
上書き保存する際は、()内のファイルパスが取得時と一致するようにしてください。
取得時のファイルパスをコピペするのが無難です。
一文字でも違っていると上書き保存されませんのでご注意ください。
上書き保存のしかたがわかったところで、注意点を紹介いたします。
上書き保存する際の注意点
便利な上書き保存ですが、注意すべき点があります。
- 元のファイルが失われる
- ファイルが破損する場合がある
openpyxlを使わない時と同じですが、上書き保存をすることで、元のファイルは失われてしまいます。
例えばA1セルに「おはよう」と書かれたファイルがあり、これを「こんにちは」に書き換えて上書き保存した場合、「おはよう」と書かれたファイルは存在しなくなってしまいます。
削除したわけではないため、ごみ箱にも入っていません。
さらには「列の削除」「シートの削除」などをすると、大切なデータが失われる可能性がありますのでご注意ください。
また、場合によってはファイルが破損する可能性があります。
別名保存をしていれば、元のファイルは安全ですが、上書き保存はこういう場合にリスクが大きいです。
定期的にバックアップをとるようにしましょう。
うまく動作しない場合の対処法
エラーが出る
No such file or directory: ○○
これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。
詳しい解説は、下記記事をご参考ください。
Permission denied: ○○
操作しようとしているファイルにアクセスできないというエラーです。
「ファイルを開いている状態なので編集できない」と言っていることが多いので、開いていれば閉じて再度トライしましょう。
詳しい解説は、下記記事をご参考ください。
Worksheet ○○ does not exist
「指定したシートがありません」というエラーです。
指定のシート名が間違っていないか、「sheet1」など先頭が小文字になっていないか確認しましょう。
詳しい解説は、下記記事をご参考ください。
○○ is not defined
今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。
詳しい解説は、下記記事をご参考ください。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
最後に
openpyxlで編集した既存のエクセルファイルを上書き保存する方法を解説いたしました。
当ブログでは、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
挫折せずにPythonを独学で学習する方法は特におすすめです。
最後までお読みいただき、ありがとうございました。がんばってください!