PythonでExcelのすべての非表示行・非表示列を一括で表示する方法 ~openpyxlでシート構造をリセット~

Excelファイルを扱っていると、過去の編集によって行や列が非表示のままになっていることがあります。これが原因でデータの見落としや集計ミスが発生するケースも少なくありません。

本記事では、**Pythonライブラリ「openpyxl」**を使って、すべての非表示行・非表示列を自動で再表示(解除)する方法をご紹介いたします。


目次

処理概要

  • 対象ファイル:financial_report.xlsx
  • 処理内容:非表示になっている行と列をすべて表示状態に戻す
  • 結果保存:financial_report_cleaned.xlsx という別ファイル名で保存

Pythonスクリプト:非表示行・非表示列の解除

from openpyxl import load_workbook

# ファイルの読み込み
workbook = load_workbook('financial_report.xlsx')
worksheet = workbook.active

# 行の非表示を解除(2行目以降)
for row_idx in range(2, worksheet.max_row + 1):
    worksheet.row_dimensions[row_idx].hidden = False

# 列の非表示を解除(B列以降)
for col_idx in range(2, worksheet.max_column + 1):
    col_letter = worksheet.cell(row=1, column=col_idx).column_letter
    worksheet.column_dimensions[col_letter].hidden = False

# 別名で保存
workbook.save('financial_report_cleaned.xlsx')

解説ポイント

処理内容解説
worksheet.row_dimensions[].hidden = False非表示の行を再表示
worksheet.column_dimensions[].hidden = False非表示の列を再表示
worksheet.cell(row=1, column=col_idx).column_letter列番号をアルファベットへ変換に利用
range(2, ...)1行目・1列目はヘッダーと想定し除外可能

応用ポイント

  • 必要に応じて1行目や1列目も含める場合は range(1, ...) に変更可能です。
  • 特定シートだけでなく、全シート対象にループ処理することで、ブック全体の非表示を解除することもできます。
  • セルの背景色や書式を使って「意図的に非表示にしていた列」を判別するロジックと組み合わせることも可能です。

注意点

  • 非表示状態であっても、セルの値や数式は保持されています。再表示により予期せぬレイアウトになる可能性があるため、元ファイルは上書きせず別名保存がおすすめです。
  • 非表示にしていた理由が明確な場合は、再表示後に手動での確認や整形を行うと安全です。

まとめ

Pythonのopenpyxlライブラリを使えば、Excelブック内のすべての非表示行・非表示列を簡単に再表示することができます。データの全体像を把握しやすくなり、表やグラフの不具合も解消できる可能性があります。

社内共有ファイルやテンプレートなど、レイアウトが複雑になりがちなExcelブックの整理にも役立つテクニックです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次