Python(openpyxl) で、エクセルの行を削除するコードをご紹介します。
ぜひお試しください😉
行を削除する(指定行)
以下のコードを実行すると、指定行を削除します。
import openpyxl
wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
ws = wb['Sheet1']
#行を削除
ws.delete_rows(3)
#別名で保存
wb.save('C:/Users/xxx/Desktop/test/test行削除.xlsx')
Excelシート内の指定行を自動削除します。
[ws.delete_rows(3)] は、3行目を削除します。
行を削除する(複数行)
以下のコードを実行すると、複数行を一気に削除します。
import openpyxl
wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
ws = wb['Sheet1']
#複数行を削除
ws.delete_rows(2, 3)
#別名で保存
wb.save('C:/Users/xxx/Desktop/test/test行削除.xlsx')
Excelシート内の複数行を自動削除します。
[ws.delete_rows(2, 3)] は、2行目を起点として ”3行削除” します。
行を削除する(複数行:for文使用)
以下のコードを実行すると、複数行を一括削除します。
import openpyxl
wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
ws = wb['Sheet1']
maxRow = 5
for row in reversed(range(2, maxRow)):
#行を削除
ws.delete_rows(row)
#別名で保存
wb.save('C:/Users/xxx/Desktop/test/test行削除.xlsx')
Excelシート内の指定行をループして、
2行目~4行目を自動削除します。
行を削除する(指定行から最終行まで)
以下のコードを実行すると、特定行から最終行まで一括削除します。
import openpyxl
wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
ws = wb['Sheet1']
#シートの最終行を取得
Sheet_Max = ws.max_row
#削除開始行
stop_row = 6
#最終行から6行目まで逆ループ
for row in reversed(range(stop_row,Sheet_Max)):
#行を削除
ws.delete_rows(row)
#別名で保存
wb.save('C:/Users/xxx/Desktop/test/行削除.xlsx')
Excelシート内の行をループして、
指定行~最後の行まで自動削除します。
行を削除する(数値が0の行削除)
以下のコードを実行すると、数値が0の行を全削除します。
import openpyxl
wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
ws = wb['Sheet1']
#シートの最終行を取得
Sheet_Max = ws.max_row +1
#最終行から逆ループ
for i in reversed(range(Sheet_Max)):
if i == 0:
break
#B列が0だったら
if ws.cell(row=i, column=2).value == 0:
#行削除
ws.delete_rows(i)
#別名で保存
wb.save('C:/Users/xxx/Desktop/test/test行削除.xlsx')
Excelシート内で、値がゼロの行を自動削除します。
[if ws.cell(row=i, column=2).value == 0:] は、セルの値が「0」かどうか判定します。
[ws.delete_rows(i)] は、該当の行を削除します。
行を削除する(数値が0の行削除_複数セルを判定)
以下のコードを実行すると、数値が0の行を一気に削除します。
import openpyxl
wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
ws = wb['Sheet1']
#シートの最終行を取得
Sheet_Max_Row = ws.max_row
#シートの最終列を取得
Sheet_Max_Clm = ws.max_column
#行を逆ループ
for i in reversed(range(Sheet_Max_Row + 1)):
if i == 0:
break
# 列をループ
for j in range(2,Sheet_Max_Clm + 1):
#値が0だったら
if ws.cell(row=i, column=j).value == 0:
if j == Sheet_Max_Clm:
#行を削除
ws.delete_rows(i)
else:
continue
#値が0じゃなかったら
else:
break
#別名で保存
wb.save('C:/Users/xxx/Desktop/test/test行削除.xlsx')
B~F 列の値がすべてゼロの行をまとめて削除します。
下図では処理結果が分かりやすいように、
「0」のセルに色付けしてから、pythonを実行しています。
行を削除する(特定文字を含む行削除)
以下のコードを実行すると、セルに特定文字が含まれている行を一括削除します。
import openpyxl
wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
ws = wb['Sheet1']
#シートの最終行を取得
Sheet_Max = ws.max_row + 1
#最終行から逆ループ
for i in reversed(range(Sheet_Max)):
if i == 0:
break
#A列に特定の値が含まれていたら
if 'ぶっかけ' in ws.cell(row=i, column=1).value:
#行削除
ws.delete_rows(i)
#別名で保存
wb.save('C:/Users/xxx/Desktop/test/test行削除.xlsx')
Excelシート内で、指定文字が存在する行全体を自動削除します。
[if ‘ぶっかけ’ in ws.cell(row=i, column=1).value:] は、
「ぶっかけ」が含まれているか判定します。
行を削除する(色付きセルの行削除)
以下のコードを実行すると、色のついているセルがある行を削除します。
import openpyxl
from openpyxl.styles import PatternFill
wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
ws = wb['Sheet1']
#シートの最終行を取得
Sheet_Max_Row = ws.max_row
#シートの最終列を取得
Sheet_Max_Clm = ws.max_column
#列をループ
for j in range(1,Sheet_Max_Clm + 1):
#行を逆ループ
for i in reversed(range(Sheet_Max_Row)):
if i == 0:
break
#色付きセルだったら
if ws.cell(row=i, column=j).fill != PatternFill(fill_type = None):
#行削除
ws.delete_rows(i)
#別名で保存
wb.save('C:/Users/xxx/Desktop/test/test行削除.xlsx')
セルの背景色が塗りつぶしてある場合、その行を削除します。
[if ws.cell(row=i, column=j).fill != PatternFill(fill_type = None):] にて、
セルに色がついているかどうか判定します。
動作環境
Python 3.7.4
openpyxl 3.0.5
この記事がお役に立ちますと幸いです。
・【Python】エクセルを自動処理する方法まとめ
「Python 1年生 体験してわかる!会話でまなべる!」
初めての方でも安心して取り組めるように丁寧に解説
簡単なサンプルを作りながら、対話形式でプログラミングまで紹介
人工知能の導入としてもオススメの1冊です!