openpyxlでヘッダー/フッターを使いこなす!基本から画像挿入まで徹底解説

openpyxl

はじめに:PythonでExcelのヘッダー・フッター設定を自動化しよう

定期的に作成するExcelレポートのヘッダーに会社名を入れたり、フッターにページ番号を振ったりする作業、手動で行うのは少し面倒ですよね。特に、多数のファイルに同じ設定を適用するのは時間のかかる作業です。

この記事では、Pythonのopenpyxlライブラリを使って、Excelのヘッダーとフッターの設定を完全に自動化する方法を解説します。

基本的なテキスト設定から、ページ番号の自動挿入、さらには会社のロゴ画像をヘッダーに入れる応用テクニックまで、この記事を読めばすべてマスターできます。

  • 単純なテキスト設定で満足できない
  • ページ番号や日付を自動で入れたい
  • ヘッダーに画像を挿入する方法が知りたい

このような悩みを持つ方は、ぜひ最後までお読みください。面倒な手作業から解放されましょう!

まずは基本!openpyxlでヘッダー・フッターに文字を入れる

ヘッダー・フッター操作の第一歩は、指定した場所にテキストを設定することです。openpyxlでは、ワークシートのheader_footerプロパティから簡単にアクセスできます。

必要なライブラリのインストール

もしopenpyxlをインストールしていない場合は、ターミナルやコマンドプロンプトで以下のコマンドを実行してください(Bash)。

pip install openpyxl

openpyxl 3.0.0以降のバージョンで動作確認しています。

ヘッダー/フッターの左・中央・右にテキストを設定するコード

Excelのヘッダー/フッターは、それぞれ「左側 (left)」「中央 (center)」「右側 (right)」の3つのエリアに分かれています。openpyxlでは、これらのエリアに直感的にテキストを設定できます。

import openpyxl

# 新しいワークブックとアクティブなシートを取得
wb = openpyxl.Workbook()
ws = wb.active

# --- ヘッダーの設定 ---
# 左側に日付のコードを設定
ws.header_footer.left_header.text = "作成日: &D"
# 中央にドキュメントのタイトルを設定
ws.header_footer.center_header.text = "2025年度 月次報告書"

# --- フッターの設定 ---
# 右側にページ番号のコードを設定
ws.header_footer.right_footer.text = "&P / &N ページ"

# ファイルを保存
wb.save("header_footer_basic.xlsx")

このコードを実行して生成されたExcelファイルを開き、印刷プレビューを見ると、設定した内容が反映されていることが確認できます。&D&Pなどの特殊なコードについては、次で詳しく解説します。

ページ番号・日付・ファイル名を自動で挿入するテクニック

openpyxlのヘッダー/フッター設定では、Excelの機能と同じように特殊な「書式設定コード」を使うことで、印刷時に日付やページ番号などの情報を自動的に埋め込むことができます。

覚えておくと便利な書式設定コード

これらのコードは&とアルファベットの組み合わせで表現されます。非常によく使うものばかりなので、覚えておきましょう。

コード説明
&P現在のページ番号
&N総ページ数
&D現在の日付
&T現在の時刻
&Fファイル名(拡張子付き)
&Aシート(タブ)名
&&&という文字自体を表示

フォントのスタイルやサイズを変更する方法

テキストの見た目をリッチにするための書式コードも用意されています。

コード説明
&B太字のON/OFF
&I斜体のON/OFF
&U一重下線のON/OFF
&"フォント名"指定フォントに変更 (例: &"MS Pゴシック")
&フォントサイズフォントサイズ変更 (例: &14)

これらのコードを組み合わせることで、ヘッダー/フッターの表現力が格段に向上します。

import openpyxl

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

# 書式コードを組み合わせて、目立つヘッダーを作成
ws.header_footer.center_header.text = '&"Times New Roman,Bold"&18CONFIDENTIAL'

# ファイル名とシート名をフッターに表示
ws.header_footer.left_footer.text = "ファイル: &F, シート: &A"

