OpenPyXLの使い方~フォントの変更~

はじめに

今回はOpenPyXLを使ってフォントを設定する方法について書いていきます。

最近、なかなか投稿ができていないのですが機会を見つけて投稿を続けていきたいです。

フォントの変更方法

早速コードを書いていきます。

今回はフォントの指定なので文字列を入れます。

一気に書いていきます。

import openpyxl
from openpyxl.styles.fonts import Font

wb = openpyxl.Workbook()
ws = wb.active

for rows in range(2, 8):
    for cols in range(1, 6):
        ws.cell(row=rows, column=cols).value = 'フォント'
ws['A2'].font = Font(name='Meiryo UI',
                     size=10)  # フォント、サイズ
ws['A3'].font = Font(name='Meiryo UI',
                     size=20)  # フォント、サイズ
ws['A4'].font = Font(name='Meiryo UI',
                     size=30)  # フォント、サイズ
ws['A5'].font = Font(name='Meiryo UI',
                     sz=10)  # フォント、サイズ
ws['A6'].font = Font(name='Meiryo UI',
                     sz=20) # フォント、サイズ
ws['A7'].font = Font(name='Meiryo UI',
                     sz=30)  # フォント、サイズ
ws['B2'].font = Font(color='0000ff00')  # 色
ws['B3'].font = Font(color='6600ff00')  # 色
ws['B4'].font = Font(color='ff00ff00')  # 色
ws['B5'].font = Font(shadow=True)  # 影
ws['B6'].font = Font(strike=True)  # 打消し線
ws['B7'].font = Font(strikethrough=True)  # 打消し線
ws['C2'].font = Font(italic=True)  # 斜め
ws['C3'].font = Font(i=True)  # 斜め
ws['C4'].font = Font(bold=True)  # 太文字
ws['C5'].font = Font(b=True)  # 太文字
ws['C6'].font = Font(scheme='major')  # 細線?
ws['C7'].font = Font(scheme='minor')  # 細線?デフォルト
ws['D2'].font = Font(vertAlign=None)  # 文字並びデフォルト
ws['D3'].font = Font(vertAlign='superscript')  # 文字上より
ws['D4'].font = Font(vertAlign='subscript')  # 文字下より
ws['D5'].font = Font(vertAlign='baseline')  # 文字真ん中
ws['D6'].font = Font(extend=True)  # 分からん
ws['E2'].font = Font(u='single')  # 文字列分のアンダーライン
ws['E3'].font = Font(u='double')  # 文字列分の2重アンダーライン
ws['E4'].font = Font(u='singleAccounting')  # セルいっぱいのアンダーライン
ws['E5'].font = Font(u='doubleAccounting')  # セルいっぱいの2重アンダーライン
# underline=True,これで下線を引こうとするとエラーを吐く。

wb.save('test.xlsx')

こんなとこですね。

実行するとこんな感じ。

私の知る限りの引数を書きました。正直よくわかってもらえないトコもあるかもしれません。
shadowなんて影ついてるのかどうか分かりませんから。実際には影が付いているのですが…。

それとextend=もどんなものなのかもわかんないです。

scheme=は一応細線になるようですが、ぱっと見ではわかんないですね。

それとFont()は違う引数でも同じ結果になるものがあります。size=とsz=とか。

もう一つ大事なことが。
コードの最後に書いてありますが、underline=を使ってアンダーラインを引こうとするとエラーを吐きます。原因はよくわかりません。使わないことをお勧めします。
u=でアンダーライン引けるので大丈夫だと思いますが。

色指定について

色指定は、基本16進法カラーコードで指定します。頭2桁は透明度を指定しています。違いがよく分かりませんが。ここまでは大丈夫でしょう。
今回は「インデックス付きの色」を紹介します。。全64色が指定されています。よく使う色…ということでしょう。

import openpyxl
from openpyxl.styles.fonts import Font
from openpyxl.styles.colors import Color

wb = openpyxl.Workbook()
ws = wb.active

num = 0
for rows in range(1, 12):
    for cols in range(1, 7):
        ws.cell(row=rows, column=cols).value = 'フォント'
        c = Color(indexed=num)
        ws.cell(row=rows, column=cols).font = Font(color=c)
        num = num + 1

wb.save('test.xlsx')

下地が白の上に文字色も白なので文字が見えなくなっているトコもありますが、きちんと色が付いています。
64と65は設定できません。と言っても一応色はついています。黒と白ですね。どんな色か気になる人は実際に試してみてください。

おわりに

投稿頻度がかなり低くなってしまい、申し訳ない。
どうしても仕事の関係でブログに時間が取れず…。

会社のブラックさが増してきて、精神的にも肉体的にも疲れてきています。
仕事を辞めても生活できる自信があればと思ってしまいます。

では次回までさようなら。

コメント

タイトルとURLをコピーしました