freeze_paneを設定する形で解除しようとすると、保存したExcelファイルが壊れる。その回避法メモ。
環境
- macOS Sequoia 15.4.1
- Python 3.13.3
- OpenPyXL 3.1.5
背景
ネットで「openpyxl ウィンドウ枠 固定 解除」などと検索してウィンドウ枠の解除方法を探すと、一般的には次のような方法が提示される。
from openpyxl
wb = openpyxl.load_workbook('Book1.xlsx')
ws = wb.active
ws.freeze_panes = None
wb.save('Book1.xlsx')
ところが、実際にこの方法でExcelファイルを編集すると、保存したファイルをExcelで開いたときに次のようなエラーが表示されることになる。

freeze_panes
に設定する値を、'A1'
や'B1'
や'A2'
にしても同様。
何年も前から知られた不具合らしいが、いまだに修正なし。
回避策
次の方法なら、保存後にExcelで開いてもエラーにならない。
from openpyxl
wb = openpyxl.load_workbook('Book1.xlsx')
ws = wb.active
ws.views.sheetView[0] = openpyxl.worksheet.views.SheetView()
wb.save('Book1.xlsx')