1. ホーム
  2. python

[解決済み] PandasがこのExcelファイルを開くことができない

2022-02-26 05:43:03

質問

python pandasを使って、Excelファイルを開こうとしています。コードは以下のように簡単です。

import pandas as pd
df = pd.read_excel('../TestXLWings.xlsm', sheetname="TestSheet")

以下のようなエラーが発生しました。

Traceback (most recent call last):
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2017.2\helpers\pydev\pydevd.py", line 1599, in <module>
    globals = debugger.run(setup['file'], None, None, is_module)
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2017.2\helpers\pydev\pydevd.py", line 1026, in run
    pydev_imports.execfile(file, globals, locals)  # execute the script
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2017.2\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "C:/Users/testing/Dropbox/Test-XLwings/test.py", line 3, in <module>
    df = pd.read_excel('../TestXLWings.xlsm', sheetname="TestSheet")
  File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\excel.py", line 203, in read_excel
    io = ExcelFile(io, engine=engine)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\excel.py", line 260, in __init__
    self.book = xlrd.open_workbook(io)
  File "C:\ProgramData\Anaconda3\lib\site-packages\xlrd\__init__.py", line 441, in open_workbook
    ragged_rows=ragged_rows,
  File "C:\ProgramData\Anaconda3\lib\site-packages\xlrd\book.py", line 87, in open_workbook_xls
    ragged_rows=ragged_rows,
  File "C:\ProgramData\Anaconda3\lib\site-packages\xlrd\book.py", line 595, in biff2_8_load
    raise XLRDError("Can't find workbook in OLE2 compound document")
xlrd.biffh.XLRDError: Can't find workbook in OLE2 compound document

私のExcelファイルはxlsmで、パスワードで保護されています。OLE2複合文書とは、具体的にどういう意味ですか?pandasはこのようなExcelファイルを開くのに問題があるのでしょうか?私はpython v3.6を使用しています。

どのように解決するのですか?

私自身の質問にお答えします。ayhanさんのコメントの中に、Excelで保護されたファイルはxlrdでは読めないというものがあります。解決策としては、プロテクトを解除することです。

pythonからExcelファイルのプロテクトを解除するコマンドが必要です。

Excelで保護されたファイルを読むためのもう一つの解決策は、xlwingsを使用することです。私は、Excelファイルを開いたときに、xlwingsが保護されたExcelファイルを読むことができることを確認しました。