
毎週使う定例会議の資料を作っているんだけど、右上に日付を入れたい…。
openpyxlでヘッダーを設定する方法は無いの?

ありますよ!
では今回は、「openpyxlでヘッダー・フッターを設定する方法」
をできるだけわかりやすく解説いたします!

openpyxlでヘッダー・フッターを設定する方法
「oddHeader」「oddFooter」を使います。
まずは冒頭の会話のように、右上(ヘッダー右側)に日付を追加してみましょう。
ひとまず全コードと実行結果をお見せします。
解説は後ほど行います。
全コード
import openpyxl
wb = openpyxl.load_workbook('C://Utatane/input.xlsx')
ws = wb['Sheet1']
ws.oddHeader.right.text = '20240922'
wb.save('C://Utatane/output.xlsx')
ws.oddHeader.right.text = '20240922'
実行結果

事前準備
- openpyxlのインストール
既存のエクセルファイルを編集するには「openpyxl」のインストールが必要です。
openpyxlのインストール方法
openpyxlを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install openpyxl
※openpyxlを使用したことがある場合は、このインストール作業は不要です。
インストールに関する詳細や、インストールができなかった場合の対処法は下記記事で解説しております。
また、既存ファイルを開いて保存する方法など、基本解説も行っておりますのでご参考ください。
解説
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
ws.oddHeader.right.text = '20240922'
上記一文にて、右側のヘッダーに文字を追加することができます。
今回は日付にしましたが、議題や作成者など何でも大丈夫です。
【コード解説】
ワークシートが入った変数(ws)に続けて「.oddHeader.right.text」を書き、「=(イコール)」を書きます。
右辺には表示したい文字を記述して完了です。
【注意点】
「.oddHeader.right.text」は、大文字小文字が混在していますのでご注意ください。
全部小文字にすると動きません。
また、右辺の文字は必ず「’(クォーテーション)」で囲ってください。
たとえ数字であっても、クォーテーション無しでそのまま記述すると動きません。
ヘッダーの位置は、右側以外にも、「左側」「中央」があります。
下記のように記述することで表示することができます。
- oddHeader.left.text:ヘッダー左側
- oddHeader.center.text:ヘッダー中央
- oddHeader.right.text:ヘッダー右側
簡単なコード見本と実行結果を貼っておきます。
import openpyxl
wb = openpyxl.load_workbook('C://Utatane/input.xlsx')
ws = wb['Sheet1']
ws.oddHeader.left.text = '2024'
ws.oddHeader.center.text = '09'
ws.oddHeader.right.text = '22'
wb.save('C://Utatane/output.xlsx')
下図は、実行結果(「ページ設定画面」と「印刷プレビュー画面」)です。
「ページ設定画面」は、エクセルの「ページレイアウト」→「余白」→「ユーザー設定の余白」と進むと表示されます。

フッターも同様に設定できます。
フッターの場合は、「oddFooter」となりますので、間違えないようにしてください。
ws.oddFooter.left.text = '2024'
ws.oddFooter.center.text = '09'
ws.oddFooter.right.text = '22'

ヘッダーやフッターに本日の日付を追加したい場合は、便利なコマンドのようなものがあります。
次項で解説していきます。
ヘッダー・フッターの便利コマンド
前項では、ヘッダー・フッターの設定方法を紹介いたしました。
ここからは、ヘッダー・フッター設定で使える便利なコマンドを紹介いたします。
「日付」や「ファイル名」「シート名」などを簡単に追加できます。
- &D:日付
- &T:時刻
- &F:ファイル名
- &A:シート名
- &P:ページ番号
- &N:総ページ数
例えば右辺に「’&D’」と記述するだけで、本日の日付をヘッダー・フッターに入れることができます。
コードの一例を紹介いたします。
import openpyxl
wb = openpyxl.load_workbook('C://Utatane/input.xlsx')
ws = wb['Sheet1']
ws.oddHeader.right.text = '&D'
wb.save('C://Utatane/output.xlsx')
上記コードは、ヘッダー右側に本日の日付を入れています。

コマンドと文字を組み合わせることもできます。
import openpyxl
wb = openpyxl.load_workbook('C://Utatane/input.xlsx')
ws = wb['Sheet1']
ws.oddHeader.left.text = '&D 作成者:Utatane'
wb.save('C://Utatane/output.xlsx')

関連記事として、余白を設定する方法も解説しております。ご参考ください。
ヘッダー・フッターを取得・コピーする方法
シート内のヘッダー・フッターを取得して、別のブックにコピーすることも可能です。
ひとまず全コードをお見せします。
少し長いですが、簡単ですのでゆっくり見ていってください。
import openpyxl
wb_input = openpyxl.load_workbook('C://Utatane/input.xlsx')
ws_input = wb_input['Sheet1']
wb_output = openpyxl.load_workbook('C://Utatane/output.xlsx')
ws_output = wb_output['Sheet1']
ws_output.oddHeader.left.text = ws_input.oddHeader.left.text
ws_output.oddHeader.center.text = ws_input.oddHeader.center.text
ws_output.oddHeader.right.text = ws_input.oddHeader.right.text
ws_output.oddFooter.left.text = ws_input.oddFooter.left.text
ws_output.oddFooter.center.text = ws_input.oddFooter.center.text
ws_output.oddFooter.right.text = ws_input.oddFooter.right.text
wb_output.save('C://Utatane/output.xlsx')
【コード解説】
3行目・4行目:コピー元のブック・シートを開く
6行目・7行目:コピー先のブック・シートを開く
9~14行目:ヘッダー・フッターの各場所をコピー元シートから取得し、コピー先シートへ入れる
16行目:コピー先ブックを保存

うまく動作しない場合の対処法
エラーが出る
No such file or directory: ○○
これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。
詳しい解説は、下記記事をご参考ください。
Permission denied: ○○
操作しようとしているファイルにアクセスできないというエラーです。
「ファイルを開いている状態なので編集できない」と言っていることが多いので、開いていれば閉じて再度トライしましょう。
詳しい解説は、下記記事をご参考ください。
Worksheet ○○ does not exist
「指定したシートがありません」というエラーです。
指定のシート名が間違っていないか、「sheet1」など先頭が小文字になっていないか確認しましょう。
詳しい解説は、下記記事をご参考ください。
○○ is not defined
今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。
詳しい解説は、下記記事をご参考ください。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
最後に
openpyxlでヘッダー・フッターを設定する方法を解説いたしました。
当ブログでは、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
挫折せずにPythonを独学で学習する方法は特におすすめです。
最後までお読みいただき、ありがとうございました。がんばってください!