之前用到的 win32com 读取带密码 excel 的相关内容, 今天刚好准备整理下, 突然发现方法又不灵了.
以下为错误示范:
- # 已知 excel 密码去除
- def del_password(filename, password):
- excel = DispatchEx("Excel.Application") # 启动 excel
- excel.Visible = True # 可视化
- excel.DisplayAlerts = False # 是否显示警告
- wb = excel.Workbooks.Open(filename, Password=password) # 打开文件
这就神奇了, 之前用着好好的呢?, 没道理啊这么简单的打开, 不就加个 password 参数? 明明把密码参数给输入了, 为什么还提示输入密码框?
(再重新看看微软 bb 的官方介绍)https://msdn.microsoft.com/zh-cn/VBA/Excel-VBA/articles/workbooks-open-method-excel, 没毛病啊.
实在不行, 找回以前写的. 想起来有个问题, 大家注意看不同, 注意添加的几个参数.
(标红参数少一个不行, 顺序没影响, 但是这几个参数之间没有实在的联系啊, 百思不得解. 先 mark 下, 有知道的大神指教下 -- 之前也遇到过类似的方法只写一个参数不行, 如有类似情况试着把参数写全再进行操作)
暂时只得到一个结论: 说明 win32com 读取的 excel 操作不是严格按照 python 的位置参数, 不是可有可无的, 而是严格匹配.
---------- 分割线 ------------
以下为正确
- # 已知 excel 密码去除
- def del_password(filename, password):
- excel = DispatchEx("Excel.Application") # 启动 excel
- excel.Visible = visible # 可视化
- excel.DisplayAlerts = displayalerts # 是否显示警告
- wb = excel.Workbooks.Open(filename, UpdateLinks=False, ReadOnly=False, Format=None, Password=password, WriteResPassword=password) # 打开文件
来源: http://www.bubuko.com/infodetail-2713974.html