- エクセルの書式を自動で素早く変更したい
- Pythonのopenpyxlでどのような書式を変更できるのかを知りたい
そんなお悩みを解決に導きます。
この記事を読むことで、下記のことがわかります。
- エクセルの書式を一瞬で変更する方法がわかる
- openpyxlでどんな書式が変更できるのかを知れる
openpyxlでエクセルの書式を変更する方法
エクセルには、大きく分けて3つの書式が存在します。
- セルの書式
- 文字の書式
- シートの書式
まずは書式を変更するために必要な事前準備をチェックしてください。
事前準備
- openpyxlのインストール
エクセルファイルの書式を変更するには「openpyxl」のインストールが必要です。
openpyxlのインストール方法
openpyxlを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install openpyxl
※openpyxlを使用したことがある場合は、このインストール作業は不要です。
インストールに関する詳細や、インストールができなかった場合の対処法は下記記事で解説しております。
また、既存ファイルを開いて保存する方法など、基本解説も行っておりますのでご参考ください。
準備が整ったところで、まずはセルの書式を変更する方法を細かく見ていきましょう。
セルの書式
セルの書式には以下のようなものがあり、これらをopenpyxlで変更することができます。
- 文字の配置を変更
- 文字を折り返して全体を表示
- 文字を縮小して全体を表示
- セルの結合・解除
- 罫線を引く
- 塗りつぶし・網掛け
- コメント(メモ)の挿入
文字の配置を変更
import openpyxl
from openpyxl.styles.alignment import Alignment
wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
ws = wb['Sheet1']
ws['A1'].alignment = Alignment(horizontal='center',vertical='center')
wb.save('C:/Utatane/output.xlsx')
上記コードを実行することで、セル内の文字の配置を変更することができます。
(今回はA1セルの文字を上下左右中央に配置)
下図が実行結果です。

中央以外に配置する方法は、下記記事をご参考ください。
縦書き
import openpyxl
from openpyxl.styles import Alignment
wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
ws = wb['Sheet1']
ws['A1'].alignment = Alignment(textRotation = 255)
wb.save('C:/Utatane/output.xlsx')
上記コードを実行することで、セル内の文字を縦書きにすることができます。
下図が実行結果です。

下記記事にて、ナナメや下から上など、いろいろな表示方法を紹介しております。
文字を折り返して全体を表示
import openpyxl
from openpyxl.styles.alignment import Alignment
wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
ws = wb['Sheet1']
ws['A2'].alignment = Alignment(wrapText = True)
wb.save('C:/Utatane/output.xlsx')
上記コードを実行することで、セル内の文字を折り返して全体を表示させることができます。
下図が実行結果です。

下記記事にて、元に戻す方法も紹介しております。
文字を縮小して全体を表示
import openpyxl
from openpyxl.styles import Alignment
wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
ws = wb['Sheet1']
ws['A1'].alignment = Alignment(shrinkToFit=True)
wb.save('C:/Utatane/output.xlsx')
上記コードを実行することで、セル内の文字を縮小して表示させることができます。
下図が実行結果です。

全てのセルに適用する方法や、元に戻す方法も含めて下記記事で解説しております。
セルの結合・解除
import openpyxl
wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
ws = wb['Sheet1']
ws.merge_cells('A1:C1')
ws.unmerge_cells('A3:C3')
wb.save('C:/Utatane/output.xlsx')
上記コードを実行することで、セルの結合・解除をすることができます。
下図が実行結果です。

罫線や塗りつぶしがあるとどうなるのかも含めて、下記記事で解説しております。
罫線を引く
import openpyxl
from openpyxl.styles.borders import Border, Side
wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
ws = wb['Sheet1']
border_spec1 = Side(style='thin', color='000000')
ws['B2'].border = Border(top=border_spec1, bottom=border_spec1, left=border_spec1, right=border_spec1)
wb.save('C:/Utatane/output.xlsx')
上記コードを実行することで、セルに罫線を引くことができます。
下図が実行結果です。

いろいろなパターンも含めて、下記記事で詳しく解説しております。
塗りつぶし・網掛け
import openpyxl
from openpyxl.styles import PatternFill
wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
ws = wb['Sheet1']
ws['A1'].fill = PatternFill(patternType='solid', fgColor='FF0000')
wb.save('C:/Utatane/output.xlsx')
上記コードを実行することで、セルに塗りつぶしを設定することができます。
下図が実行結果です。

網掛けの種類も含めて、下記記事で詳しく解説しております。
コメント(メモ)の挿入
import openpyxl
from openpyxl.comments import Comment
wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
ws = wb['Sheet1']
ws['A1'].comment = Comment(text='暫定の数値です', author='Utatane')
wb.save('C:/Utatane/output.xlsx')
上記コードを実行することで、セルにコメント(メモ)を挿入することができます。
下図が実行結果です。

下記記事にて詳しく解説しております。ご参考ください。
文字の書式
続いて文字の書式です。
- 文字のフォントを変更
- 文字の大きさを変更
- 文字の色を変更
- 太字・下線・斜体
- 取り消し線を引く
- 上付き・下付き
- 表示形式の変更
- 列の幅・行の高さを変更
文字のフォントを変更
import openpyxl
from openpyxl.styles.fonts import Font
wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
ws = wb['Sheet1']
ws['A1'].font = Font(name = 'HGP創英角ポップ体')
wb.save('C:/Utatane/output.xlsx')
上記コードを実行することで、文字のフォントを変更することができます。
(今回は、A1セルの文字を「HGP創英角ポップ体」に変更)
下図が実行結果です。

