Home » Python » OpenPyXLで拡張子に.xlsを指定して保存すると?

OpenPyXLで拡張子に.xlsを指定して保存すると?

動作検証バージョン:Windows 10 + Python 3.7.3 + OpenPyXL 2.6.2

OpenPyXL関連の検索キーワードに気付いて以来、OpenPyXLとPythonで遊んでいます。

OpenPyXLで拡張子を.xlsにしてブックを保存すると、どうなるのかが気になったので試してみました。

[スポンサードリンク]

OpenPyXLのsave()で拡張子に.xlsを指定して保存

save()メソッドで保存するときに拡張子が.xlsだと、エラーになったりするのかな、と思いつつ以下のようなスクリプトを作成しました。


import openpyxl
wb = openpyxl.Workbook()
ws = wb.active
ws['A1'].value = 'hello, world.'
wb.save('C:\\temp\\test.xls')

実行してみると特にエラーは発生することなく、指定したとおりに保存されます。

拡張子.xlsで保存したファイルの確認

Excelで開こうとしたときの挙動

上記のスクリプトを実行して作成されたxlsファイルを開こうとすると、
「'test.xls'のファイル形式と拡張子が一致しません。ファイルが破損しているか、安全ではない可能性があります。発行元が信頼できない場合は、このファイルを開かないでください。ファイルを開きますか?」
と確認メッセージが表示され、開いてみると、SheetシートのA1セルに「hello, world.」とデータが書き込まれています。

ファイルの構造

ただし、本当のxlsファイルなら65,536行・IV列まで存在しないはずですが、1,048,576行・XFD列まであります。

また拡張子を.zipにしてから解凍してみると、xlsxファイルと同じファイル構造になっていることを確認できます。

そもそも本当のxlsファイルならば、解凍しようとするとエラーが発生します。

つまり、OpenPyXLで拡張子を.xlsで保存したところで、中身としては当然xlsxファイルと同じ形式で、ただ単に拡張子が.xlsになっているだけのファイルになるということです。

開こうとしたときに表示された「ファイル形式と拡張子が一致しません。」メッセージのとおりです。

最終更新日時:2019-04-12 03:04

[スポンサードリンク]

Home » Python » OpenPyXLで拡張子に.xlsを指定して保存すると?

TrackBack:0

TrackBack URL

Home » Python » OpenPyXLで拡張子に.xlsを指定して保存すると?

Copyright © インストラクターのネタ帳 All Rights Reserved.

.