Python 業務自動化 | Excel業務自動化:Excel基本操作 - 行高さ変更

Python Python
スポンサーリンク

行高さ変更は「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 が必須

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