如何使用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 "
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)