Excelで背景色をつけたセルを取得する方法をご紹介します。
使うライブラリはopynpexlのみで、fill.start_color.indexという関数を使って取得することができました。
openpyxlでセルの背景色を取得
次の2パターンを紹介します。
1. 特定の色のセルのみ取得する場合
import openpyxl
wb=openpyxl.load_workbook("商品一覧.xlsx")
ws=wb["Sheet1"]
bg_list=[]
for i in range(2, ws.max_row+1):
target_cell=ws.cell(i,1)
bgcolor=target_cell.fill.start_color.index
if bgcolor=="FFFFFF00":
bg_list.append(i)
print(bg_list)
出力結果
[6, 8]
ターゲットのセルに背景色があることをfill.start_color.indexという関数で定義。
if文でExcelの1列目にある、黄色(カラーコード:FFFFFF00)の行をすべて取得し、リストに格納して出力しました。
2. 背景色のセルをすべて取得したい場合
import openpyxl
wb=openpyxl.load_workbook("商品一覧.xlsx")
ws=wb["Sheet1"]
bg_list=[]
for i in range(2, ws.max_row+1):
target_cell=ws.cell(i,1)
bgcolor=target_cell.fill.start_color.index
if bgcolor!="00000000":
bg_list.append(i)
print(bg_list)
出力結果
[3, 6, 8]
色にかかわらず、背景色のある行がすべて出力できました。
背景色に関係なくすべてカラーのセルを取得したい場合は、if文で「背景色無しではなかったら(透明のカラーコード:00000000ではなかったら)」として取得しました。
毎回、背景色をつけた行だけをコピペで継ぎ足しするのが面倒だと思っていたところ、openpyxlだけで取得が実現できました。
背景色の行を一括で集約したり、色々使えそうです。