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 库(openpyxl、xlrd等)。
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)
Bjo*_*iel 12
在这种情况下,我认为命名参数不起作用.所以你必须做以下事情:
xlwb = xlApp.Workbooks.Open(filename,False,True,None,password)
有关Workbooks.Open方法的详细信息,请参阅http://msdn.microsoft.com/en-us/library/office/ff194819.aspx.
| 归档时间: |
|
| 查看次数: |
22889 次 |
| 最近记录: |