しかしながら、コツを知らないとうまく反映されません。
下記記事をご参考ください。
文字の大きさを変更
import openpyxl
from openpyxl.styles.fonts import Font
wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
ws = wb['Sheet1']
ws['A2'].font = Font(size = 24)
wb.save('C:/Utatane/output.xlsx')
上記コードを実行することで、文字の大きさを変更することができます。
下図が実行結果です。

コードの詳しい解説は、下記記事をご覧ください。
文字の色を変更
import openpyxl
from openpyxl.styles import Font
wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
ws = wb['Sheet1']
ws['A1'].font = Font(color='FF0000')
wb.save('C:/Utatane/output.xlsx')
上記コードを実行することで、文字の色を変更することができます。
下図が実行結果です。

他の色も含めて、下記記事で詳しく解説しております。
太字・下線・斜体
import openpyxl
from openpyxl.styles.fonts import Font
wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
ws = wb['Sheet1']
ws['A1'].font = Font(bold = True)
ws['A2'].font = Font(underline='single')
ws['A3'].font = Font(italic = True)
wb.save('C:/Utatane/output.xlsx')
上記コードを実行することで、文字を太字や斜体にしたり、下線を引くことができます。
下図が実行結果です。

それぞれ下記記事にて詳しく解説しております。
取り消し線を引く
import openpyxl
from openpyxl.styles.fonts import Font
wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
ws = wb['Sheet1']
ws['A1'].font = Font(strike = True)
wb.save('C:/Utatane/output.xlsx')
上記コードを実行することで、セル内の文字に取り消し線を引くことができます。
下図が実行結果です。

元に戻す方法も含めて、下記記事で詳しく解説しております。
上付き・下付き
import openpyxl
from openpyxl.styles.fonts import Font
wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
ws = wb['Sheet1']
ws['A1'].font = Font(vertAlign = 'superscript') #上付き
ws['A2'].font = Font(vertAlign = 'subscript') #下付き
wb.save('C:/Utatane/output.xlsx')
上記コードを実行することで、セル内の文字を上付き・下付きにすることができます。
下図が実行結果です。

元に戻す方法や、一部の文字を上付き・下付きにする方法も含めて、下記記事で詳しく解説しております。
表示形式の変更
import openpyxl
wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
ws = wb['Sheet1']
cell = ws['A1']
cell.number_format = '0%'
wb.save('C://Utatane/output.xlsx')
上記コードを実行することで、セルの表示形式を変更することができます。
(今回はパーセント表示に変更)
下図が実行結果です。

数値や文字列など、他の表示形式に変更する方法も含めて、下記記事で詳しく解説しております。
列の幅・行の高さを変更
import openpyxl
wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
ws = wb['Sheet1']
ws.column_dimensions['B'].width = 20
ws.row_dimensions[2].height = 30
wb.save('C:/Utatane/output.xlsx')
上記コードを実行することで、列の幅や行の高さを変更することができます。
下図が実行結果です。

右辺の数値の単位も含めて、下記記事で詳しく解説しております。
シートの書式
- シート見出しの色を変更
- シート名を変更
- シートの順番を変更
- 枠線の非表示
- ヘッダー・フッターの挿入
シート見出しの色を変更
import openpyxl
wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
ws = wb['Sheet1']
ws.sheet_properties.tabColor = 'FF0000'
wb.save('C:/Utatane/output.xlsx')
上記コードを実行することで、シート見出しの色を変更することができます。
下図が実行結果です。

元に戻す方法も含めて、下記記事で詳しく解説しております。
シート名を変更
import openpyxl
wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
ws = wb['Sheet1']
ws.title = '変更後シート'
wb.save('C:/Utatane/output.xlsx')
上記コードを実行することで、シート名を変更することができます。
下図が実行結果です。

シートを取得する方法も含めて、下記記事で詳しく解説しております。
シートの順番を変更
import openpyxl
wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
ws = wb['Sheet1']
wb.move_sheet('Sheet1', offset=2)
ws.sheet_view.tabSelected = False
wb.save('C:/Utatane/output.xlsx')
上記コードを実行することで、シートの順番を変更することができます。
下図が実行結果です。

コードの詳細は下記記事にて解説しております。
枠線の非表示
import openpyxl
wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
ws = wb['Sheet1']
ws.sheet_view.showGridLines = False
wb.save('C:/Utatane/output.xlsx')
上記コードを実行することで、シート内の枠線を非表示にすることができます。
下図が実行結果です。

コードの詳細は、下記記事にて解説しております。
ヘッダー・フッターの挿入
import openpyxl
wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
ws = wb['Sheet1']
ws.oddHeader.right.text = '20240922'
wb.save('C:/Utatane/output.xlsx')
上記コードを実行することで、ヘッダー・フッターを挿入することができます。
下図が実行結果です。

コードの詳細は、下記記事にて詳しく解説しております。
最後に
openpyxlで書式を変更する方法をまとめて紹介いたしました。
当ブログでは、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
挫折せずにPythonを独学で学習する方法は特におすすめです。
最後までお読みいただき、ありがとうございました。がんばってください!