はじめに
こんにちは。風助です。
今回は行列の挿入、削除の方法について書いていきます。
とはいえ何も値がない状態だと挿入、削除されたかどうかわかんないのでこんなコードを頭に入れます。
import openpyxl
wb = openpyxl.Workbook()
ws = wb.active
for rows in range(1, 20):
for cols in range(1, 20):
cell = ws.cell(row=rows, column=cols)
values = cell.coordinate
cell.value = values
wb.save('test.xlsx')
こんな感じでセルにその座標を入れるコードです。


行列の挿入
まずは挿入のやり方。
ws.insert_cols()
ws.insert_rows()
このメソッドを使います。
かっこの中に列(または行)番号を入れると、そこに挿入されます。
import openpyxl
wb = openpyxl.Workbook()
ws = wb.active
for rows in range(1, 20):
for cols in range(1, 20):
cell = ws.cell(row=rows, column=cols)
values = cell.coordinate
cell.value = values
ws.insert_cols(5)
wb.save('test.xlsx')
実行するとこんなかんじになります。

5列目に列が挿入されました。
もちろん行でも同じことができます。
import openpyxl
wb = openpyxl.Workbook()
ws = wb.active
for rows in range(1, 20):
for cols in range(1, 20):
cell = ws.cell(row=rows, column=cols)
values = cell.coordinate
cell.value = values
ws.insert_rows(5)
wb.save('test.xlsx')
こんな感じになります。きちんと挿入されましたね。

行列の削除
続いて削除のやり方。
ws.delete_cols()
ws.deleat_rows()
このメソッドを使います。
こちらもかっこの中に列(もしくは行)番号を入れればそのとこが削除されます。
import openpyxl
wb = openpyxl.Workbook()
ws = wb.active
for rows in range(1, 20):
for cols in range(1, 20):
cell = ws.cell(row=rows, column=cols)
values = cell.coordinate
cell.value = values
ws.delete_cols(5)
wb.save('test.xlsx')
実行するとこうなります。少し分かりづらいですがE列がなくなっています。

もちろん行も同じようにできます。
import openpyxl
wb = openpyxl.Workbook()
ws = wb.active
for rows in range(1, 20):
for cols in range(1, 20):
cell = ws.cell(row=rows, column=cols)
values = cell.coordinate
cell.value = values
ws.delete_rows(5)
wb.save('test.xlsx')
こんなコードになります。こちらも分かりづらいですが5列目が削除されています。

注意事項
このメソッドを使う上で一つ、気を付けないといけないことがあります。
もともと関数などで指定されているセルが移動してしまうことです。
import openpyxl
wb = openpyxl.Workbook()
ws = wb.active
ws['E5'] = 10
ws['B2'] = '=E5'
wb.save('test.xlsx')
こんなコードを実行するとこうなります。

ここから挿入、削除をしてみます。
まずは挿入。分かりづらい画像になりますが…。
import openpyxl
wb = openpyxl.Workbook()
ws = wb.active
ws['E5'] = 10
ws['B2'] = '=E5'
ws.insert_cols(4)
wb.save('test.xlsx')

E5のセルに数値が入っていないのでB2のセル表記も0になりました。
削除のほうもやってみましょう。
import openpyxl
wb = openpyxl.Workbook()
ws = wb.active
ws['E5'] = 10
ws['B2'] = '=E5'
ws.delete_rows(4)
wb.save('test.xlsx')

こちらでもB2セルの表示が0になっています。

おわりに
今回は行列の挿入、削除の方法を書きました。
分かりずらいとかあればコメントいただければ幸いです。
noteもやっているのでそちらも覗いてみてください。
風助|note
こんにちは。風助です。脱社畜を目指すオタクです。投稿からある程度日数経ったら有料にします。ちなみに環境はwindows10Home、それとPython3.9
それでは次回までさようなら。
コメント