Python(openpyxl) Excelに色付けする方法まとめ|セル・行列

Python

Python(openpyxl)で、Excelのセル・行・列に色付けする方法をまとめました。用途に合わせた書式設定をコード付きでご紹介します。

ぜひ、お試しください。

行列に色付けする

行に色付けする

以下のコードを実行すると、行に背景色をつけます。


import openpyxl
from openpyxl.styles import PatternFill

wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
ws = wb['Sheet1']

mylist = [3,5,6]

for list in mylist:
    for row in ws.iter_rows():
        for cell in row:
            if cell.row == list:
                cell.fill = PatternFill(fgColor='FFFF00',bgColor="FFFF00", fill_type = "solid")

#別名で保存
wb.save('C:/Users/xxx/Desktop/test/test行色付け.xlsx')

 

3行目、5~6行目の背景色に色をつけて、強調します。


 

列に色付けする

以下のコードを実行すると、列に着色します。


import openpyxl
from openpyxl.styles import PatternFill

wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
ws = wb['Sheet1']

mylist = [3,5,6]

for list in mylist:
    for row in ws.iter_rows():
        for cell in row:
            if cell.row == list:
                cell.fill = PatternFill(fgColor='FFFF00',bgColor="FFFF00", fill_type = "solid")

#別名で保存
wb.save('C:/Users/xxx/Desktop/test/test行色付け.xlsx')

 

C列、E~F列の背景色に色をつけます。


 
 

1行おきに色付け 3選

1行おきに色付け(リスト使用)

以下のコードを実行すると、一行おきに色付けして見やすくします。


import openpyxl
from openpyxl.styles import PatternFill

wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
ws = wb['Sheet1']

mylist = [2,4,6,8,10]

for list in mylist:
    for row in ws.iter_rows():
        for cell in row:
            if cell.row == list:
                cell.fill = PatternFill(fgColor='FFFF00',bgColor="FFFF00", fill_type = "solid")

#別名で保存
wb.save('C:/Users/xxx/Desktop/test/test交互色付け.xlsx')

 

コード実行後

Excelシートを1行ごとに、しましまに色付けします。

[mylist = [2,4,6,8,10]] にて、色を付ける行を指定しています。


 
 

1行おきに色付け(変数使用)

以下のコードを実行すると、行の背景を交互に色付けします。


import openpyxl
from openpyxl.styles import PatternFill

wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
ws = wb['Sheet1']

Q = 0

for i in range(1,ws.max_row + 1):
    for row in ws.iter_rows():
        for cell in row:
            if cell.row == Q:
                cell.fill = PatternFill(fgColor='FFFF00',bgColor="FFFF00", fill_type = "solid")
    Q = Q + 2

#別名で保存
wb.save('C:/Users/xxx/Desktop/test/test交互色付け.xlsx')

 

コード実行後

シート内の行を交互に塗りつぶします。

変数 [Q] にて、偶数行を指定しています。


 

1行おきに色付け(変数使用)

以下のコードを実行すると、行を縞模様に色付けします。


import openpyxl
from openpyxl.styles import PatternFill

wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
ws = wb['Sheet1']

Q = 2

#行をループ
for i in range(2,ws.max_row):

    #偶数行だったら
    if i == Q:

        #列ループ
        for j in range(1,ws.max_column + 1):
            #セルに色付け
            ws.cell(row=Q, column=j).fill = PatternFill(fgColor='FFFF00',bgColor="FFFF00", fill_type = "solid")
        Q = Q + 2

#別名で保存
wb.save('C:/Users/xxx/Desktop/test/test交互色付け.xlsx')

 

コード実行後

シート内の行を交互に着色します。

変数 [Q] にて、偶数行を指定しています。


 
 
動作環境
Python 3.7.4
openpyxl 3.0.5
 
 

特定文字を含むセルに色付け

特定文字を含むセルに色付け

以下のコードを実行すると、特定の文字列を含むセルに着色します。


import openpyxl
from openpyxl.styles import PatternFill

#エクセルファイル・シートを指定
wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
ws = wb['Sheet1']

#探す文字列を指定
My_Value = ['左','村','川']

#[My_Value]をループ
for list in My_Value:

    #1行ずつループ
    for row in ws.iter_rows():

        #1セルずつループ
        for cell in row:

            #セルに [My_Value] の文字列が含まれていたら
            if list in str(cell.value):

                #該当セルに色付け
                cell.fill = PatternFill(fgColor='FFFF00',bgColor="FFFF00", fill_type = "solid")

#別名で保存
wb.save('C:/Users/xxx/Desktop/test/testセル色付け.xlsx')

 

コード実行後

Excelシート内で、特定文字が入っているセルの背景色に色付けします。

[My_Value = [‘左’,’村’,’川’]] にて、検索する文字列を指定します。


 
 
動作環境
Python 3.7.4
openpyxl 3.0.5

この記事がお役に立ちますと幸いです。
 
・【Python】エクセルを自動処理する方法まとめ
 

【Python】エクセル処理を自動化:超便利55選
Pythonで、Excel処理を自動化するコードをご紹介します。ぜひお試しください!

 

「Python 1年生 体験してわかる!会話でまなべる!」

初めての方でも安心して取り組めるように丁寧に解説
簡単なサンプルを作りながら、対話形式でプログラミングまで紹介
人工知能の導入としてもオススメの1冊です!