如何在Linux中使用python打开/读取受密码保护的xls或xlsx(Excel)文件



我想使用python打开受密码保护的xls或xlsx。通常我使用xlrd来处理xls或xlsx文件,但它无法打开受密码保护的excel文件。我尝试使用pywin32,但无法在Linux系统上安装它。

您可以使用我对类似问题的回答中概述的方法来完成此操作。

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

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

  • 安装msoffcrypto工具:

     pip install msoffcrypto-tool
    
  • 您可以从命令行创建工作簿的未加密版本:

    msoffcrypto-tool Myfile.xlsx Myfile-decrypted.xlsx -p "caa team"
    
  • 或者,您可以使用msoffcrypto工具作为库。虽然可以像上面那样将未加密的版本写入磁盘,但您可能更喜欢在内存中创建一个解密的文件,并将其传递给您的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)
    

最新更新