OpenPyXLの使い方~行列の固定、非表示~

はじめに

こんにちは。風助です。
今回は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

ではまた次回。さようなら。

コメント

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