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')

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

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

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

削除するスクリプトなので、最終行から上方向に向かって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を使ったサンプル

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

検索


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

.