下図のようなエクセルデータがあるんだけど、
最終行に本日のデータを追加したい…。
なるほど…。
では今回は、「openpyxlでデータを最終行に追加する方法」を
できるだけわかりやすく解説いたします。
また、「最終行を削除する方法」も紹介いたしますので、
ぜひ最後まで読んでいってください。
openpyxlでデータを最終行に追加する方法
「max_row」を使います。まずは実行見本をどうぞ。
実行見本
最初に「全コード」と「実行結果」をお見せします。
解説は後ほど行います。
全コード
import openpyxl
wb = openpyxl.load_workbook('input.xlsx')
ws = wb['Sheet1']
last_row = ws.max_row
ws.cell(row=last_row+1, column=1).value = '0716'
ws.cell(row=last_row+1, column=2).value = 'OK'
ws.cell(row=last_row+1, column=3).value = 'utatane'
wb.save('output.xlsx')
実行結果
事前準備
- openpyxlのインストール
既存のエクセルファイルを編集するには「openpyxl」のインストールが必要です。
openpyxlのインストール方法
openpyxlを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install openpyxl
※openpyxlを使用したことがある場合は、このインストール作業は不要です。
インストールに関する詳細や、インストールができなかった場合の対処法は下記記事で解説しております。
また、既存ファイルを開いて保存する方法など、基本解説も行っておりますのでご参考ください。
解説
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
最終行を取得
last_row = ws.max_row
上記一文にて、最終行の行数を取得しています。
詳細は下記記事をご参考ください。
今回は最終行が5行目なので、「5」が取得されます。
取得した行数は変数「last_row」にひとまず保存しています。
データを最終行に追加
前項にて、最終行の行数を取得できました。
あとはそれを利用して、セルに書き込みするだけです。
ws.cell(row=last_row+1, column=1).value = '0716'
ws.cell(row=last_row+1, column=2).value = 'OK'
ws.cell(row=last_row+1, column=3).value = 'utatane'
まずはコードの8行目ですが、「セルA6」に日付を書き込む例です。
ワークシートが入った変数に続けて「.cell().value」を記述します。
()内に値を書き込むセルを指定しましょう。
セル指定については、下記記事をご参考ください。
row(行)は前項で取得したエクセルの最終行+1を指定します。
これでエクセルの最終行である5行目+1で、6行目を指定することができます。
column(列)は1を記述することで、A列を指定したことになり、結果「セルA6」に値を書き込むことができます。
本日の日付を取得したい場合は、下記記事をご参考ください。
コードの9行目・10行目も8行目と同様で、列(column)の数を増やし、右にズラしているだけです。
今回は値を直接書き込みましたが、変数や配列に入った値を書き込むこともできます。
目的に合った方法を試してみてください。
ws.cell(row=last_row+1, column=1).value = date
ws.cell(row=last_row+1, column=2).value = result
ws.cell(row=last_row+1, column=3).value = name
ws.cell(row=last_row+1, column=1).value = date0716[0]
ws.cell(row=last_row+1, column=2).value = date0716[1]
ws.cell(row=last_row+1, column=3).value = date0716[2]
openpyxlで最終行を削除する方法
前項のケースとは逆で、最終行を削除する方法を見ていきましょう。
import openpyxl
wb = openpyxl.load_workbook('input.xlsx')
ws = wb['Sheet1']
last_row = ws.max_row
ws.delete_rows(last_row)
wb.save('output.xlsx')
コードの6行目で最終行を取得し、
7行目でその最終行を削除を削除しています。
詳細は下記記事をご参考ください。
うまく動作しない場合の対処法
エラーが出る
No such file or directory: ○○
これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。
詳しい解説は、下記記事をご参考ください。
Permission denied: ○○
操作しようとしているファイルにアクセスできないというエラーです。
「ファイルを開いている状態なので編集できない」と言っていることが多いので、開いていれば閉じて再度トライしましょう。
詳しい解説は、下記記事をご参考ください。
Worksheet ○○ does not exist
「指定したシートがありません」というエラーです。
指定のシート名が間違っていないか、「sheet1」など先頭が小文字になっていないか確認しましょう。
詳しい解説は、下記記事をご参考ください。
○○ is not defined
今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。
詳しい解説は、下記記事をご参考ください。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
最後に
openpyxlでデータを最終行に追加する方法を解説いたしました。
当ブログでは、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
挫折せずにPythonを独学で学習する方法は特におすすめです。
最後までお読みいただき、ありがとうございました。がんばってください!