せっかく自動化したのに、見た目が真っ白な表だと結局あとで手直しが必要になりますよね。
現役エンジニアの私も、最初は「OpenPyXLの書き方って独特だな…」と苦労しました。でも、一度「型(テンプレート)」を覚えてしまえば、二度と手作業でポチポチ色を塗る必要はなくなります。
今回は、初心者の方がそのままコピペして使える「セルの色付けと罫線の引き方」を、どこよりも分かりやすく解説します!
必要なパーツを読み込もう
OpenPyXLでデザインをいじるには、標準の機能に加えて「デザイン用の部品(スタイル)」を読み込む必要があります。まずはここをコードの先頭に貼り付けましょう。
“`python
import openpyxl
デザイン調整に必要な部品たち
from openpyxl.styles import PatternFill, Border, Side, Alignment
“`
1. セルに色を塗る(PatternFill)
「見出しをグレーにしたい」「特定の項目を赤くしたい」ときは、PatternFillを使います。
“`python
新しいExcelファイルを作る
wb = openpyxl.Workbook()
ws = wb.active
【色を指定する】
start_color, end_colorに「16進数のカラーコード(RRGGBB)」を指定します
※よく使う色:薄いグレー(D3D3D3)、黄色(FFFF00)、青(0000FF)
fill = PatternFill(patternType=’solid’, fgColor=’D3D3D3′)
セルA1に適用する
ws[‘A1’] = “項目名”
ws[‘A1’].fill = fill
wb.save(‘design_test.xlsx’)
“`
ポイント:
色は「RGB」という6桁の英数字(16進数)で指定します。Excelの「色の設定」画面で見れるコードと同じです。
2. 罫線を引く(Border & Side)
罫線は「線の種類(Side)」を決めてから、それを「上下左右のどこに引くか(Border)」という2段階の設定で動かします。
“`python
1. 線の種類を決める(thin=細線, thick=太線, double=二重線など)
side = Side(style=’thin’, color=’000000′)
2. 上下左右にその線を適用する設定を作る
border = Border(top=side, bottom=side, left=side, right=side)
セルB2に適用する
ws[‘B2’] = “枠線あり”
ws[‘B2’].border = border
“`
【実践】コピペで完成!表を丸ごと装飾するコード
一つずつ設定するのは大変なので、「見出しを装飾して、表全体に線を引く」という実務で一番使うパターンをまとめました。
“`python
import openpyxl
from openpyxl.styles import PatternFill, Border, Side, Alignment
def auto_format_excel():
wb = openpyxl.Workbook()
ws = wb.active
# サンプルデータ
data = [
["ID", "名前", "売上"],
[1, "田中", 5000],
[2, "佐藤", 7500],
[3, "鈴木", 3000]
]
for row in data:
ws.append(row)
# デザインの定義
header_fill = PatternFill(patternType='solid', fgColor='4F81BD') # 濃い青
side = Side(style='thin', color='000000')
border = Border(top=side, bottom=side, left=side, right=side)
center_align = Alignment(horizontal='center')
# 1行目(見出し)だけデザインを変える
for cell in ws[1]:
cell.fill = header_fill
cell.alignment = center_align
# 見出しの文字色を白にする場合はこちら(追加でFontのインポートが必要)
# cell.font = openpyxl.styles.Font(color="FFFFFF", bold=True)
# 全てのセルに罫線を引く
for row in ws.iter_rows(min_row=1, max_row=ws.max_row, min_col=1, max_col=ws.max_column):
for cell in row:
cell.border = border
wb.save('売上表_自動装飾.xlsx')
print("作成が完了しました!")
auto_format_excel()
“`
よくあるエラーと対処法
1. 「カラーコードを指定したのに色が変」
OpenPyXLでは、カラーコードの前に「#」を入れないでください。
❌ #D3D3D3
⭕ D3D3D3
2. 「範囲指定(A1:C10)に一気に色を塗りたい」
実はOpenPyXLには、範囲に対して一括でデザインを適用するコマンドがありません。
面倒に見えますが、上記のコードのようにfor文を使って1セルずつループで適用するのが、一番確実でエラーの出ない方法です。
まとめ:自動化で「見た目」も100点に
「OpenPyXLは見た目の調整が難しい」と思われがちですが、一度自分のお気に入りのデザイン設定を関数化しておけば、次からはそれを呼び出すだけでプロ級のレポートが完成します。
これで、Excelを開いて「罫線を引いて、色を塗って…」という無駄な5分間から解放されます。ぜひ活用して、どんどん業務を楽にしていきましょう!

コメント