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

如何使用python打开受密码保护的excel文件?,python,excel,file-io,passwords,protected,Python,Excel,File Io,Passwords,Protected,我看了前面关于这个主题的文章,但是它们没有帮助解决这个问题 我正在尝试在excel中打开一个受密码保护的文件,而无需任何用户交互。我在网上搜索,找到了这个使用win32com.client的代码 当我运行此命令时,仍然会收到输入密码的提示 from xlrd import * import win32com.client import csv import sys xlApp = win32com.client.Dispatch("Excel.Application") print "

我看了前面关于这个主题的文章,但是它们没有帮助解决这个问题

我正在尝试在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)

我认为命名参数在这种情况下不起作用。所以你必须做一些类似的事情:

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

有关工作簿.Open方法的详细信息,请参阅。

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

有关更多信息:

如果文件大小较小,您可能可以将其另存为“.csv”。 然后读


它对我起了作用:)

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

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

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

  • 安装msoffcrypto工具:

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

    msoffcrypto-tool Myfile.xlsx Myfile-decrypted.xlsx -p "caa team"
    
  • 或者,您可以使用msoffcrypto工具作为库。虽然您可以像上面那样将未加密的版本写入磁盘,但您可能更愿意创建一个已解密的内存文件,并将其传递给Python Excel库(
    openpyxl
    xlrd
    ,等等)


    • 非常感谢您在这个主题上给出了非常好的答案。试图整理所有这些。我的要求是打开一堆受密码保护的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, 'TDE@123')
      
              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)
              
      
            
      
      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, 'TDE@123')
      
              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)