質問: xlrd.open_workbook('hoge.xls') ``` xlrd.open_workbookでも同じエラーが出ています。 同じサイトから別のxlsファイルをダウンロードし同じように読み込ませたところ、そちらはうまくいきました。 xlsファイルをexelで開いてみたところ、特におかしな部分は見当たらず、なぜこのファイルが読み込めないのかがわかりません。 解決策をご教示いただけますと幸いです。 よろしくお願い致します。
回答: ネット検索と質問者様でのテストによると、発生しているエラーは、エクセルファイルの形式が古いことが原因です。 参考 1. When opening xls file via read_excel, the error "struct.error: unpack requires a bytes object of length 2" 2. Python pandas cannot read old excel files with some strange encoding and split panes 参考2によると、pandasのread_excel()のデフォルトエンジンであるxlrdで対応していないフォーマットは、Excel2であり、なんとWindows2時代のものだそうです。今更Windwos2時代のファイルが残っていた可能性は少ないですが、参考2では「間違ってWindows2ヘッダを書き込むようなExcelファイル生成ツールがあったのでは」と推測しています。 対応はそれぞれです。 参考1は、Excelアプリのマクロで、自動的にファイルを読み込んで新たなフォーマットでファイル名を変えて保存することを繰り返すものです。マクロそのものも掲載されいていますが、質問者様にて作られた方が確実です。Excelには操作をレコーディングしてマクロとして生成する機能がありますので、それを使ってマクロを作り、出来上がったマクロを編集して、思ったような複数ファイルを繰り返し処理するようなものにするとよいと思います。 参考2は、xlrdそのものにパッチを当てるものです。xlrdバージョンも明記されていますので、質問者様が腕に覚えがありましたら、この方法も可能と思います。