はじめに:印刷レイアウトの「神は細部に宿る」
Pythonとopenpyxlで作成したExcelファイル。データは完璧でも、いざ印刷プレビューを見ると「ヘッダーが本文に近すぎる」「フッターの余白が足りない」といった細かな不満が出てくることはありませんか?
美しい印刷物を作成するためには、本文の上下左右の余白だけでなく、ヘッダーとフッター領域の余白調整が欠かせません。
この記事は、openpyxlを使い始めたばかりの初心者の方向けに、PageMarginsクラスの基本的な使い方から、特に混同しやすいヘッダー・フッターの余白設定まで、ステップバイステップで分かりやすく解説する入門ガイドです。
PageMarginsクラスとは?シートの印刷余白を決める設計図
PageMarginsは、openpyxlでワークシートの印刷余白を定義するための専用クラスです。このクラスで余白の設計図を作り、それをワークシートのpage_margins属性に適用することで、印刷設定をコードで制御できます。
この「設計図」には、大きく分けて6つの設定項目があります。
PageMarginsの6つの設定項目を理解する
PageMarginsクラスでは、以下の6つの引数で余白をミリ単位まで細かく指定できます。
left: 左余白(ページの左端から本文までの距離)right: 右余白(ページの右端から本文までの距離)top: 上余白(ページの上端から本文までの距離)bottom: 下余白(ページの下端から本文までの距離)header: ヘッダーの余白(ページの上端からヘッダーの下辺までの距離)footer: フッターの余白(ページの下端からフッターの上辺までの距離)
特に重要なのがtopとheaderの関係です。headerはtopよりも小さい値を設定するのが一般的です。例えばtopが1.0、headerが0.5の場合、本文は上端から1インチの位置から始まり、ヘッダーはその中の上半分(0.5インチの領域)に表示されます。
実践:PageMarginsを使ってみよう
理屈がわかったところで、さっそくコードを書いてPageMarginsを使ってみましょう。
Step 1: 余白を設定するExcelファイルを用意する
まずはopenpyxlで、設定の対象となる簡単なExcelファイルを作成します。
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws.title = "PageMargins_Beginner"
# いくつかのデータを書き込む
ws['A1'] = "これは印刷テスト用のファイルです。"
ws['A2'] = "ページ余白が正しく設定されるか確認します。"
wb.save("margin_test.xlsx")
print("テスト用のExcelファイルを作成しました。")Step 2: PageMarginsで余白を設定・適用する
次に、作成したファイルに具体的な余白を設定します。ここでは、一般的な「標準」の余白に近い値を設定してみましょう。
from openpyxl import load_workbook
from openpyxl.worksheet.page import PageMargins
wb = load_workbook("margin_test.xlsx")
ws = wb.active
# PageMarginsクラスのインスタンス(設計図)を作成
# 単位はすべてインチです
my_margins = PageMargins(
left=0.7,
right=0.7,
top=0.75,
bottom=0.75,
header=0.3,
footer=0.3
)
# 作成した設計図をワークシートに適用
ws.page_margins = my_margins
print("ページ余白の設定が完了しました。")
print(f"設定されたヘッダー余白: {ws.page_margins.header} インチ")
wb.save("margin_test_completed.xlsx")
print("余白設定済みのファイルを保存しました。")margin_test_completed.xlsxをExcelで開き、印刷プレビューを見てください。指定した通りの余白が適用されていることが確認できます。特に、ヘッダーとフッターが本文エリアとは別の、指定された領域内に収まっている点に注目です。
Tips:単位は「インチ」。センチへの換算は?
openpyxlで扱う余白の単位は、Excelの内部仕様に合わせてインチが基本です。
もし「上下余白を2.5cmにしたい」のようにセンチメートルで考えたい場合は、1インチ = 2.54cm の関係を使って手動で計算します。
# 2.5cm をインチに変換
cm = 2.5
inch = cm / 2.54 # 約0.984インチ
# この値をtopやbottomに設定する
margins_in_cm = PageMargins(top=inch, bottom=inch)この換算式を覚えておくと、日本のビジネス文書で求められる単位にも柔軟に対応できます。
まとめ:PageMargins入門の卒業
今回は、openpyxlのPageMarginsクラスの基本的な使い方、特にヘッダーとフッターの余白調整に焦点を当てて解説しました。
- ページ余白は**
PageMarginsクラス**で設定の設計図を作る。 - 設計図は
ws.page_marginsに代入して適用する。 - **
top/bottomは本文の余白、header/footer**はヘッダー・フッター領域の余白。 - 単位はインチ。
PageMarginsを使いこなせれば、Pythonで自動生成するExcelレポートの品質が一段と向上します。データの内容だけでなく、最終的なアウトプットである「印刷物」としての美しさまで追求し、ワンランク上のExcel自動化を目指しましょう。


コメント