openpyxlでウィンドウ枠の固定を解除

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')

参考

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