PythonでExcelのセルの背景色を取得するには

PythonでExcelの背景色を取得する

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だけで取得が実現できました。

背景色の行を一括で集約したり、色々使えそうです。

ABOUT US
中野友梨
旅行業の会社を運営。
慶応義塾大学卒

書類作成、確認作業などに追われる日々の仕事。
一生懸命やっているつもりだった。
計算ミス、手配ミスにヒヤヒヤする日々。
仕事の効率をなんとかしなけらばいけないと思っていたけど、 どうしたらよいのか分からなかった。
Pythonの世界なんて、全く知らなかった。
そんな私がPythonで仕事が効率化されることによって、公私ともに大きく 変わるとは、夢にも思っていなかった..。

業務効率化のためにPythonを始めたことがきっかけで、Pythonにはまりました。(個人利用レベル)
詳細はこちら

労働時間が大きく削減され、仕事が大カイゼンされて自由な時間も生まれました。
私のした素晴らしい経験を共有したい、仕事の効率が悪いけど、どうにかしたいという悩みを持った人々に向けて、 Pythonがいいよ、と教えてあげたい。
このブログでは、私が経験したエラー解決や迷い所、Pythonの活用方法をお伝えします。