如何使用python打开受密码保护的excel文件?

Sch*_*ack 4 python passwords excel file-io protected

我查看了有关此主题的先前主题,但他们没有帮助解决问题.

我正在尝试在excel中打开受密码保护的文件而无需任何用户交互.我在网上搜索,发现这个代码使用win32com.client当我运行这个时,我仍然得到输入密码的提示...

from xlrd import *
import win32com.client
import csv
import sys

xlApp = win32com.client.Dispatch("Excel.Application")
print "Excel library version:", xlApp.Version
filename,password = r"\\HRA\Myfile.xlsx", 'caa team'
xlwb = xlApp.Workbooks.Open(filename, Password=password)
Run Code Online (Sandbox Code Playgroud)

eid*_*orb 28

我最近发现了一个 Python 库,可以让这个任务变得简单。

它不需要安装 Excel,而且因为它是纯 Python,所以它也是跨平台的!

msoffcrypto-tool支持受密码保护(加密)的 Microsoft Office 文档,包括较旧的 XLS 二进制文件格式。

  • 安装 msoffcrypto 工具:

     pip install msoffcrypto-tool
    
    Run Code Online (Sandbox Code Playgroud)
  • 您可以从命令行创建工作簿的未加密版本:

    msoffcrypto-tool Myfile.xlsx Myfile-decrypted.xlsx -p "caa team"
    
    Run Code Online (Sandbox Code Playgroud)
  • 或者,您可以使用 msoffcrypto-tool 作为库。虽然您可以像上面那样将未加密的版本写入磁盘,但您可能更喜欢创建一个解密的内存中文件并将其传递到您的 Python Excel 库(openpyxlxlrd等)。

    import io
    
    import msoffcrypto
    import openpyxl
    
    
    decrypted_workbook = io.BytesIO()
    
    with open('Myfile.xlsx', 'rb') as file:
        office_file = msoffcrypto.OfficeFile(file)
        office_file.load_key(password='caa team')
        office_file.decrypt(decrypted_workbook)
    
    # `filename` can also be a file-like object.
    workbook = openpyxl.load_workbook(filename=decrypted_workbook)
    
    Run Code Online (Sandbox Code Playgroud)

  • 我对这个解决方案赞不绝口。与各种其他解决方案(例如使用 xlwings)不同,此方法允许您使用已经使用的库读取解密数据,例如“pandas.read_excel(decrypted_workbook)”或“openpyxl.load_workbook(decrypted_workbook)” (6认同)

Bjo*_*iel 12

在这种情况下,我认为命名参数不起作用.所以你必须做以下事情:

xlwb = xlApp.Workbooks.Open(filename,False,True,None,password)

有关Workbooks.Open方法的详细信息,请参阅http://msdn.microsoft.com/en-us/library/office/ff194819.aspx.