Home » Python » OpenPyXLの使い方 » OpenPyXLで条件に合致した行を削除する

OpenPyXLで条件に合致した行を削除する

動作検証バージョン:Windows 10 Pro(64-bit)+ Python 3.8.3(32-bit) + OpenPyXL 3.0.7

「openpyxl 行 削除 条件」
「python if 行削除 openpyxl」
といった検索で、このサイト『インストラクターのネタ帳』へアクセスがありました。

OpenPyXLを使って、何らかの条件に合致する、Excelの行を削除するには、どのようなコードを書けばいいのかを探していた方による検索でしょう。

「python excel 該当行 削除」
といった検索も、そうだったかもしれません。

[スポンサードリンク]

条件に合致したExcelの行を削除するサンプル

以下のスクリプトを実行すると、Cドライブtempフォルダーのsample.xlsxファイル先頭シートの、2列目のセルが空白のときに、その行が削除され、sample_new.xlsxが作成されます。

import openpyxl

bk = openpyxl.load_workbook(r'C:\temp\sample.xlsx')

sh = bk.worksheets[0]
for i in range(sh.max_row, 1, -1):
    if sh.cell(i, 2).value==None:
        sh.delete_rows(i)

bk.save(r'C:\temp\sample_new.xlsx')

サンプルスクリプトで行っている処理

削除するスクリプトなので、最終行から上方向に向かってforループを回します。
  for i in range(sh.max_row, 1, -1):

Python標準のrange関数の、第1引数にWorksheet.max_row、
  for i in range(sh.max_row, 1, -1):

第2引数に「1」を指定することで、1の直前2までというループ条件に、
  for i in range(sh.max_row, 1, -1):

第3引数には拙著VBAユーザーのためのPython超入門の「6-2. range関数の引数」でも解説している「-1」を指定しています。
  for i in range(sh.max_row, 1, -1):

上述のfor文の中で、セルの値による条件分岐を行います。

2列目のセルの値がNoneだったときに、
      if sh.cell(i, 2).value==None:

Worksheet.delete_rowsメソッドで、その行を削除しています。
          sh.delete_rows(i)

[スポンサードリンク]

Home » Python » OpenPyXLの使い方 » OpenPyXLで条件に合致した行を削除する

TrackBack:0

TrackBack URL

Home » Python » OpenPyXLの使い方 » OpenPyXLで条件に合致した行を削除する

「OpenPyXLの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.