【Python/openpyxl】エクセル:セルの書式設定(フォント・サイズ・色・太字)を変更

時計 2020.11.09 / 時計

【Python/openpyxl】エクセル:セルの書式設定(フォント・サイズ・色・太字)を変更

Pythonopenpyxlを使ってエクセル操作をする際に、セルの書式設定を変更してユーザーに見やすい表を作成したいですよね。

もちろんopenpyxlには、セルの書式設定を変更できる機能が備わっています。

本記事ではPythonのopenpyxlを使って、セルの書式設定(フォント・サイズ・色・太字)を変更する方法について解説します。

以下openpyxlの公式サイトにもセルの書式設定の詳しい使い方が記載されています。

openpyxl公式サイト(英語)

サンプルプログラム

セル座標A1の文字列の書式設定を変更するプログラムを以下に示します。

openpyxl:セルの書式設定を変更するサンプルプログラム
import openpyxl
from openpyxl.styles import Font

wb = openpyxl.load_workbook('office54.xlsx')
ws = wb.active
font1 = Font(color='00FF0000', size=25, italic=True, bold=True)
ws['A1'].font = font1
wb.save('office54.xlsx')

このエクセルに対してプログラムを実行すると以下のようにセルの書式を変更できました。

openpyxl:セルの書式設定を変更するサンプルプログラム実行後

詳しいセルの書式変更方法については、以下で説明していきます。

セルの書式変更方法

セルの書式を変更するためには、Fontオブジェクトを使用します。

以下の流れでセルの書式を変更します。

  1. Font()関数をインポートする(しなくてもよい)
  2. Font()関数を使用してFontオブジェクトを作成し、変数に代入する
  3. Cellオブジェクトのfont(style)属性にその変数を代入する

それぞれの手順について詳しく見ていきましょう。

Font()関数のインポート

Font()関数のインポートはプログラムの先頭で行います。

from openpyxl.styles import Font

Font()関数のインポートですが、これはしなくてもセルの書式設定は可能です。
インポートしない場合はFont()関数を使うためにopenpyxl.styles.Font()とすべて書く必要があります。

書く労力を少しでもなくすため、そして可読性を高めるためにもFont()関数をインポートすることをお勧めします。

Fontオブジェクトの作成

Fontオブジェクトを作成する際にFont()関数を使用します。

Font()関数に引数でフォントやサイズ、色、太字、斜体の情報を渡すことができます。
ここで渡した書式情報がセルに適応されます。

引数 データ型 説明
name 文字列型 フォント名(Times New Roman、Arialなど)
color 文字列型 文字色(カラーコードを渡す)
size 整数型 ポイント数
bold ブール型 太字
italic ブール型 イタリック(斜体)
strike ブール型 取り消し線
underline ブール型 下線
Font()関数の式

Font(引数1=引数1の値, 引数2=引数2の値, …)

そしてFont()関数で作成したFontオブジェクトは変数に代入します。

font1 = Font(color='00FF0000', size=25, italic=True, bold=True)

このFontオブジェクトを代入された変数を使って、セルの書式変更を行います。

Cellオブジェクトのfont属性に代入する

Fontオブジェクトが代入された変数を、Cellオブジェクトのfont属性に代入します。

ws['A1'].font = font1

これにより、Fontオブジェクトを作成した際に引数で渡した書式に対象のセルは変更されます。

文字のデフォルト書式

openpyxlを通してセルに文字を入力した場合のデフォルトの書式設定を以下に示します。

font = Font(name='Calibri', size=11, bold=False, italic=False, vertAlign=None, underline='none', strike=False, color='FF000000')
引数
name Calibri
size 11
bold False
italic False
vertAlign None
underline none
strike False
color FF000000

まとめ

openpyxlによるセルの書式設定(フォント・サイズ・色・太字)を変更する方法はいかがでしたか。

Fontオブジェクトの作成時に書式設定を指定して、それを対象のCellオブジェクトのfont属性に代入するだけなので非常に簡単でしたね。

ちなみにFontオブジェクトを変数に代入しないで、直接Cellオブジェクトのfont属性に代入することは可能です。

しかしセルの数が多くなった場合に代入が大変になるため、一度変数にFontオブジェクトを代入して使用する今回の方法がお勧めです。

連載記事

Pythonによるエクセル操作の記事を定期的にアップしております。
ぜひエクセル仕事の効率化のためにご参照ください。