「openpyxl 行 削除 条件」
「python if 行削除 openpyxl」
といった検索で、このサイト『インストラクターのネタ帳』へアクセスがありました。
OpenPyXLを使って、何らかの条件に合致する、Excelの行を削除するには、どのようなコードを書けばいいのかを探していた方による検索でしょう。
「python excel 該当行 削除」
といった検索も、そうだったかもしれません。
条件に合致したExcelの行を削除するサンプル
以下のスクリプトを実行すると、Cドライブtempフォルダーのsample.xlsxファイル先頭シートの、2列目のセルが空白のときに、その行が削除され、sample_new.xlsxが作成されます。
bk = openpyxl.load_workbook(r'C:\temp\sample.xlsx')
ws = bk.worksheets[0]
for i in range(ws.max_row, 1, -1):
if ws.cell(i, 2).value==None:
ws.delete_rows(i)
サンプルスクリプトで行っている処理
削除するスクリプトなので、最終行から上方向に向かってforループを回します。
for i in range(ws.max_row, 1, -1):
Python標準のrange関数の、第1引数にWorksheet.max_row属性の値、
for i in range(ws.max_row, 1, -1):
第2引数に「1」を指定することで、1の直前2までというループ条件に、
for i in range(ws.max_row, 1, -1):
第3引数には拙著『VBAユーザーのためのPython超入門』の「6-2. range関数の引数」でも解説している「-1」を指定しています。
for i in range(ws.max_row, 1, -1):
上述のfor文の中で、セルの値による条件分岐を行います。
Cell.value属性で取得した2列目のセルの値がNoneだったときに、
if ws.cell(i, 2).value==None:
Worksheet.delete_rowsメソッドで、その行を削除しています。
ws.delete_rows(i)
最終更新日時:2022-12-28 14:36
Home » Python » OpenPyXLの使い方 » 条件に合致した行を削除するOpenPyXLを使ったサンプル