Pythonで既存エクセルファイルのフォントを変更する方法

スポンサードリンク
sample Python
過去の自分
過去の自分

Pythonで既存のエクセルファイルを編集しているんだけど、
ファイルの送り先がフォントを指定してきた。

デフォルトのフォントも好きじゃなかったし、

Pythonでフォントを変更する方法はないのかな?

今の自分
今の自分

あります!

フォントを変更する際の注意点も解説します!

Pythonで既存エクセルファイルのフォントを変更する方法を
Python歴3年の私ができるだけわかりやすく解説し、解決に導きます。

スポンサードリンク

Pythonで既存エクセルのフォントを変更するには

Font()」を使います。まずは実行見本をどうぞ。

スポンサードリンク

実行見本

スポンサードリンク

全コード

ひとまず全コードを網羅します。解説は後ほど行います。
いろんなパターンを網羅しているため長いですが、本題は短いです。

import openpyxl
from openpyxl.styles.fonts import Font

wb = openpyxl.load_workbook('input.xlsx')
ws = wb['Sheet1']

ws['B1'].font = Font(name = 'MS ゴシック')
ws['C1'].font = Font(name = 'MS ゴシック')
ws['D1'].font = Font(name = 'MS ゴシック')

ws['B2'].font = Font(name = 'Arial')
ws['C2'].font = Font(name = 'Arial')
ws['D2'].font = Font(name = 'Arial')

ws['B4'].font = Font(name = 'MS 明朝')
ws['C4'].font = Font(name = 'MS 明朝')
ws['D4'].font = Font(name = 'MS 明朝')

ws['B5'].font = Font(name = 'Century')
ws['C5'].font = Font(name = 'Century')
ws['D5'].font = Font(name = 'Century')

ws['B7'].font = Font(name = 'HGP創英角ポップ体')
ws['C7'].font = Font(name = 'HGP創英角ポップ体')
ws['D7'].font = Font(name = 'HGP創英角ポップ体')

ws['B8'].font = Font(name = 'メイリオ')
ws['C8'].font = Font(name = 'メイリオ')
ws['D8'].font = Font(name = 'メイリオ')

wb.save('input.xlsx')

from openpyxl.styles.fonts import Font
ws[‘B2’].font = Font(name = ‘MS ゴシック’)

スポンサードリンク

事前準備

  • openpyxlのインストール

既存のエクセルファイルを編集するには「openpyxl」のインストールが必要です。

openpyxlのインストール方法

openpyxlを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。

pip install openpyxl

※openpyxlを使用したことがある場合は、このインストール作業は不要です。

スポンサードリンク

解説

インポート

import openpyxl
from openpyxl.styles import Font

「openpyxl」のインポートと、フォントを変更するために上記2行を記述します。

フォントを変更

>>7.ws[‘B2′].font = Font(name = ‘MS ゴシック’)

上記一文でフォントを変更することができます。

()内にname=」を記述し、右辺に「フォント名」を記述しましょう。

【 ワークシート変数.[‘セル名‘].font = (name = ‘フォント名‘) 】

フォント名は、エクセルのフォント選択欄を確認し、必ず「完全一致」になるよう指定してください。
(理由は後述)

フォントが変更される仕組み

試しに存在しない「あああああ」というフォント名を指定して実行した場合、どうなるのでしょうか?

実行してもエラーは出ず、実行後のエクセルファイルを確認すると、
フォント選択欄も「あああああ」になってしまっています。

もちろん、こんなフォントは存在しないため、フォントは正常に変更されません

実は、Pythonを使ってのフォント変更は、エクセルのフォント選択欄からフォントを選んでいるわけではなく、フォント名を書き換えているのです。

存在しないフォントを指定したり、フォント名が間違うことのないよう、フォント選択欄からコピペするのが無難です。

下図の「C2」セル(Arialフォント)に注目してください。

上の「C1」セル(MSゴシックフォント)とフォントが違うはずなのに、同じフォントになってしまっています。(C4とC5セルも同じ)

これは、ArialとCenturyフォントが日本語に対応していないためです。
日本語に英語のみ対応のフォントを指定するとこういうことが起こります。
だからといって、大きな問題は無いんですけどね。

スポンサードリンク

うまく動作しない時

エラーが出る

No such file or directory: ○○

これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。

Permission denied: ○○

操作しようとしているファイルにアクセスできないというエラーです。
ファイルを開いている状態なので編集できない」と言っていることが多いので、開いていれば閉じて再度トライしましょう。
開いていなければ、コンピューターを再起動して再度トライしてみましょう。

Worksheet ○○ does not exist

「指定したシートがありません」というエラーです。
指定のシート名が間違っていないか、「sheet1」など先頭が小文字になっていないか確認しましょう。

その他のエラー

その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。

フォントが変更されない

指定したフォントがエクセルに存在しないか、フォント名が間違っている可能性があります。

なので、大文字・小文字・全角・半角・スペースなど、エクセルのフォント選択欄と完全一致しないと正しく表示されません。

エクセルのフォント選択欄と構文とを再度よく比較しましょう。

スポンサードリンク

まとめ

Pythonで既存エクセルファイルのフォントを変更する方法を解説いたしました。

フォント変更は
from openpyxl.styles.fonts import Font」と
ワークシート変数[‘セル名’].font = Font(name = ‘フォント名’)
をセットで覚えてください。

最後までお読みいただき、ありがとうございました。がんばってください!

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