こんにちは。@katsuhisa__です。
PythonのOpenPyXLモジュールを使い、面倒で退屈なExcel作業をPythonで自動化する方法をお伝えする連載の六記事目です!
連載一記事目はこちら。
前回は、OpenPyXLでExcelのセルに値を入力する方法と編集する方法をご紹介しました。
今回は、PythonでOpenPyXLを使いExcelのフォントを設定する方法を学習しましょう!
OpenPyXlでExcelのフォントを設定するための準備
さて、OpenPyXLでExcelのフォントを設定するには、openpyxl.styles.Font()という関数を利用します。・・・しかし、毎回この関数名を書くのはめんどうですね。長いです。
そこで、Pythonでは、from import文を使って、必要な関数を直接インポートすることができます。
import openpyxl
from openpyxl.styles.fonts import Font
このおまじないをあらかじめ書いておけば、openpyxl.styles.Font()と書く代わりに、Font()と書くだけで関数を呼び出すことが可能です。
「え?はじめからFont()関数として呼び出させてくれればいいじゃん。めんどくさい。」
など、もし詳しく知りたい方は、Python公式ドキュメントのパッケージの章を学ぶことをオススメいたします。
プログラミング言語やフレームワークなどのライブラリの仕様は、歴史的な経緯があってルールがつくられていることが大半です。
プログラミングに限りませんが、歴史的な経緯を知ると、物事が立体的に見えるようになるので楽しいですよ。
OpenPyXlでExcelのフォントを設定する方法
さて、では気を取り直して(?)、OpenPyXLでExcelのフォントを設定する方法を学びましょう。早速サンプルコードです。
import openpyxl
from openpyxl.styles.fonts import Font
wb = openpyxl.Workbook()
sheet = wb.active
sheet['A1'] = '48 pt Italic'
sheet['A1'].font = Font(size=48, italic=True)
sheet['A2'] = 'default'
wb.save('test_write_2.xlsx')
先ほどのFont()関数を利用しています。では、作成したtest_write_2.xlsxの中身を見てみましょう。
A1セルにフォントサイズが48 ptでイタリックの文字列「48 pt Italic」が書き込まれ、A2セルにフォントを設定していない文字列「default」が書き込まれていることが確認できました。
セルオブジェクトのフォント属性とフォントオブジェクトについて
さて、前述したコードのフォントを設定している箇所を詳しく見てみましょう。
sheet['A1'].font = Font(size=48, italic=True)
まず左辺ですが、セルオブジェクトはフォント属性を持っています。フォント属性を設定すれば、フォントのスタイルを設定することができます。
そして右辺にあるのが、フォント属性の中身を定義するフォントオブジェクトです。
まずは、この関係性をご理解ください。
フォントオブジェクトを生成する関数
さて、ようやく冒頭に出てきたFont()関数の説明です。
Font()関数を使えば、フォントオブジェクトを生成することができます。
※より具体的に書くと、openpyxl.stylesモジュール内のFont()関数
キーワード引数は、データ型を持ちます。
前述したサンプルコードでは、キーワード引数として、sizeとitalicを使用していました。sizeは整数型、italicはブール型のキーワード引数です。
整数型は1,2,3,4などの整数の値を受け取る型です。
ブール型はTrueもしくはFalseの2種類の値を受け取ることができます。
前述のサンプルコードを見てお分かりになる通りですが、size(整数型)に整数を代入すれば、フォントのポイント数を変更でき、italic(ブール型)をTrueにすれば、イタリックになります。
フォントオブジェクトのキーワード引数
他にもキーワード引数はたくさんあります。こういう時は、公式ドキュメントを読むのが最も正確です。せっかくなので、どのような引数があるかの設定例と一覧を一部以下に記載します。
フォントオブジェクトのキーワード引き数の設定例
font = Font(name='Calibri',
size=11,
bold=False,
italic=False,
underline='none',
strike=False,
color='FF000000')
フォントオブジェクトのキーワード引数一覧
キーワード引数名 | データ型 | 解説 |
---|---|---|
name | 文字列型 | フォント名を入れれば、フォントが変更できる |
size | 整数型 | 文字サイズを変更できる |
bold | ブール型 | Trueにすれば太文字にできる |
italic | ブール型 | TrueにすればItalicにできる |
underline | ブール型 | Trueにすれば、下線が引ける |
strike | ブール型 | Trueにすれば、打ち消し線が引ける |
color | 文字列型 | カラーコードを入力すれば、文字色が変更できる |
※実は、まだ他にもあります。基本的には上記のフォント設定ができれば十分事足りると思いますが、すべてのフォント設定を使いこなしたい方はこちらのリンクからOpenPyXlのコードをご確認ください。
(おまけ)フォントオブジェクトを変数に格納しておこう
さて、最後になりますが、今回のサンプルコードには、修正点があります。ということで、修正済みのコードを以下に記載します。
具体的にどこを修正したかお分かりになりますでしょうか?
import openpyxl
from openpyxl.styles.fonts import Font
wb = openpyxl.Workbook()
sheet = wb.active
# フォントスタイルを変数として定義
font_obj_1=openpyxl.styles.Font(size=48, italic=True)
# A1セル
sheet['A1'] = '48 pt Italic'
sheet['A1'].font = font_obj_1
# A2セル
sheet['A2'] = 'default'
wb.save('test_write_2.xlsx')
コード内にコメントを書いている通りですが、フォントオブジェクトを直接セルオブジェクトのフォント属性に代入するのではなく、いったん別の変数に格納しました。
フォントスタイルを変数化していると、後から更新しやすいです。
もし、プログラム内のいろんな箇所でフォントスタイルを直接代入していると、フォントスタイルを更新する際に、複数箇所の更新作業が必要になるからです。
プログラムの拡張性を考慮することは難しいですが、まずはこういったところから気をつけるとよいでしょう。
さいごに
以上、PythonでOpenPyXLを使いExcelのフォントを設定する方法でした。
フォントを設定する関数の使い方だけを説明すれば、5分で済みますが、きちんと基礎を学ぶと奥が深いですね。
次回は、行と列のサイズを調整する方法をご紹介するのでお楽しみにしていてください。なお、予習を進めたい方は、『退屈なことはPythonにやらせよう』をお買い求めください。
本連載の更新情報は、管理人のタカハシ(@ntakahashi0505)さんのTwitterアカウントや、もちろん私のアカウント(@katsuhisa__)で配信していくので、もしよければ、フォローをお願いします!
書籍『Pythonでかなえる Excel作業効率化』発売のお知らせ
この連載が『Pythonでかなえる Excel作業効率化』という本になりました! Pythonの使い方の基本からだけでなく、Pythonでオフィス業務を効率化するために必要な知識をたくさん詰め込みました!ぜひお買い求めください。連載目次:PythonでExcelを操作するモジュールOpenPyXL
OpenPyXLというモジュールを使うことでPythonでExcelファイルを操作することができます。本シリーズでは初心者向けにExcelファイルの作業をPythonで自動化する方法をお伝えします。- PythonでExcel作業を自動化するOpenPyXLのはじめての使い方
- OpenPyXLで複数のセルの値を取得する方法
- OpenPyXLでExcelファイルの新規作成・保存を行う方法
- PythonでOpenPyXLを使ってExcelのシートを追加・削除する方法
- PythonでOpenPyXLでExcelのセルに値を入力する方法と編集する方法
- PythonでOpenPyXLを使いExcelのフォントを設定する方法
- PythonでOpenPyXLを使いExcelに数式を入力する方法
- PythonでOpenPyXLを使いExcelの行と列について色々な設定をする方法
- PythonでOpenPyXLを使いExcelの行と列を固定する方法
- PythonでOpenPyXLを使いExcelのグラフを作成する〜Chart関連オブジェクトの紹介〜
- PythonでOpenPyXLを使いExcelのグラフを作成する〜グラフのつくりかた編〜