【Python/openpyxl】エクセル:セルの書式設定(フォント・サイズ・色・太字)を変更
2020.11.09 /
Pythonのopenpyxlを使ってエクセル操作をする際に、セルの書式設定を変更してユーザーに見やすい表を作成したいですよね。
もちろんopenpyxlには、セルの書式設定を変更できる機能が備わっています。
本記事ではPythonのopenpyxlを使って、セルの書式設定(フォント・サイズ・色・太字)を変更する方法について解説します。
以下openpyxlの公式サイトにもセルの書式設定の詳しい使い方が記載されています。
サンプルプログラム
セル座標A1の文字列の書式設定を変更するプログラムを以下に示します。
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')
このエクセルに対してプログラムを実行すると以下のようにセルの書式を変更できました。
詳しいセルの書式変更方法については、以下で説明していきます。
セルの書式変更方法
セルの書式を変更するためには、Fontオブジェクトを使用します。
以下の流れでセルの書式を変更します。
- Font()関数をインポートする(しなくてもよい)
- Font()関数を使用してFontオブジェクトを作成し、変数に代入する
- 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(引数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によるエクセル操作の記事を定期的にアップしております。
ぜひエクセル仕事の効率化のためにご参照ください。