pythonを使用してExcelファイルの操作を勉強しています。
本日の気づき(復習)は、非表示設定の解除に関してです。
pythonでExcelを操作するため、openpyxlというパッケージを使用しています。
上記のような非表示状態にしている列を一括解除することが目標です。
Worksheet.〇〇_dimensions
# 行の非表示解除
ws.row_dimensions[行番号].hidden = False
# 列の非表示解除
ws.column_dimensions[列名].hidden = False
こちらで行と列それぞれ非表示を解除できます。
ちなみに、非表示にしたい場合は「False」を「True」に変更します。
次に立ちはだかってくる問題が「列名」です・・・。
Cell.column_letter属性
cell.column_letter
セルの列名ってアルファベットなのですよね。
しかも、「Z」の次は「AA」、「AB」・・・と続きます。
なのでこちらでアルファベット名を取得します。
Worksheet.max_column属性
最後にデータが入力されている最大の列まで非表示解除の処理を行いたいので
ws.max_column
こちらで取得します。
今回は、列だけだったのですが他にも
- ws.max_row:データが入力されている最大の行
- ws.min_row:データが入力されている最小の行
- ws.max_column:データが入力されている最大の列
- ws.min_column:データが入力されている最小の列
こちらがありました。どちらも、使用頻度高そうです!
こちらをふまえて、こうなりました!
from openpyxl import load_workbook
wb = load_workbook('〇〇地区時給計算.xlsx')
ws = wb.active
# 行の非表示を解除
# for row_no in range(2, ws.max_row + 1):
# ws.row_dimensions[rouw_no].hidden = False
# 列の非表示を解除
for col_no in range(2, ws.max_column + 1):
# セルの列名を取得
col_alphabet = ws.cell(row=1, column=col_no).column_letter
ws.column_dimensions[col_alphabet].hidden = False
wb.save('〇〇地区時給計算_変更後.xlsx')
余談:非表示とグループ化
念のため列「D~E」は非表示、列「G~J」はグループ化として隠している状態でしたが
どちらも解除されていました。
一部の行や列を隠したい時には
「非表示」か「グループ化」のどちらかを使用すると思うのですが
個人的には「グループ化」をおすすめします。
一番の理由は隠しているところが解りやすいから。
非表示だと目立たなくて気づかなかったり、再度隠したい時に隠す場所を忘れていたりするので。
いずれにしても、今回の機能はほぼ出番はないかなといった感じですね。