大量のワークシートを含む Excel ブックを納品前に整える際、「シートごとの初期表示セルやズーム倍率をそろえる」「印刷設定を統一する」 といった作業を手動で行うのは意外と手間が掛かります。本記事では openpyxl を利用し、すべてのシートに対して下記の体裁を一度に設定する Python スクリプトをご紹介いたします。
調整内容 | 具体的なプロパティ |
---|---|
スクロール開始位置・ズーム倍率 | sheet_view.selection / zoomScale |
印刷範囲・タイトル行 | print_area / print_title_rows |
ヘッダー・フッター | oddHeader.center.text / oddFooter.center.text |
用紙方向・用紙サイズ | page_setup.orientation / page_setup.paperSize |
ページ合わせ | fitToWidth / fitToHeight / fitToPage |
目次
1. 前提環境
項目 | 内容 |
---|---|
Python | 3.10 以上 |
ライブラリ | openpyxl (pip install openpyxl ) |
入力ファイル例 | checklist.xlsx |
出力ファイル例 | checklist_formatted.xlsx |
2. シート表示の統一(初期セル & ズーム)
from openpyxl import load_workbook
# --- 設定値 ---
focus_cell = 'B2' # シートを開いた直後に選択されるセル
zoom_ratio = 110 # ズーム倍率 (%)
wb = load_workbook('checklist.xlsx')
for ws in wb.worksheets:
sv = ws.sheet_view
# 選択セルを固定
sel = sv.selection[0]
sel.activeCell = focus_cell
sel.sqref = focus_cell
# ズーム倍率を統一
sv.zoomScale = zoom_ratio
sv.zoomScaleNormal = zoom_ratio
wb.save('checklist_formatted.xlsx')
3. 印刷設定を一括適用
from openpyxl import load_workbook
# --- 一括設定する値 ---
print_range = 'A1:E60'
title_rows = '1:4'
header_center = '&F' # ファイル名
footer_center = '&P / &N pages' # ページ番号
paper_direction = 'landscape' # portrait / landscape
paper_kind = 'A3' # openpyxl.constants.PAPERSIZE
fit_width_pages = 1
fit_height_pages = 0 # 0 = 自動
wb = load_workbook('checklist_formatted.xlsx')
for ws in wb.worksheets:
# 印刷範囲とタイトル行
ws.print_area = print_range
ws.print_title_rows = title_rows
# ヘッダー & フッター
ws.oddHeader.center.text = header_center
ws.oddFooter.center.text = footer_center
# 用紙設定
ps = ws.page_setup
ps.orientation = paper_direction
ps.paperSize = getattr(ws, f'PAPERSIZE_{paper_kind}')
ps.fitToWidth = fit_width_pages
ps.fitToHeight = fit_height_pages
ws.sheet_properties.pageSetUpPr.fitToPage = True
wb.save('checklist_formatted.xlsx')
ポイント
コード片 | 説明 |
---|---|
print_area = 'A1:E60' | 余白を除いた実データ部分を設定します。 |
title_rows = '1:4' | 印刷時に各ページの最上部へ繰り返し表示される行範囲です。 |
fitToPage | 横幅 1 ページに収め、高さは自動 (0 ) にすると縦方向の改ページ数を柔軟に調整できます。 |
4. まとめ
- sheet_view と page_setup を利用すれば、閲覧時の見やすさ と 印刷時のレイアウト をまとめて統一できます。
- プロパティ名のスペルミス(
sheet_properties
/page_setup
など)に注意しつつ、一括で設定することで納品前の最終チェック時間を短縮できます。 - 他のブックにも再利用できるよう、設定値を定数としてまとめておくと運用がスムーズです。