Pandas无法打开此Excel文件。

13
我尝试使用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。


我正在使用xlrd 1.0.0版本。这是最新版本。我刚刚执行了conda update命令。 - guagay_wk
我之前遇到过类似的受保护文件问题。这个文件上有任何保护或锁定吗? - ayhan
@ayhan,这个Excel文件受到密码保护。 - guagay_wk
1
我使用这个去除了文件的保护,并读取了文件:我找不到其他解决方案。但它只适用于Windows系统。 - ayhan
1
谢谢。我猜你已经得到了答案。为了让xlrd工作,必须从Excel中删除保护。我刚刚发现了另一种打开受保护的Excel文件的方法。xlwings能够读取受保护的Excel文件。我认为xlwings是我要走的路。 - guagay_wk
2个回答

21

我将回答自己的问题。在 ayhan 的评论中,Excel 受保护的文件无法被 xlrd 读取。一个解决方法是去除保护。

我需要从 Python 解除 Excel 文件保护的命令

另一种读取受保护的 Excel 文件的解决方案是使用 xlwings。我已经验证,在打开 Excel 文件时,xlwings 能够读取受保护的 Excel 文件。


1
我会创建一个新的Excel文件并在Excel中删除灵敏度标签。然后可以使用pd读取该文件。

1
你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接