行高さ変更は「Excelの見た目を整え、読みやすいシートを自動生成する」ための基本テクニック
Excel業務自動化では、行の高さを調整する処理がとても重要です。
なぜなら、次のような問題を防げるからです。
- 行が狭くて文字が見切れる
- ヘッダー行が目立たない
- 入力フォームが読みにくい
- 手作業で行高さを調整する手間がかかる
Pythonの openpyxl を使えば、行高さを自由に変更できます。
初心者でも理解しやすいように、基本から実務テンプレートまで丁寧に解説します。
行高さを指定して変更する(最も基本)
1行目の高さを25にする
from openpyxl import load_workbook
wb = load_workbook("sample.xlsx")
ws = wb["Sheet1"]
ws.row_dimensions[1].height = 25
wb.save("sample.xlsx")
Python深掘りポイント
row_dimensions[行番号].heightに数値を入れるだけ- 単位は「Excelの行高さの単位」
- 25 は少し高めで、ヘッダー行にちょうど良い
- 見出しやタイトル行でよく使う
複数行の高さをまとめて変更する(テンプレート作成に便利)
1〜5行目の高さを一括で設定
for row in range(1, 6):
ws.row_dimensions[row].height = 20
Python深掘りポイント
- 行番号をループして一括設定
- 入力フォームや帳票の整形でよく使う
- 行高さを統一すると見た目が美しくなる
内容に合わせて行高さを自動調整する(AutoFit風)
Excelの「自動調整(AutoFit)」は openpyxl では直接使えません。
しかし、文字数を基準に行高さを自動調整することはできます。
セルの文字数に応じて行高さを調整する
for row in ws.iter_rows():
max_length = 0
row_num = row[0].row
for cell in row:
if cell.value:
max_length = max(max_length, len(str(cell.value)))
ws.row_dimensions[row_num].height = max(15, max_length * 1.2)
Python深掘りポイント
- 行内の最大文字数を取得して高さを決める
max(15, max_length * 1.2)で最低高さを確保- 長文が入る行でも見切れにくくなる
- 完全なAutoFitではないが実務では十分使える
特定の行だけ自動調整する(効率的)
2行目だけ自動調整したい場合
row = ws[2]
max_length = max(len(str(cell.value)) for cell in row if cell.value)
ws.row_dimensions[2].height = max(15, max_length * 1.2)
Python深掘りポイント
- 全行ではなく「必要な行だけ」調整できる
- コメント欄や説明文が入る行でよく使う
行高さとセルの折り返しを組み合わせる(見やすさUP)
折り返し設定と行高さ調整
from openpyxl.styles import Alignment
ws["C2"].alignment = Alignment(wrap_text=True)
ws.row_dimensions[2].height = 40
Python深掘りポイント
wrap_text=Trueでセル内改行が有効になる- 行高さを広げると長文が見やすくなる
- 説明文・備考欄でよく使う
例題①:ヘッダー行を強調するために高さを広げる
シナリオ
A1〜D1 をヘッダーとして高さを30にしたい。
ws.row_dimensions[1].height = 30
Python解説
- ヘッダー行が目立ち、読みやすくなる
- 背景色や太字と組み合わせるとさらに効果的
例題②:入力フォームの行高さを整える
シナリオ
2〜10行目を入力欄として高さを18に統一
for row in range(2, 11):
ws.row_dimensions[row].height = 18
Python解説
- 入力欄の見た目が整い、使いやすくなる
- フォーム自動生成でよく使う
例題③:備考欄(C列)の長文に合わせて行高さを自動調整
for row in ws.iter_rows(min_row=2):
text = row[2].value # C列
if text:
length = len(str(text))
row_num = row[0].row
ws.row_dimensions[row_num].height = max(15, length * 0.8)
Python解説
- 備考欄の長文が見切れないように調整
- レポートや明細表でよく使う
pathlib を使った読みやすい行高さ変更コード
Pathオブジェクトで直感的に書ける
from pathlib import Path
from openpyxl import load_workbook
path = Path("sample.xlsx")
wb = load_workbook(path)
ws = wb.active
ws.row_dimensions[1].height = 25
wb.save(path)
Pythonメリット
- パス結合が
/で直感的 - 大規模プロジェクトでも保守性が高い
行高さ変更を業務で設計するときの視点
- 固定高さ設定はテンプレート作成に最適
- 自動調整は長文が入る帳票に最適
- 行高さと折り返し設定を組み合わせると見やすさが大幅UP
- 列幅と行高さをセットで調整すると帳票の品質が上がる
- pandasでは行高さを設定できないため openpyxl が必須
