我目前正在实现一个工具来自动化我的日常工作的一部分。因此,我需要创建一个python工具,创建一个包含多个信息的excel文件(工作簿),并对文件的工作表进行加密。创建文件并填充数据的第一部分工作得很好。
但是加密根本不起作用。我使用的是win32com、win32com.client和openpyxl。工作簿有两个不同的工作表,分别名为“%1”和“%2”。
我的工作簿:
import win32com.client
import os, sys, win32com, os.path, time
excel = win32com.client.Dispatch("Excel.Application")
excel.Visible = True
workbook = excel.Workbooks.Open(reading_path) ####this is the path where the file is stored
sheet = workbook.Worksheets(1)
因此,我搜索了其他主题,得到了以下内容:
import openpyxl
sheet.protection.set_password('test')
sheet.save(saving_path)
不幸的是,这不起作用。我的外壳响应一个AttributeError。详细说明:
AttributeError: <unknown>.set_password
有没有人知道用python加密excel中的页面的另一种方法?
非常感谢你的帮助!
发布于 2018-07-27 05:06:03
不完全清楚您所说的“加密表”是什么意思,因为您引用的openpyxl
代码与加密无关;请参阅the documentation中的警告。不过,Excel确实支持对整个工作簿进行加密,但这似乎与您想要的不同。
在任何情况下,您的代码都会失败,因为您从win32com
获得的sheet
与openpyxl
期望的截然不同。例如,基于COM的sheet
需要运行Excel进程才能进行操作,而openpyxl
甚至不需要在主机上提供Excel。
现在,在您的特定情况下,您实际上不需要openpyxl
(尽管您可能会发现在win32com
上使用它有很多好处),并且您可以完全停留在COM中。因此,可以通过Worksheet.Protect
添加密码保护,在您的情况下,这可以归结为简单地运行
sheet.Protect('test')
https://stackoverflow.com/questions/51537016
复制相似问题