内部的Excel文件是xml文件的zip存档。无需打开Excel应用程序就可以访问单个xml:
import zipfile
with zipfile.ZipFile('some_workbook.xlsx', 'r') as zf:
zf.read('some.xml')
但是对于使用密码加密的工作簿,此方法不起作用。
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2862, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-8-64b8af6320bd>", line 1, in <module>
with zipfile.ZipFile('Book1.xlsm', 'r') as zf:
File "C:\ProgramData\Anaconda3\Lib\zipfile.py", line 1108, in __init__
self._RealGetContents()
File "C:\ProgramData\Anaconda3\Lib\zipfile.py", line 1175, in _RealGetContents
raise BadZipFile("File is not a zip file")
zipfile.BadZipFile: File is not a zip file
有人知道如何在不先打开Excel并删除密码的情况下以zip存档的形式访问加密工作簿吗?我确实知道密码,只是不想打开excel来删除它。
我正在寻找一种使用Python的编程方法,对第三者软件不感兴趣。