はじめに
こんにちは。風助です。
今回はOpenPyXLで行や列を固定したり、非表示にする方法を紹介します。

freeze_panesで行列の固定をする
import openpyxl
wb = openpyxl.Workbook()
ws = wb.active
ws.freeze_panes = 'C3'
wb.save('test.xlsx')
コードはこんな。セルを指定するだけです。

すこし分かりづらいですかね。上から2行、そして左から2列が固定されました。
指定したセルがC3なのでそのセルより若いセルが固定されたことになります。
この時にAの列のセルを指定すれば行だけ固定にできますし、1行目のセルを指定すれば列だけ固定にできます。
import openpyxl
wb = openpyxl.Workbook()
ws = wb.active
ws.freeze_panes = 'C1'
wb.save('test.xlsx')

import openpyxl
wb = openpyxl.Workbook()
ws = wb.active
ws.freeze_panes = 'A3'
wb.save('test.xlsx')

こんな感じです。やはり分かりづらい。
ちなみに2重で固定しようとすると後ろの方のコードが適用されます。。
import openpyxl
wb = openpyxl.Workbook()
ws = wb.active
ws.freeze_panes = 'C3'
ws.freeze_panes = 'E5'
wb.save('test.xlsx')

こんな感じです。
hidden属性で非表示にする
次は行列の非表示をする方法。
以前紹介したrow_dimensionsとcolumn_dimensionsを使います。
import openpyxl
wb = openpyxl.Workbook()
ws = wb.active
ws.row_dimensions[3].hidden = True
wb.save('test.xlsx')
こんな感じで行(もしくは列)を指定したあと、.hiddenをTrueとすればOKです。
このコードを実行するとこうなります。

3行目が非表示になりました。
列の非表示はこんなコードになります。
import openpyxl
wb = openpyxl.Workbook()
ws = wb.active
ws.column_dimensions['C'].hidden = True
wb.save('test.xlsx')
実行するとこう。

おまけ
前回書き忘れてたかもしれないのでここに書いときます。
こういう感じで数字を指定するとエラーを起こします。
ws.column_dimensions[3].hidden = True
文字列を指定しないといけないみたい。
だからと言ってこれもダメです。
ws.column_dimensions['3'].hidden = True
この方法で指定したコードを実行したら見たことないエラーが出ました。やるなよ。
みなさんご注意を。

おわりに
今回は行列の固定と非表示の方法について書きました。
皆さんのご参考になると幸いです。
noteもやっているのでお暇なら覗きに来てください。
風助|note
こんにちは。風助です。脱社畜を目指すオタクです。投稿からある程度日数経ったら有料にします。ちなみに環境はwindows10Home、それとPython3.9
ではまた次回。さようなら。
コメント