「openpyxl ウィンドウ枠の固定」
という検索キーワードで、アクセスがあることに気が付きました。
Worksheet.freeze_panesでウィンドウ枠の固定・解除ができる
Cドライブtempフォルダーにfoo.xlsxファイルを用意して、以下のスクリプトを実行すると、1行目1列目が固定され、foo2.xlsxとして保存されます。
wb = openpyxl.load_workbook(r'C:\temp\foo.xlsx')
ws = wb.worksheets[0]
ws.freeze_panes = 'B2'
Worksheetオブジェクトのfreeze_panes属性で、ウィンドウ枠を固定できます。
もちろん
ws.freeze_panes = 'C3'
とすれば、2行目2列目が固定されます。
行のみ・列のみ固定したい場合
1行目だけを固定したい場合は
ws.freeze_panes = 'A2'
1列目だけを固定したい場合は、
ws.freeze_panes = 'B1'
としてください。
ウィンドウ枠の固定を解除したい場合
ウィンドウ枠の固定を解除したい場合は、
ws.freeze_panes = 'A1'
です。
Excel VBAの場合はWindowオブジェクト
わかってしまえば特に難しくはないはずですが、Excel VBAをよくご存じの方は「あれ?」と思うかもしれません。
Excel VBAでウィンドウ枠の固定に関わるプロパティはWindowオブジェクトであって、Worksheetオブジェクトではありません。
OpenPyXLの仕様を知ると、Excel VBAでもWorksheetオブジェクトにFreezePanesプロパティが用意されていても良かったのに、という気がしてきます。
最終更新日時:2023-01-12 16:30
Home » Python » OpenPyXLの使い方 » OpenPyXLでウィンドウ枠を固定する-Worksheet.freeze_panes属性