動作検証バージョン:Windows 10 + Python 3.7.3 + OpenPyXL 2.6.2
Excel VBAの場合、ウィンドウ枠の固定に関連するプロパティは、WorksheetオブジェクトではなくWindowオブジェクトに用意されています。
そのため、ウィンドウ枠が固定されている位置をSplitRowプロパティ・SplitColumnプロパティで取得したときに、そのままでは本当の固定位置ではないセル番地が返される可能性があることをご紹介しました。
OpenPyXLの場合が気になり試してみました。
[スポンサードリンク]
ウィンドウ枠の固定位置を調べるスクリプト
以下のスクリプトを実行すれば、Cドライブtempフォルダーのfoo.xlsxブックの先頭シートの、ウィンドウ枠固定位置が出力されます。
import openpyxl
bk = openpyxl.load_workbook(r'C:\temp\foo.xlsx')
ws = bk.worksheets[0]
print(ws.freeze_panes)
bk = openpyxl.load_workbook(r'C:\temp\foo.xlsx')
ws = bk.worksheets[0]
print(ws.freeze_panes)
ウィンドウ枠の固定や解除を行う、Worksheetオブジェクトのfeeze_panes属性で、ウィンドウ枠の固定位置も取得できます。
Excel VBAではダメだったZ1000セルを選択した状態でウィンドウ枠の固定を行った場合でも、OpenPyXLのWorksheet.freeze_panes属性なら大丈夫です。
SpreadsheetMLのノード
ちなみに、B2セルを選択した状態でウィンドウ枠の固定を行ったSpreadsheetMLの中身を確認すると、「/xl/worksheets/sheet1.xml」に以下のようなノードがあります。
<sheetViews>
<sheetView tabSelected="1" workbookViewId="0">
<pane
xSplit="1" ySplit="1"
topLeftCell="B2"
activePane="bottomRight"
state="frozen"/>
...
</sheetView>
</sheetViews>
<sheetData>
...
</sheetData>
最終更新日時:2023-01-18 05:25
[スポンサードリンク]
- Newer:マクロ入りブックを頻繁に作るなら設定変更を
- Older:可視セルのみをFor Each~Nextループで処理する
Home » Python » OpenPyXLの使い方 » OpenPyXLでウィンドウ枠の固定位置を調べる-Worksheet.freeze_panes属性