Pythonでエクセルを編集しているんだけど、
本日のデータや合計値を出すための新しい行が必要になった!
Pythonで行や列を追加・挿入する方法はないの?
あります!しかも簡単にできますよ!
さらに追加挿入する場合の注意点も解説いたします!
Pythonでエクセルファイルに行や列を追加挿入する方法を、
Python歴3年の私ができるだけわかりやすく解説し、解決に導きます。
Pythonでエクセルに行や列を追加挿入するには
「insert_cols()」「insert_rows()」を使います。まずは実行見本をどうぞ。
実行見本
全コード
ひとまず全コードを網羅します。解説は後ほど行います。
import openpyxl
wb = openpyxl.load_workbook('input.xlsx')
ws = wb['Sheet1']
ws.insert_rows(1)
ws.insert_cols(3)
wb.save('input.xlsx')
ws.insert_rows(1)
ws.insert_cols(3)
事前準備
- openpyxlのインストール
既存のエクセルファイルを編集するには「openpyxl」のインストールが必要です。
openpyxlのインストール方法
openpyxlを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install openpyxl
※openpyxlを使用したことがある場合は、このインストール作業は不要です。
解説
行を追加挿入する方法
>>6.ws.insert_rows(1)
この一文で行を追加挿入することができます。
()内には追加挿入する行番号(1だと一番上の1行目に追加挿入される)を記述します。
【 ワークシート変数.insert_rows(追加挿入する位置の行番号) 】
追加挿入された行より下の行は、順次下にズレます。
列を追加挿入する方法
>>7.ws.insert_cols(3)
上記が列を追加挿入する際の一文です。
()内には追加挿入する列番号(1だと一番左のA列に追加挿入される)を記述してください。
【 ワークシート変数.insert_cols(追加挿入する位置の列番号) 】
追加挿入された列より右側の列は、順次右にズレます。
行や列を追加挿入する際の注意点
シート内に数式や関数が設定されている場合は注意が必要です。
なぜなら、行や列を追加挿入したことによって、セルの参照がズレてしまう場合があるからです。
例えば下図にて、「セルA1」に10、「セルB2」に20という実数が入っており、
「セルB1」は「セルA1」を、「セルA2」は「セルB2」をそれぞれ参照しています。
その後、B列に列を追加挿入したものが下図です。
1行目の参照は崩れていません。
しかしながら、2行目は列が追加挿入されたことによりセル参照がズレて、空欄のセルB2を参照してしまっています。
同じ作業を手動で行った場合、参照も同時に移動するためセルの参照は崩れませんが、
openpyxlを用いた場合はこのようになる場合があることを覚えておいてください。
行や列を追加挿入した後は
行や列が追加挿入できたら、追加した部分に任意のデータを書き込みましょう。
書き込む方法は、下記記事で紹介しております。
また、openpyxlの基本も解説しておりますので、ご参考ください。
うまく動作しない時
エラーが出る
No such file or directory: ○○
これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。
Permission denied: ○○
操作しようとしているファイルにアクセスできないというエラーです。
「ファイルを開いている状態なので編集できない」と言っていることが多いので、開いていれば閉じて再度トライしましょう。
開いていなければ、コンピューターを再起動して再度トライしてみましょう。
Worksheet ○○ does not exist
「指定したシートがありません」というエラーです。
指定のシート名が間違っていないか、「sheet1」など先頭が小文字になっていないか確認しましょう。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
まとめ
Pythonでエクセルファイルに行や列を追加挿入する方法を解説いたしました。
行挿入は「insert_rows()」、列挿入は「insert_cols()」と覚えてください。
くれぐれも、セルの参照にはご注意を。
最後までお読みいただき、ありがとうございました。がんばってください!