wb.save("header_footer_formatted.xlsx")

【徹底解説】ヘッダー/フッターに会社のロゴ画像を挿入する

レポートや公式文書に会社のロゴを入れるのは一般的な要件です。openpyxlを使えば、この画像挿入も自動化できます。

画像を挿入する仕組み (&Gプレースホルダー)

まず、openpyxlで画像を挿入するには、ヘッダー/フッターのテキストに&Gという特別なコードを設定します。

この&Gは**「ここに画像が入りますよ」という目印(プレースホルダー)**の役割を果たします。openpyxlは、この&Gを見つけると、別途指定された画像をその場所に埋め込みます。

画像挿入の具体的なサンプルコードと注意点

画像挿入には、openpyxl.drawing.image.Imageクラスを使用します。

import openpyxl
from openpyxl.drawing.image import Image

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

# 1. ヘッダーに画像のプレースホルダー(&G)を設定
ws.header_footer.left_header.text = "&G"

# 2. 画像ファイルを読み込む
#    Pythonスクリプトと同じ階層に 'logo.png' があることを想定
try:
    img = Image("logo.png")
    
    # 画像のサイズを調整(任意)
    img.height = 50
    img.width = 200

    # 3. ワークシートのヘッダーに画像オブジェクトを追加
    ws.header_footer.left_header.images.append(img)

except FileNotFoundError:
    print("エラー: 'logo.png'が見つかりません。")


wb.save("header_footer_with_image.xlsx")

重要なポイント:

  • &Gをテキストとして設定することと、画像オブジェクトを.imagesリストに追加すること、この2つの手順がセットです。
  • 画像ファイル(この例ではlogo.png)が、実行するPythonスクリプトと同じディレクトリに存在する必要があります。パスが違う場合は、Image("C:/path/to/your/logo.png")のように絶対パスや相対パスで指定してください。

レポート作成に役立つ応用的な設定

さらに一歩進んだ、より実用的な設定方法も見ていきましょう。

奇数ページと偶数ページで内容を変える方法

本のように、見開きの左右でページ番号の位置を変えたい場合に便利な機能です。

import openpyxl

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

# 1. 奇数/偶数ページで異なる設定を有効にする
ws.header_footer.differentOddEven = True

# 2. 奇数ページ(Odd)のフッターを右側に設定
ws.header_footer.odd_footer.right.text = "&P"

# 3. 偶数ページ(Even)のフッターを左側に設定
ws.header_footer.even_footer.left.text = "&P"

# 複数ページになるようにダミーデータを入力
for i in range(1, 150):
    ws.cell(row=i, column=1).value = f"Line {i}"

wb.save("header_footer_odd_even.xlsx")

表紙など、最初のページだけ設定を変える方法

レポートの1ページ目は表紙としてヘッダーを非表示にしたい、といったケースに対応できます。

import openpyxl

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

# 1. 最初のページだけ異なる設定を有効にする
ws.header_footer.differentFirst = True

# 2. 最初のページのヘッダーは空にする
ws.header_footer.first_header.center.text = ""

# 3. 2ページ目以降の通常(Odd)ヘッダーを設定
ws.header_footer.odd_header.center.text = "本文"

wb.save("header_footer_first_page.xlsx")

まとめ

今回は、Pythonとopenpyxlを使ってExcelのヘッダーとフッターを自在に操る方法を、基本から画像挿入まで徹底的に解説しました。

  • 基本は.left_header.textのようにプロパティに文字列を設定するだけ
  • &P&Dなどの書式コードを使えば、ページ番号や日付も自動挿入できる
  • 画像の挿入は&GプレースホルダーとImageオブジェクトの追加で行う
  • 奇数/偶数ページや最初のページだけ設定を変えるなど、高度な印刷設定も可能

これらのテクニックを活用すれば、面倒なExcelの体裁を整える作業を大幅に効率化できます。ぜひあなたの業務自動化に役立ててください。

コメント

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