提出するエクセルなんだけど、不要な列がある…。
削除すると参照や数式に影響が出るから非表示にしたい。
openpyxlで列や行を非表示にする方法は無いの?
あります!
比較的簡単にできる方法を紹介いたします。
「列や行を非表示にする際の注意点」や
「再表示する方法」も併せて解説いたします!
【著者情報】
Python歴3年。
入社2年目の春に先輩が突然トンズラし、業務を半分肩代わりするハメに…。
今までの1.5倍の仕事をこなせるはずもなく、苦しむ毎日。
業務効率化を模索中にPythonと出合う。
業務とPythonの相性が良く、2倍以上の効率化を実現。現在も効率化を進行中。
openpyxlで列や行を非表示・再表示するには
「column_dimensions」「row_dimensions」を使います。まずは実行見本をどうぞ。
実行見本
全コード
ひとまず全コードを網羅します。解説は後ほど行います。
import openpyxl
wb = openpyxl.load_workbook('input.xlsx')
ws = wb['Sheet1']
ws.column_dimensions['C'].hidden = True
ws.row_dimensions[4].hidden = True
wb.save('output.xlsx')
ws.column_dimensions['C'].hidden = True
ws.row_dimensions[4].hidden = True
事前準備
- openpyxlのインストール
既存のエクセルファイルを編集するには「openpyxl」のインストールが必要です。
openpyxlのインストール方法
openpyxlを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install openpyxl
※openpyxlを使用したことがある場合は、このインストール作業は不要です。
openpyxlの基礎解説
既存ファイルを開いて保存する方法などの操作の基本解説は、下記記事で行っております。
ご参考ください。
解説:
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
列や行を非表示にする
ws.column_dimensions['C'].hidden = True
ws.row_dimensions[4].hidden = True
上記の記述をすることで、列や行を非表示にすることができます。
6行目は「C列を非表示」、7行目は「4行目を非表示」にするコードです。
[列を非表示]
【 ワークシート変数.column_dimensions[‘非表示にしたい列名’].hidden = True 】
[行を非表示]
【 ワークシート変数.row_dimensions[非表示にしたい行番号].hidden = True 】
※行番号は一番上の行が「1」です。「0」ではありませんのでご注意ください。
列や行を再表示する
次に、前項で非表示にした列や行を再表示してみましょう。
ws.column_dimensions['C'].hidden = False
ws.row_dimensions[4].hidden = False
変わっているのは右辺のみで、「True」が「False」になっただけです。
[列を再表示]
【 ワークシート変数.column_dimensions[‘再表示したい列名’].hidden = False 】
[行を再表示]
【 ワークシート変数.row_dimensions[再表示したい行番号].hidden = False 】
手動でC列を再表示する時は、B~D列を選択して再表示する場合が多いと思います。
しかしながら、openpyxlではC列のみを指定して再表示することができます。
関連記事として、列の幅を変更する方法を下記記事にて解説しております。
既に表示されている列や行を再表示させる指定をしても、特にエラーは出ず正常終了します。
非表示になっている列や行を全て再表示させたい場合は、手あたり次第に再表示の指定をするのも一案です。
列や行を非表示にする際の注意点
アクティブセルがある列や行を非表示にした場合、どうなるのでしょうか?
アクティブセルとは、現在カーソルで囲まれているセルだと思ってください。
上図の1行目を非表示にしてみます。
アクティブセルが隠れてしまいました。
場合によっては不自然になる場合がありますので、
非表示にした後、アクティブセルを移動させるのも一つのやり方です。
アクティブセルを移動させる方法は、下記記事で解説しておりますので、ご参考ください。
うまく動作しない時
エラーが出る
‘<‘ not supported between instances of ‘str’ and ‘int’
「TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’」というエラーが出た場合は、
「ws.row_dimensions[‘4’].hidden = True」
という指定をしているのではないでしょうか。
正しくは[4]で、ここの数字を「’」で囲うとエラーが出ます。ご注意ください。
No such file or directory: ○○
これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。
詳しい解説は、下記記事をご参考ください。
Permission denied: ○○
操作しようとしているファイルにアクセスできないというエラーです。
「ファイルを開いている状態なので編集できない」と言っていることが多いので、開いていれば閉じて再度トライしましょう。
詳しい解説は、下記記事をご参考ください。
Worksheet ○○ does not exist
「指定したシートがありません」というエラーです。
指定のシート名が間違っていないか、「sheet1」など先頭が小文字になっていないか確認しましょう。
詳しい解説は、下記記事をご参考ください。
○○ is not defined
今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。
詳しい解説は、下記記事をご参考ください。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
最後に
openpyxlで列や行を非表示・再表示する方法を解説いたしました。
提出用の資料には「非表示」をうまく取り入れて、体裁よく仕上げましょう。
当ブログでは、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
最後までお読みいただき、ありがとうございました。がんばってください!