【问题标题】:How to open a password protected excel file using python?如何使用python打开受密码保护的excel文件?
【发布时间】:2013-10-27 08:47:57
【问题描述】:

我查看了有关此主题的先前线程,但它们没有帮助解决问题。

我正在尝试在没有任何用户交互的情况下在 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)

【问题讨论】:

    标签: python excel file-io passwords protected


    【解决方案1】:

    我认为命名参数在这种情况下不起作用。因此,您必须执行以下操作:

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

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

    【讨论】:

      【解决方案2】:

      如果您使用的是 linux 系统,Openpyxl 包可以工作。您可以通过设置密码来保护文件并使用相同的密码打开文件。

      更多信息: https://www.quora.com/How-do-I-open-read-password-protected-xls-or-xlsx-Excel-file-using-python-in-Linux

      【讨论】:

      • 不,这不起作用。我看了看,发现 Openpyxl 无法打开受密码保护的 Excel。
      【解决方案3】:

      如果您的文件很小,您可以将其保存为“.csv”。 然后阅读

      它对我有用:)

      【讨论】:

        【解决方案4】:

        我最近发现了一个使这项任务变得简单的 Python 库。

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

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

        • 安装 msoffcrypto 工具:

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

          msoffcrypto-tool Myfile.xlsx Myfile-decrypted.xlsx -p "caa team"
          
        • 或者,您可以使用 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)
          

        【讨论】:

          【解决方案5】:

          非常感谢您对此主题的精彩回答。试图整理所有这些。我的要求是打开一堆受密码保护的 excel 文件(都具有相同的密码),以便我可以对这些文件进行更多处理。请在下面找到代码。

          import pandas as pd
          import os
          
          from xlrd import *
          import win32com.client as w3c
          import csv
          import sys
          from tempfile import NamedTemporaryFile
          
              df_list=[]
          #    print(len(files))
              for f in files:
          #    print(f)
              if('.xlsx' in f):
          
          
                  xlwb = xlapp.Workbooks.Open('C:\\users\\files\\'+f, False, True, None, 'password')
          
                  temp_f = NamedTemporaryFile(delete=False, suffix='.csv')  
                  temp_f.close()
                  os.unlink(temp_f.name)  
          
                  xlwb.SaveAs(Filename=temp_f.name, FileFormat=xlCSVWindows) 
                  df = pd.read_csv(temp_f.name,encoding='Latin-1')  # Read that CSV from Pandas
                  df.to_excel('C:\\users\\files\\password_removed\\'+f)
                  
          
                
          

          【讨论】:

          • 仅供参考,这不能按原样工作,您必须像原来那样设置 xlapp
          猜你喜欢
          • 2021-08-04
          • 2018-08-09
          • 1970-01-01
          • 2021-01-20
          • 1970-01-01
          • 2021-10-08
          • 2020-08-29
          • 2022-11-17
          • 2021-03-28
          相关资源
          最近更新 更多